func putFunction()

in cmd/resource/lambda.go [55:88]


func putFunction(sess *session.Session, model *Model, reInvoke bool) (OperationComplete, error) {
	svc := lambda.New(sess)
	if reInvoke {
		return stabilizeFunction(svc, model, aws.String(FunctionNamePrefix+*model.Name))
	}
	caller, err := getCaller(sts.New(sess))
	if err != nil {
		return Complete, err
	}
	accId := accountIdFromArn(caller)
	partition := partitionFromArn(caller)
	var rolename string
	if model.LambdaRoleName == nil {
		rolename = "CloudFormation-Kubernetes-VPC"
	} else {
		rolename = *model.LambdaRoleName
	}
	roleArn := aws.String("arn:" + *partition + ":iam::" + *accId + ":role/" + rolename)

	clusterName := model.Name
	vpcConfig := *model.ResourcesVpcConfig
	err = updateFunction(svc, roleArn, clusterName, vpcConfig)
	if err != nil {
		if functionNotExists(err) {
			err = createFunction(svc, roleArn, clusterName, vpcConfig)
			if err != nil {
				return Complete, err
			}
		} else {
			return Complete, err
		}
	}
	return stabilizeFunction(svc, model, aws.String(FunctionNamePrefix+*model.Name))
}