@@ -15,31 +15,30 @@ import (
1515)
1616
1717const (
18- lambdaFunctionName = "awslambdaproxy"
19- lambdaFunctionHandler = "main"
20- lambdaFunctionRuntime = "go1.x"
21- lambdaFunctionIamRole = "awslambdaproxy-role"
22- lambdaFunctionIamRolePolicyName = "awslambdaproxy-role-policy"
23- lambdaFunctionZipLocation = "artifacts/lambda.zip"
18+ lambdaFunctionHandler = "main"
19+ lambdaFunctionRuntime = "go1.x"
20+ lambdaFunctionZipLocation = "artifacts/lambda.zip"
2421)
2522
2623type lambdaInfrastructure struct {
2724 config * aws.Config
25+ name string
26+ iamRole string
2827 regions []string
2928 lambdaTimeout int64
3029 lambdaMemorySize int64
3130}
3231
3332// SetupLambdaInfrastructure sets up IAM role needed to run awslambdaproxy
34- func SetupLambdaInfrastructure () error {
33+ func SetupLambdaInfrastructure (lambdaIamRole string ) error {
3534 sess , err := GetSessionAWS ()
3635 if err != nil {
3736 return err
3837 }
3938
4039 svc := iam .New (sess , & aws.Config {})
4140 _ , err = svc .GetRole (& iam.GetRoleInput {
42- RoleName : aws .String (lambdaFunctionIamRole ),
41+ RoleName : aws .String (lambdaIamRole ),
4342 })
4443 if err != nil {
4544 if awsErr , ok := err .(awserr.Error ); ok {
@@ -53,7 +52,7 @@ func SetupLambdaInfrastructure() error {
5352 "Action": "sts:AssumeRole"
5453 }
5554 }` ),
56- RoleName : aws .String (lambdaFunctionIamRole ),
55+ RoleName : aws .String (lambdaIamRole ),
5756 Path : aws .String ("/" ),
5857 })
5958 if err != nil {
@@ -74,8 +73,8 @@ func SetupLambdaInfrastructure() error {
7473 }
7574 ]
7675 }` ),
77- PolicyName : aws .String (lambdaFunctionIamRolePolicyName ),
78- RoleName : aws .String (lambdaFunctionIamRole ),
76+ PolicyName : aws .String (lambdaIamRole + "-policy" ),
77+ RoleName : aws .String (lambdaIamRole ),
7978 })
8079 if err != nil {
8180 return err
@@ -102,10 +101,10 @@ func (infra *lambdaInfrastructure) setup() error {
102101
103102 svc := iam .New (sess , infra .config )
104103 resp , err := svc .GetRole (& iam.GetRoleInput {
105- RoleName : aws .String (lambdaFunctionIamRole ),
104+ RoleName : aws .String (infra . iamRole ),
106105 })
107106 if err != nil {
108- return errors .Wrap (err , "Could not find IAM role " + lambdaFunctionIamRole + ". Probably need to run setup." )
107+ return errors .Wrap (err , "Could not find IAM role " + infra . iamRole + ". Probably need to run setup." )
109108 }
110109 roleArn := * resp .Role .Arn
111110 zip , err := Asset (lambdaFunctionZipLocation )
@@ -114,16 +113,18 @@ func (infra *lambdaInfrastructure) setup() error {
114113 }
115114 for _ , region := range infra .regions {
116115 log .Println ("Setting up Lambda function in region: " + region )
117- err = infra .createOrUpdateLambdaFunction (sess , region , roleArn , zip )
116+ err = infra .createOrUpdateLambdaFunction (sess , infra . name , region , roleArn , zip )
118117 if err != nil {
119118 return errors .Wrap (err , "Could not create Lambda function in region " + region )
120119 }
121120 }
122121 return nil
123122}
124123
125- func setupLambdaInfrastructure (regions []string , memorySize int64 , timeout int64 ) error {
124+ func setupLambdaInfrastructure (name string , iamRole string , regions []string , memorySize int64 , timeout int64 ) error {
126125 infra := lambdaInfrastructure {
126+ name : name ,
127+ iamRole : iamRole ,
127128 regions : regions ,
128129 config : & aws.Config {},
129130 lambdaTimeout : timeout ,
@@ -135,11 +136,11 @@ func setupLambdaInfrastructure(regions []string, memorySize int64, timeout int64
135136 return nil
136137}
137138
138- func (infra * lambdaInfrastructure ) createOrUpdateLambdaFunction (sess * session.Session , region , roleArn string , payload []byte ) error {
139+ func (infra * lambdaInfrastructure ) createOrUpdateLambdaFunction (sess * session.Session , name , region , roleArn string , payload []byte ) error {
139140 config := infra .config .WithRegion (region )
140141
141142 svc := lambda .New (sess , config )
142- exists , err := lambdaExists (svc )
143+ exists , err := lambdaExists (svc , name )
143144 if err != nil {
144145 return err
145146 }
@@ -156,7 +157,7 @@ func (infra *lambdaInfrastructure) createOrUpdateLambdaFunction(sess *session.Se
156157
157158func (infra * lambdaInfrastructure ) deleteLambdaFunction (svc * lambda.Lambda ) error {
158159 _ , err := svc .DeleteFunction (& lambda.DeleteFunctionInput {
159- FunctionName : aws .String (lambdaFunctionName ),
160+ FunctionName : aws .String (infra . name ),
160161 })
161162 if err != nil {
162163 return err
@@ -169,7 +170,7 @@ func (infra *lambdaInfrastructure) createLambdaFunction(svc *lambda.Lambda, role
169170 Code : & lambda.FunctionCode {
170171 ZipFile : payload ,
171172 },
172- FunctionName : aws .String (lambdaFunctionName ),
173+ FunctionName : aws .String (infra . name ),
173174 Handler : aws .String (lambdaFunctionHandler ),
174175 Role : aws .String (roleArn ),
175176 Runtime : aws .String (lambdaFunctionRuntime ),
@@ -189,9 +190,9 @@ func (infra *lambdaInfrastructure) createLambdaFunction(svc *lambda.Lambda, role
189190 return nil
190191}
191192
192- func lambdaExists (svc * lambda.Lambda ) (bool , error ) {
193+ func lambdaExists (svc * lambda.Lambda , name string ) (bool , error ) {
193194 _ , err := svc .GetFunction (& lambda.GetFunctionInput {
194- FunctionName : aws .String (lambdaFunctionName ),
195+ FunctionName : aws .String (name ),
195196 })
196197
197198 if err != nil {
@@ -258,8 +259,8 @@ func (infra *lambdaInfrastructure) createIAMLambdaRolePolicy(sess *session.Sessi
258259 }
259260 ]
260261 }` ),
261- PolicyName : aws .String (lambdaFunctionIamRolePolicyName ),
262- RoleName : aws .String (roleName ),
262+ PolicyName : aws .String (infra . iamRole + "-policy" ),
263+ RoleName : aws .String (infra . iamRole ),
263264 })
264265 return err
265266}
0 commit comments