シェルスクリプトの一部として、AWSRoute53でレコードセットを作成しようとしています。ただし、シェルスクリプト内のaws cliで変数を使用してこれらのレコードセットを作成すると、シェルスクリプトでエクスポートされた変数がaws cliコマンドに渡されません。
AWSが提供するAWSCLIコマンド:
$ aws route53 change-resource-record-sets --hosted-zone-id 1234567890ABC \
--change-batch file:///path/to/record.json
簡単にするために、コンピューター上に個別のjsonファイルを作成したくありません。すべてのコマンドと変数を、シェルスクリプト内に配置したいと思います。
#!/bin/bash
export TARGET_ENVIRONMENT=uat
export BASE_ENVIRONMENT_DNS=abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com
# Creates route 53 records based on env name
aws route53 change-resource-record-sets --hosted-zone-id 1234567890ABC
--change-batch '{ "Comment": "Testing creating a record set",
"Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name":
"$(TARGET_ENVIRONMENT).company.com", "Type": "CNAME", "TTL":
120, "ResourceRecords": [ { "Value": "$(BASE_ENVIRONMENT_DNS)" } ] } } ] }'
この最後のコマンドは、AWSRoute53に次のようにレコードセットを作成しています。
$(TARGET_ENVIRONMENT).company.com
cNAMEを
$(BASE_ENVIRONMENT_DNS)
そして[〜#〜] not [〜#〜]本当に私が望むように、それは:
uat.company.com
cNAMEを使用:
abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com
スクリプト内のawscliコマンドに環境変数を渡すにはどうすればよいですか?
どんな助けでも大歓迎です。
ありがとう!
変数は一重引用符で囲まれません。
変数展開の前に一重引用符を閉じ、直後に再度開くと、目的の効果が得られるはずです。変数を展開するには、変数を二重引用符で囲む必要がある場合とない場合があります。
#!/bin/bash
ENV=uat
DNS=abcd-External-9982627718-1916763929.us-west-1.elb.amazonaws.com
# Creates route 53 records based on env name
aws route53 change-resource-record-sets --hosted-zone-id 1234567890ABC
--change-batch '{ "Comment": "Testing creating a record set",
"Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name":
"'"$ENV"'.company.com", "Type": "CNAME", "TTL":
120, "ResourceRecords": [ { "Value": "'"$DNS"'" } ] } } ] }'