En esta sección se proporciona un ejemplo de creación de una plantilla de lanzamiento de Amazon EC2 mediante AWS CloudFormation. Las plantillas de lanzamiento le permiten crear plantillas para configurar y aprovisionar instancias de Amazon EC2 en AWS. Puede utilizar plantillas de lanzamiento para almacenar parámetros de lanzamiento con el objetivo de no tener que especificarlos cada vez que lance una instancia. Para obtener más ejemplos, consulte la sección Ejemplos del recurso de AWS::EC2::LaunchTemplate
.
Para obtener más información sobre las plantillas de lanzamiento, consulte Lanzar una instancia desde una plantilla de lanzamiento.
Para obtener información acerca de cómo crear una plantilla de lanzamiento para utilizarla con los grupos de escalado automático, consulte Lanzar plantillas en la Guía del usuario de Amazon EC2 Auto Scaling.
Categorías de fragmentos
Creación de una plantilla de lanzamiento que especifique grupos de seguridad, etiquetas, datos del usuario y un rol de IAM
En este fragmento se muestra un recurso AWS::EC2::LaunchTemplate que contiene la información de configuración para lanzar una instancia. Los usuarios especifican valores para las propiedades ImageId
, InstanceType
, SecurityGroups
, UserData
y TagSpecifications
. La propiedad SecurityGroups
especifica un grupo de seguridad de EC2 existente y un nuevo grupo de seguridad. La función Ref
obtiene el ID del recurso myNewEC2SecurityGroup
de AWS::EC2::SecurityGroup que se declara en otra parte de la plantilla de pila.
La plantilla de lanzamiento incluye una sección para datos de usuario personalizados. En esta sección, puede pasar tareas de configuración y scripts que se ejecutan cuando se lanza una instancia. En este ejemplo, los datos de usuario instalan el agente de AWS Systems Manager e inicia el agente.
La plantilla de lanzamiento también incluye un rol de IAM que permite a las aplicaciones que se ejecutan en instancias llevar a cabo acciones en su nombre. En este ejemplo, se muestra un recurso AWS::IAM::Role para la plantilla de lanzamiento, que utiliza la propiedad IamInstanceProfile
para especificar el rol de IAM. La función Ref
obtiene el nombre del recurso myInstanceProfile
de AWS::IAM::InstanceProfile. Para configurar los permisos del rol de IAM, debe especificar un valor para la propiedad 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:
- !Ref myNewEC2SecurityGroup
- 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