Назад | Перейти на главную страницу

AWS Cloud Formation. Требуются возможности: [CAPABILITY_IAM] (дочерний стек)

ВАЖНЫЙ

Я создаю TemplateURL динамически.

"TemplateURL" : { "Fn::Join" : ["", [  { "Ref" : "TemplateURL"}, "substack.template" ]] }

Я использую шаблон CloudFormation в консоли AWS.

Запуск стека напрямую

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

Запуск стека в детстве

Затем я попытался вызвать тот же стек из родительского стека и не получил того же запроса.

Затем произошел сбой стека с сообщением:

Требуются возможности: [CAPABILITY_IAM]

Исследовательская работа

В документации указано, что я могу запускать сценарии CF несколькими способами. Существует множество документов по CLI / API и предоставлению параметра возможности, но, похоже, нет информации о том, как убедиться, что он применяется при запуске через консоль.

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html

Ресурсы IAM в шаблонах AWS CloudFormation

Что я сделал / Что я думаю

Я поднял вопрос на форуме, но ответа (пока) нет: https://forums.aws.amazon.com/thread.jspa?threadID=139160

Я подозреваю, что это ошибка в консоли, поскольку, похоже, нет документации о том, как изменить поведение через консоль, и, насколько мне известно, это должно работать.

Кто-нибудь сталкивался с такой же проблемой или может сообщить, что у них все работает нормально?

Я только что столкнулся с этой проблемой, моя проблема заключалась в том, что я не установил флажок «Я подтверждаю, что этот шаблон может заставить AWS CloudFormation создавать ресурсы IAM». на последнем экране перед обновлением моего стека.

Если вы используете CLI или бото, вы можете включить параметр «возможности». Это займет список, но сейчас единственная принятая запись - «CAPABILITY_IAM».

cf.update_stack(..., capabilities=['CAPABILITY_IAM'])

или

cf.create_stack(..., capabilities=['CAPABILITY_IAM'])

Это предоставляет разрешения на создание IAM для всего стека.

При динамическом построении TemplateURL программа проверки валидации не может заранее увидеть, есть ли ресурсы IAM, и поэтому она не запрашивает IAM_CAPABILITIES.

Лучшим решением этой проблемы (прямо сейчас) было бы создание фиктивного ресурса IAM в главном шаблоне для получения приглашения.