以下を使用して スタック情報 AWS Cli経由で取得します:
aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack
結果を返していますOK:
{
"Stacks": [
{
"StackId": "arn:aws:mystackid",
"LastUpdatedTime": "2017-01-13T04:59:17.472Z",
"Tags": [],
"Outputs": [
{
"OutputKey": "Ec2Sg",
"OutputValue": "sg-97e13dff"
},
{
"OutputKey": "DbUrl",
"OutputValue": "myUrl"
}
],
"CreationTime": "2017-01-13T03:27:18.893Z",
"StackName": "mystack",
"NotificationARNs": [],
"StackStatus": "UPDATE_ROLLBACK_COMPLETE",
"DisableRollback": false
}
]
}
しかし、myUrlであるOutputValueの値のみを返す方法はわかりません
残りは必要ないので、myUrlだけです。
AWS cloudformation describe-stacksを使用して可能ですか?
編集
私は-- query を使用できることに気付きました。
--query "Stacks[0].Outputs[1].OutputValue"
私が望むものを正確に取得しますが、出力の数が変更された場合、DbUrlを使用したいので、結果は予期しないものになります。
私は答えを得ました、以下を使用してください:
--query "Stacks[0].Outputs[?OutputKey=='DbUrl'].OutputValue" --output text
これが誰かを助けることを願っています。
クエリは機能しますが、複数のスタックがある場合は問題が生じる可能性があります。現実的には、おそらく明確で信頼できるもののエクスポートを活用する必要があります。
例として-CloudFormationスニペットを次のように変更した場合:
"Outputs" : {
"DbUrl" : {
"Description" : "My Database Url",
"Value" : "myUrl",
"Export" : {
"Name" : "DbUrl"
}
}
}
次に使用できます:
aws cloudformation list-exports --query "Exports[?Name==\`DbUrl\`].Value" --no-paginate --output text
それを取得します。エクスポートは一意である必要があります。特定の名前をエクスポートできるスタックは1つだけです。これにより、毎回正しい値を取得できます。他の場所にすでに存在する名前をエクスポートする新しいスタックを作成しようとすると、そのスタックの作成は失敗します。
Windows AWS CLIを使用して、--query
paramが二重引用符で囲まれました。
aws cloudformation describe-stacks --stack-name <stack_name> --query "Stacks[0].Outputs[?OutputKey==`<key_we_want>`].OutputValue" --output text
二重引用符を使用しないと、クエリが次の結果を返します。
Stacks[0].Outputs[?OutputKey==
].OutputValue
あまり役に立たない。