のぴぴのメモ

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

AWS CloudFormationで、インスタンスのUserDataにクロススタックリファレンスの値を埋め込む方法

自分用のメモです。
こちらのAWS CloudFormationのヘルパーのコマンド実行文字列にクロススタックリファレンスの値を埋め込む方法 - のぴぴのメモの記事の応用です。

方法

Fn::Joinの文字列結合で、Fn::Sub(!Sub)や、Fn::ImportValueのクロススタックリファレンスを組み合わせる。
また改行コードは、"\n"で入力できる。

サンプル

      UserData:
        Fn::Base64:
          Fn::Join:
            - ""
            - - !Sub |
                #!/bin/bash -xe

                #set /etc/httpd/conf.d/ssl.conf
                cat > /etc/httpd/conf.d/ssl.conf << EOL
               
                  SSLProxyEngine On
                  SSLProxyCheckPeerCN off
                  SSLProxyCheckPeerExpire off

                  # Targets web server
              - "ProxyPass / https://"
              - Fn::ImportValue: !Sub ${Environment}-${Stack}-TargetUrl
              - "\nProxyPassReverse / https://"
              - Fn::ImportValue: !Sub ${Environment}-${Stack}-TargetUrl
              - "\n"
              - !Sub |
                </VirtualHost>

                # Application-B
                <VirtualHost _default_:1234>
                  ErrorLog logs/proxy_hogehoge_error_log
                <以下略>