gumluvinisgoodluvin
gumluvinisgoodluvin

Reputation: 87

How To Pass CloudFormation Outputs To A CodeBuild Stage?

I have 2 CloudFormation and CodeBuild CodePipeline stages:

        - Actions:
            - ActionTypeId:
                Category: "Deploy"
                Owner: "AWS"
                Provider: "CloudFormation"
                Version: "1"
              Configuration:
                ActionMode: "CREATE_UPDATE"
                Capabilities: "CAPABILITY_AUTO_EXPAND,CAPABILITY_NAMED_IAM,CAPABILITY_IAM"
                RoleArn: !GetAtt CodePipelineServiceRole.Arn
                StackName: !Ref CFNStackName
                TemplatePath: !Sub "BuildArtifact::${ArtifactName}"
                TemplateConfiguration: BuildArtifact::CFTemplateConfig.json
                ParameterOverrides: !Sub '{"Env": "${Env}"}'
              Name: "CloudFormation-step"
              Region: !Sub ${AWS::Region}
              InputArtifacts:
                - Name: BuildArtifact
              RunOrder: 1
          Name: "Deploy"
        - Actions:
            - ActionTypeId:
                Category: "Test"
                Owner: "AWS"
                Provider: "CodeBuild"
                Version: "1"
              Configuration:
                ProjectName: !Ref CodeBuildTest
              InputArtifacts:
                - Name: SourceArtifact
              Name: "Test"
              Region: !Sub ${AWS::Region}
              RunOrder: 

The CloudFormation stage is creating an ALB. I would like to pass that ALB's ARN to the CodeBuild stage. How do I pass the ALB ARN to the CodeBuild buildspec.yml file?

Upvotes: 0

Views: 419

Answers (1)

Marcin
Marcin

Reputation: 238209

Assuming that your CFN template returns the ALB ARN in its outputs, e.g. called AlbArn, then you can provide a namespace for it and use the namespace later to get the value.

For example (may need some further adjustments):

        - Actions:
            - ActionTypeId:
                Category: "Deploy"
                Owner: "AWS"
                Provider: "CloudFormation"
                Version: "1"
              Configuration:
                ActionMode: "CREATE_UPDATE"
                Capabilities: "CAPABILITY_AUTO_EXPAND,CAPABILITY_NAMED_IAM,CAPABILITY_IAM"
                RoleArn: !GetAtt CodePipelineServiceRole.Arn
                StackName: !Ref CFNStackName
                TemplatePath: !Sub "BuildArtifact::${ArtifactName}"
                TemplateConfiguration: BuildArtifact::CFTemplateConfig.json
                ParameterOverrides: !Sub '{"Env": "${Env}"}'
              Name: "CloudFormation-step"
              Region: !Sub ${AWS::Region}
              InputArtifacts:
                - Name: BuildArtifact
              Namespace: CloudFromationDeployNamespace # <--- namespace
              RunOrder: 1
          Name: "Deploy"
        - Actions:
            - ActionTypeId:
                Category: "Test"
                Owner: "AWS"
                Provider: "CodeBuild"
                Version: "1"
              Configuration:
                ProjectName: !Ref CodeBuildTest
                EnvironmentVariables: | # <- pass the AlbArn as ENV variable
                    {
                      "ALB_NAME": "#{CloudFromationDeployNamespace.AlbArn}"
                    }   
              InputArtifacts:
                - Name: SourceArtifact
              Name: "Test"
              Region: !Sub ${AWS::Region}            
              RunOrder: 

Upvotes: 1

Related Questions