func updateFunction()

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)
}