in cmd/resource/lambda.go [134:175]
func updateFunction(svc LambdaAPI, l *lambdaResource) error {
log.Printf("Checking for any updates required for VPC connector %s", *l.functionName)
zip, hash, err := getZip(l.functionFile)
if err != nil {
return err
}
if hash != *l.functionOutput.Configuration.CodeSha256 {
log.Printf("Proceeding with code update for VPC connector %s", *l.functionName)
codeInput := &lambda.UpdateFunctionCodeInput{
FunctionName: l.functionName,
ZipFile: zip,
}
_, err = svc.UpdateFunctionCode(codeInput)
if err != nil {
return AWSError(err)
}
}
configInput := &lambda.UpdateFunctionConfigurationInput{
FunctionName: l.functionName,
Handler: aws.String(Handler),
MemorySize: aws.Int64(MemorySize),
Role: l.roleArn,
Runtime: aws.String(Runtime),
Timeout: aws.Int64(Timeout),
VpcConfig: &lambda.VpcConfig{
SecurityGroupIds: aws.StringSlice(l.vpcConfig.SecurityGroupIds),
SubnetIds: aws.StringSlice(l.vpcConfig.SubnetIds),
},
}
if !needsUpdate(configInput, l.functionOutput.Configuration) {
return AWSError(nil)
}
_, err = svc.UpdateFunctionConfiguration(configInput)
if err != nil {
if strings.Contains(err.Error(), UpdateInProgress) {
time.Sleep(5 * time.Second)
return updateFunction(svc, l)
}
}
return AWSError(err)
}