Ответ 1
Я получил ответ, используйте ниже:
--query "Stacks[0].Outputs[?OutputKey=='DbUrl'].OutputValue" --output text
Надеюсь, это кому-нибудь поможет.
Я использую ниже, чтобы получить информацию стека, который я хочу через AWS Cli:
aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack
Это вернул результат ОК:
{
"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
}
]
}
Но я не знаю, как вернуть только значение OutputValue, которое является myUrl
Остальное мне не нужно, просто myUrl.
Возможно ли это через стеки описаний облачной информации?
редактировать
Я просто понимаю, что могу использовать - запрос:
--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
чтобы извлечь его. Экспорт должен быть уникальным - только один стек может экспортировать любое имя. Таким образом, вы уверены, что получаете правильное значение каждый раз. Если вы попытаетесь создать новый стек, который экспортирует имя, которое уже существует в другом месте, создание этого стека не удастся.
Используя Windows AWS CLI, я должен был убедиться, что параметр --query
был --query
кавычки.
aws cloudformation describe-stacks --stack-name <stack_name> --query "Stacks[0].Outputs[?OutputKey=='<key_we_want>'].OutputValue" --output text
Неиспользование двойных кавычек привело к возвращению запроса:
Stacks[0].Outputs[?OutputKey==
].OutputValue
Не очень полезно.