2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CodePipelineの承認アクション有無を、AWS CloudFormationテンプレートでコントロールする

Last updated at Posted at 2022-03-29

What's?

AWS CodePipelineには、ステージ内に承認アクションを設けることができます。

こちらは本番環境で使うのはよいのですが、開発環境では設けなくてもよいことが多く、これをAWS CloudFormationの条件分岐でコントロールするサンプルが見つからなかったので、メモ的に残しておくことにしました。

解法

AWS CloudFormationテンプレートのConditionsと、擬似パラメーターAWS::NoValueの組み合わせで実現します。

環境

使用したAWS CLIのバージョンは、こちら。

$ aws --version
aws-cli/2.4.29 Python/3.8.8 Linux/5.4.0-105-generic exe/x86_64.ubuntu.20 prompt/off

こんな感じですね。

たとえばParametersで承認アクションの有無を切り替えるとして

Parameters:
  RequireApprovalAction:
    Type: String
    AllowedValues:
      - true
      - false

Conditionsを指定。

Conditions:
  HasApprovalAction:
    !Equals
      - !Ref RequireApprovalAction
      - true

リソース定義(...の部分は省略していることを表しています)。

Resources:

  ...

  CodePipeline:
    Type: AWS::CodePipeline::Pipeline
    Properties:
      Name: ...
      RoleArn: ...
      ArtifactStore:
        Type: S3
        Location: ...
      Stages:
        - Name: GetSourceArtifact
          Actions:
            - Name: SourceAction
              ...
        - Name: ...
        # 必要なら承認アクションを配置する
        - !If
          - HasApprovalAction
          - Name: ReleaseApproval
            Actions:
              - Name: ApprovalAction
                ActionTypeId:
                  Category: Approval
                  Owner: AWS
                  Version: 1
                  Provider: Manual
                Configuration:
                  CustomData: !Sub 'Comments on the manual approval'
                RunOrder: 1
          - !Ref AWS::NoValue
        - Name: ...
          ...

  ...

このテンプレートの例だと、RequireApprovalActionパラメーターがtrueだと以下の条件分岐がtrueになり、承認アクションが追加されます。

        - !If
          - HasApprovalAction
          - Name: ReleaseApproval
            Actions:
              - Name: ApprovalAction
                ActionTypeId:
                  Category: Approval
                  Owner: AWS
                  Version: 1
                  Provider: Manual
                Configuration:
                  CustomData: !Sub 'Comments on the manual approval'
                RunOrder: 1
          - !Ref AWS::NoValue

image.png

AWS CLIでのイメージでは、aws cloudformation deployコマンドに、オプションとして-parameter-overrides RequireApprovalAction=trueを指定する

RequireApprovalActionパラメーターをfalseにすると、AWS::NoValue`が使われることになり、承認アクションがパイプラインにいなくなります。

aws cloudformation deployコマンドに、--parameter-overrides RequireApprovalAction=falseを指定

実際に使う時には、環境別に承認アクションの有無を分けたいという話になりやすいかと思うので、ParametersではなくMappings(とConditions)との組み合わせで実現することが多いのかな、という気がします。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?