AWS Cloudformation EC2 linux UserData 小ネタ
以下例はインデントのズレがある可能性があるため、確認要。
以下はlinux起動時にechoを実行する(基本形)
Userdata:
Fn::Base64: |
#!/bin/bash
echo "test"
Userdata + Sub。
Cloudformationテンプレート内で定義した値指定。
SubnetId は事前に定義してあるとする。
以下はSubnetIdの値がechoされる。
Userdata:
Fn::Base64: !Sub
|
#!/bin/bash
echo "${SubnetId}"
シェル変数を使用する。
以下はechoで sample の文字列を出力。
Userdata:
Fn::Base64: !Sub
|
#!/bin/bash
TEST1="sample"
echo "${!TEST1}"
Userdataに引数を与える。
SubnetId は事前に定義してあるとする。
以下はSubnet1(SubnetId)の値がechoされる。
Userdata:
Fn::Base64: !Sub
- |
#!/bin/bash
echo "${Subnet1}"
- {
Subnet1: !Ref SubnetId
}
Userdata + Sub + ImportValue。
Subnet001 は他スタックで出力したExport名。
Userdata:
Fn::Base64: !Sub
- |
#!/bin/bash
echo "${Subnet1}"
- {
Subnet1: !ImportValue Subnet001
}
引数を複数指定する場合は以下。
Userdata:
Fn::Base64: !Sub
- |
#!/bin/bash
echo "${Subnet1}${Subnet2}"
- {
Subnet1: !ImportValue Subnet001,
Subnet2: !ImportValue Subnet002
}
Userdataの中でヒアドキュメントでスクリプト作成。
$の前に¥が必要。
Userdata:
Fn::Base64: |
#!/bin/bash
cat <<EOF > test.sh
TEST1=¥$(ls)
echo ¥$TEST1
EOF
${TEST1} のような場合は 以下のようにするしかなさそう。
Userdata:
Fn::Base64: |
#!/bin/bash
LEFTBRACE="{"
RIGHTBRACE="}"
cat <<EOF > test.sh
TEST1=¥$(ls)
echo ¥$${!LEFTBRACE}TEST1${!RIGHTBRACE}
EOF
コメント
コメントを投稿