のぴぴのメモ

自分用のLinuxとかの技術メモ

AWS CloudFormationのヘルパーのコマンド実行文字列にクロススタックリファレンスの値を埋め込む方法

自分用のメモです。
CloudFormationのヘルパーに埋め込む実行コマンドの文字列に、他のスタックで作成した値をクロススタックリファレンスで埋め込む方法が、なかなか分からなかったので。

方法

Fn::Joinの文字列結合とFn::ImportValueのクロススタックリファレンスを組み合わせる

サンプル

        Metadata:
            AWS::CloudFormation::Init:
                config:
                    packages:
                        yum:
                            awslogs: []
                    commands:
                        01_add_proxy_to_ecs_agent1:
                            command:
                                Fn::Join:
                                    - ""
                                    - - "echo HTTP_PROXY="
                                      - Fn::ImportValue: !Sub ${ProxyStack}-Proxy1PrivateDns
                                      - ":"
                                      - Fn::ImportValue: !Sub ${ProxyStack}-Proxy1PortNumber 
                                      - " >> /etc/ecs/ecs.config"
  • "01_add_proxy_to_ecs_agent1:"のブロックがその例
  • クロススタックリファレンスは下記の2つ
    • Fn::ImportValue: !Sub ${ProxyStack}-Proxy1PrivateDns
    • Fn::ImportValue: !Sub ${ProxyStack}-Proxy1PortNumber
  • 上記を含め Fn::Join:で文字列結合する

結果

完成するとこんな感じのコマンド実行用の文字列になる

  • "echo HTTP_PROXY=ip-10-203-64-147.ap-northeast-1.compute.internal:3128 >> /etc/ecs/ecs.config"