自分用のメモです。
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"