Criar modelos de execução com o AWS CloudFormation
Esta seção fornece um exemplo de como criar um modelo de execução do Amazon EC2 usando o AWS CloudFormation. Os modelos de execução permitem que você crie modelos para configurar e provisionar instâncias do Amazon EC2 na AWS. Com os modelos de execução, é possível armazenar parâmetros de inicialização de modo que você não precise especificá-los toda vez que iniciar uma instância. Para obter mais exemplos, consulte a seção Exemplos no recurso AWS::EC2::LaunchTemplate
.
Para obter mais informações sobre modelos de execução, consulte Iniciar uma instância a partir de um modelo de execução.
Para obter mais informações sobre como criar modelos de execução para usar com grupos do Auto Scaling, consulte Modelos de execução no Guia do usuário do Amazon EC2 Auto Scaling.
Categorias de snippets
Crie um modelo de execução que especifique grupos de segurança, tags, dados do usuário e um perfil do IAM
Este snippet mostra um recurso AWS::EC2::LaunchTemplate que contém as informações de configuração para iniciar uma instância. Você especifica os valores para as propriedades ImageId
, InstanceType
, SecurityGroups
, UserData
e TagSpecifications
. A propriedade SecurityGroups
especifica um grupo de segurança do EC2 existente, bem como um novo grupo de segurança. A função Ref
recebe o ID do myNewEC2SecurityGroup
do recurso AWS::EC2::SecurityGroup que é declarado em outro lugar no modelo da pilha.
O modelo de execução contém uma seção para dados de usuário personalizados. É possível transmitir tarefas de configuração e scripts que são executados quando uma instância é iniciada nessa seção. Neste exemplo, os dados do usuário instalam o AWS Systems Manager Agent e iniciam o agente.
O modelo de execução também inclui um perfil do IAM que permite que aplicações em execução em instâncias executem ações em seu nome. Este exemplo mostra um recurso AWS::IAM::Role para o modelo de inicialização, que usa a propriedade IamInstanceProfile
para especificar o perfil do IAM. A função Ref
recebe o nome do myInstanceProfile
do recurso AWS::IAM::InstanceProfile. Para configurar as permissões do perfil do IAM, especifique um valor para a propriedade ManagedPolicyArns
.
JSON
{ "Resources":{ "myLaunchTemplate":{ "Type":"AWS::EC2::LaunchTemplate", "Properties":{ "LaunchTemplateName":{ "Fn::Sub": "${AWS::StackName}-launch-template" }, "LaunchTemplateData":{ "ImageId":"
ami-02354e95b3example
", "InstanceType":"t3.micro
", "IamInstanceProfile":{ "Name":{ "Ref":"myInstanceProfile" } }, "SecurityGroupIds":[ { "Ref":"myNewEC2SecurityGroup
" }, "sg-083cd3bfb8example
" ], "UserData":{ "Fn::Base64":{ "Fn::Join": [ "", [ "#!/bin/bash\n
", "cd /tmp\n
", "yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm\n
", "systemctl enable amazon-ssm-agent\n
", "systemctl start amazon-ssm-agent\n
" ] ] } }, "TagSpecifications":[ { "ResourceType":"instance", "Tags":[ { "Key":"environment
", "Value":"development
" } ] }, { "ResourceType":"volume", "Tags":[ { "Key":"environment
", "Value":"development
" } ] } ] } } }, "myInstanceRole":{ "Type":"AWS::IAM::Role", "Properties":{ "RoleName":"InstanceRole", "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ec2.amazonaws.com" ] }, "Action":[ "sts:AssumeRole" ] } ] }, "ManagedPolicyArns":[ "arn:aws:iam::aws:policy/myCustomerManagedPolicy
" ] } }, "myInstanceProfile":{ "Type":"AWS::IAM::InstanceProfile", "Properties":{ "Path":"/", "Roles":[ { "Ref":"myInstanceRole" } ] } } } }
YAML
--- Resources: myLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId:
ami-02354e95b3example
InstanceType:t3.micro
IamInstanceProfile: Name: !Ref myInstanceProfile SecurityGroupIds: - !RefmyNewEC2SecurityGroup
-sg-083cd3bfb8example
UserData: Fn::Base64: !Sub |#!/bin/bash cd /tmp yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm systemctl enable amazon-ssm-agent systemctl start amazon-ssm-agent
TagSpecifications: - ResourceType: instance Tags: - Key:environment
Value:development
- ResourceType: volume Tags: - Key:environment
Value:development
myInstanceRole: Type: AWS::IAM::Role Properties: RoleName: InstanceRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: 'Allow' Principal: Service: - 'ec2.amazonaws.com' Action: - 'sts:AssumeRole' ManagedPolicyArns: - 'arn:aws:iam::aws:policy/myCustomerManagedPolicy
' myInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Path: '/' Roles: - !Ref myInstanceRole