Как запустить экземпляр EC2 с использованием облачной информации AWS
Я отправил свой AMI в AWS Marketplace, но он был отклонен, сказав, что мне нужно преобразовать мои ручные инструкции в шаблон CloudFormation. Мои инструкции для пользователей в настоящее время утверждают, что:
- User must create a new Role
- Assign AWSS3FullAccess to this role
- Launch the AMI with WebSecurityGroup (port 80 and 443)
Я не использовал CloudFormation раньше, поэтому я хотел бы задать пару вопросов
Можно ли создать шаблон CloudFormation таким образом, чтобы он: 1) создавал новую роль 2) назначал политику для этой роли 3) создавал экземпляр EC2 с AMI (был бы указан amiID) с этой ролью и WebSecurityGroup.
Я создал следующий шаблон, который создает новую роль и назначает ей полный доступ к S3.
Но я не уверен, как сделать все остальное. Как я могу запустить экземпляр EC2 с этой новой ролью и указать мой идентификатор AMI?
AWSTemplateFormatVersion: '2010-09-09'
Description: Sample
Resources:
MyAmiRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- ec2.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonS3FullAccess
Path: "/"
1 ответ
В своем шаблоне Amazon CloudFormation вы должны определить следующие ресурсы:
IAM::Role
(как вы уже сделали)IAM::InstanceProfile
(что позволяет использовать роль для экземпляра Amazon EC2)EC2::SecurityGroup
AWS::EC2::Instance
который будет относиться кInstanceProfile
, ваш AMI и группа безопасности
Для некоторых примеров см.:
- Роль IAM со встроенной политикой и профилями экземпляров
- Связывание существующей роли IAM с AWS::EC2::Instance в CloudFormation
- Справочник по типам ресурсов AWS CloudFormation
Последняя ссылка обычно содержит примеры с каждым типом ресурса, поэтому вам нужно скопировать примеры, а затем настроить их для своего варианта использования.