2017-01-13 5 views
11

Я использую ниже, чтобы получить stack information я хочу через AWS Cli:Попадая Выходы из AWS CloudFormation описывает-стеки

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 
     } 
    ] 
} 

Но я не знаю, как вернуть только значение OutputValue, которое является myUrl

Поскольку мне не нужны остальные, просто myUrl.

Возможно ли это через aws cloudformation describe-stacks?

Редактировать

Я просто понимаю, что я могу использовать - query:

--query 'Stacks[0].Outputs[1].OutputValue' 

получите именно то, что я хочу, но я хотел бы использовать DbUrl иначе, если количество изменений выходов, мой результат будет неожиданным.

ответ

18

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

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

Надеется, что это поможет кому-то.

+0

Спасибо, это именно то, что я искал сегодня. – user1432403

+0

Для кого-то еще мне пришлось использовать '' ', а не' '' – Tobin

1

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

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

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

Смежные вопросы