AWS Cloud Formation.Requires capacidades: [CAPABILITY_IAM] (pilha infantil)

4

IMPORTANTE

Estou criando o TemplateURL dinamicamente.

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

Estou executando um modelo do CloudFormation no AWS Console.

Execução de pilha diretamente

Eu iniciei com um modelo que usava recursos do IAM, e o console me avisa para reconhecer os recursos do IAM ao executar a pilha diretamente.

Execução da Pilha como uma criança

Eu então tentei chamar a mesma pilha de uma pilha pai e não recebi o mesmo prompt.

A pilha falhou com a mensagem:

Requires capabilities : [CAPABILITY_IAM]

Pesquisa

Os documentos indicam que posso executar scripts de CF de várias maneiras. Há muitos documentos sobre a CLI / API e o fornecimento do parâmetro de recurso, mas parece não haver informações sobre como garantir que ele seja aplicado ao executar o console.

link

Recursos do IAM em modelos do AWS CloudFormation

  • CF Console
  • CLI
  • API

O que eu fiz / o que eu acho

Eu já levantei um problema através do fórum por enquanto, mas nenhuma resposta (ainda): link

Eu suspeito que isso seja um bug no console, já que parece não haver nenhuma documentação de como mudar o comportamento através do console e, até onde eu sei, isso deve funcionar.

Alguém se deparou com o mesmo problema ou pode relatar que está funcionando bem para eles?

    
por Drew Khoury 08.11.2013 / 01:54

3 respostas

1

Ao criar o TemplateURL dinamicamente, o verificador de validação não pode ver se há recursos do IAM antecipadamente, e é por isso que não solicitará o IAM_CAPABILITIES.

A melhor solução para esse problema (agora) seria criar um recurso IAM simulado no modelo mestre para obter o prompt.

    
por 22.11.2013 / 01:40
3

Acabei de me deparar com este problema, o meu problema foi que não marquei a caixa de verificação "Confirmo que este modelo pode fazer com que o AWS CloudFormation crie recursos do IAM." na última tela antes de atualizar minha pilha.

    
por 22.04.2016 / 15:42
1

Se você está usando CLI ou boto, você pode incluir o parâmetro "capabilities". Isso leva uma lista, mas a única entrada aceita agora é 'CAPABILITY_IAM'.

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

ou

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

Isso concede permissões de criação de IAM na árvore de pilha inteira.

    
por 22.10.2015 / 21:58