Получение выходных данных из aws cloudformation описать-стеки

Я использую ниже, чтобы получить информацию стека, который я хочу через 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, иначе, если количество выходов изменится, мой результат будет неожиданным.

Ответ 1

Я получил ответ, используйте ниже:

--query "Stacks[0].Outputs[?OutputKey=='DbUrl'].OutputValue" --output text

Надеюсь, это кому-нибудь поможет.

Ответ 2

При выполнении запросов может возникнуть проблема, если у вас есть несколько стеков. Реально, вы, вероятно, должны использовать экспорт для вещей, которые являются отчетливыми и авторитетными.

В качестве примера - если вы изменили фрагмент 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

чтобы извлечь его. Экспорт должен быть уникальным - только один стек может экспортировать любое имя. Таким образом, вы уверены, что получаете правильное значение каждый раз. Если вы попытаетесь создать новый стек, который экспортирует имя, которое уже существует в другом месте, создание этого стека не удастся.

Ответ 3

Используя 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

Не очень полезно.