Troposphere を使用して AWS テンプレートを作成しようとしていますが、Bash スクリプトを UserData として使用しなければならないところで行き詰まっています。私の主な問題は、Bash Script で使用される Ref です。Bash スクリプトをファイル読み取りとしてインポートし、次のように Base64 にエンコードしています。
UserData= Base64(Join("", [
open('path to my bashscript', "r")
.read()
.splitlines(True)
]))
私のbashスクリプトにはRefが次のように使用されています:
#!/bin/bash
set -x
export -f check_instance_service_status
timeout Ref('ValueReferenced') bash -c "check_instance_service_status $ELB_NAME"
私が得ている出力は次のとおりです。
"#!/bin/bash\n",
"set -x\n",
"\n",
" export -f check_instance_service_status\n",
" timeout Ref('ValueReferenced') bash -c \"check_instance_service_status $ELB_NAME\"\n",
" RC=$?\n",
ただし、次のように Ref を適切な JSON 互換に変換する必要があります。
" timeout \"",
{
"Ref": "ValueReferenced"
},