Criar um modelo do CloudFormation a partir de recursos verificados com o gerador de IaC
Este tópico explica como criar um modelo a partir de recursos que foram verificados pelo recurso de gerador de IaC.
Criar um modelo com base nos recursos verificados (console)
Para criar um modelo de pilha com recursos verificados
-
Abra a página do gerador de IaC
do console do CloudFormation. -
Na barra de navegação na parte superior da tela, escolha a Região da AWS que contém os recursos verificados.
-
No painel Modelos, escolha Criar modelo.
-
Selecione Iniciar de um novo modelo.
-
Em Nome do modelo, forneça um nome para o modelo.
-
(Opcional) Configure sua Política de exclusão e a Política de substituição de atualização.
-
Escolha Próximo para adicionar recursos encontrados pela varredura ao modelo.
-
-
Em Adicionar recursos verificados, navegue pela lista de recursos verificados e selecione os recursos que deseja adicionar ao modelo. É possível filtrar os recursos por identificador, tipo de recurso ou tags. Os filtros são mutuamente inclusivos.
-
Após adicionar todos os recursos necessários para o modelo, escolha Próximo para sair da página Adicionar recursos verificados e prossiga para a página Adicionar recursos relacionados.
-
Revise uma lista recomendada de recursos relacionados. Recursos relacionados, como instâncias do Amazon EC2 e grupos de segurança, são interdependentes e normalmente pertencem à mesma workload. Selecione os usuários relacionados que deseja incluir no modelo gerado.
nota
Sugerimos adicionar todos os recursos relacionados a esse modelo.
-
Revise os detalhes do modelo, recursos encontrados pela varredura e recursos relacionados.
-
Escolha Criar modelo para sair da página Revisar e criar e criar o modelo.
Criar um modelo com base nos recursos verificados (AWS CLI)
Para criar um modelo de pilha com recursos verificados
-
Use o comando list-resource-scan-resources para listar os recursos encontrados pela verificação, especificando a opção
--resource-identifier
para limitar a saída, se assim desejar. Na opção--resource-scan-id
, substitua o ARN de amostra pelo ARN real.aws cloudformation list-resource-scan-resources \ --resource-scan-id
arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60
\ --resource-identifierMyApp
Este é um exemplo de resposta, onde
ManagedByStack
indica se o CloudFormation já está gerenciando o recurso. Copie a saída. Você precisa dele para a próxima etapa.{ "Resources": [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" }, "ManagedByStack": false }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" }, "ManagedByStack": false } ] }
Consulte uma descrição dos campos na saída em ScannedResource na Referência de API do AWS CloudFormation.
-
Use o comando
cat
para armazenar os tipos e identificadores de recursos em um arquivo JSON chamadoresources.json
em seu diretório inicial. O exemplo a seguir é um JSON baseado na saída do exemplo da etapa anterior.$ cat > resources.json [ { "ResourceType": "AWS::EKS::Cluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } } ]
-
Use o comando list-resource-scan-related-resources, juntamente com o arquivo
resources.json
que você criou, para listar os recursos relacionados aos recursos verificados.aws cloudformation list-resource-scan-related-resources \ --resource-scan-id
arn:aws:cloudformation:us-east-1:123456789012:resourceScan/0a699f15-489c-43ca-a3ef-3e6ecfa5da60
\ --resourcesfile://resources.json
Este é um exemplo de resposta, onde
ManagedByStack
indica se o CloudFormation já está gerenciando o recurso. Adicione esses recursos ao arquivo JSON criado na etapa anterior. Ele será necessário para criar o modelo.{ "RelatedResources": [ { "ResourceType": "AWS::EKS::Nodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" }, "ManagedByStack": false }, { "ResourceType": "AWS::IAM::Role", "ResourceIdentifier": { "RoleId": "arn:aws::iam::
account-id
:role/MyAppIAMRole" }, "ManagedByStack": false } ] }Consulte uma descrição dos campos na saída em ScannedResource na Referência de API do AWS CloudFormation.
nota
A lista de entrada de recursos não pode exceder um tamanho de 100. Para listar recursos relacionados para mais de 100 recursos, execute o comando list-resource-scan-related-resources em lotes de 100 e consolide os resultados.
Tenha em mente que a saída pode conter recursos duplicados na lista.
-
Use o comando create-generated-template para criar um novo modelo de pilha da seguinte forma, com as seguintes modificações:
-
Substitua
pelo Região da AWS que contém os recursos verificados.us-east-1
-
Substitua
pelo nome do modelo a ser criado.MyTemplate
aws cloudformation create-generated-template --region
us-east-1
\ --generated-template-nameMyTemplate
\ --resourcesfile://resources.json
Veja a seguir um exemplo de arquivo
resources.json
.[ { "ResourceType": "AWS::EKS::Cluster", "LogicalResourceId":"MyCluster", "ResourceIdentifier": { "ClusterName": "MyAppClusterName" } }, { "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "LogicalResourceId":"MyASG", "ResourceIdentifier": { "AutoScalingGroupName": "MyAppASGName" } }, { "ResourceType": "AWS::EKS::Nodegroup", "LogicalResourceId":"MyNodegroup", "ResourceIdentifier": { "NodegroupName": "MyAppNodegroupName" } }, { "ResourceType": "AWS::IAM::Role", "LogicalResourceId":"MyRole", "ResourceIdentifier": { "RoleId": "arn:aws::iam::
account-id
:role/MyAppIAMRole" } } ]Em caso de êxito, o comando retornará a resposta a seguir.
{ "Arn": "arn:aws:cloudformation:
region
:account-id
:generatedtemplate/7fc8512c-d8cb-4e02-b266-d39c48344e48
", "Name": "MyTemplate
" } -