掌握在使用 AWS CloudFormation来部署 AWS 资源的时候,出现失败或者故障的情况下的处理思路和对应方法。本次动手实验模拟,使用 AWS CloudFormation 创建 Amazon EC2 的时候无法成功创建的情景,以及相应的解决方案。
使用 CloudFormation 控制台查看堆栈的状态。在控制台中,可以在创建、更新或删除堆栈时查看堆栈事件、错误消息、日志列表。通过该列表,可以找到相关的失败事件,以及该事件的状态原因;然后根据提修改 CloudFormation 文件进行下一步测试和修改。
步骤一:创建 CloudFormation 模板文件
采用 YAML 文件格式,并且保存到本地。本模板将会在美国东部一区(us-east-1a)创建一个 64 位的Amazon Linux EC2 实例。模板文件内容如下所示,
Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: AvailabilityZone: us-east-1a ImageId: ami-06b21ccaeff8cd68 InstanceType: t2.micro
步骤二:创建 CloudFormation 堆栈
1. 打开 AWS CloudFormation 控制台,选择 AWS 区域以在其中创建堆栈。
2. 在堆栈页面,选择右上角的堆栈,然后选择使用新资源(标准),选择使用现有模板
3. 验证模板,并配置堆栈选项。
4. 选择创建 Linux EC2 实例堆栈。
步骤三:确定 CloudFormation 堆栈创建失败,查找失败原因
1. 在 CloudFormation控制台中,查看失败堆栈的事件列表
2. 明确堆栈创建失败可能的原因为 AMI ID 无效
Resource handler returned message: "Invalid id: "ami-06b21ccaeff8cd6" (expecting "ami-...")
3. 在美国东部一区中的 EC2 控制台中,打开 AMI 目录面板,确认正确的 AMI ID
错误的 AMI ID:ami-06b21ccaeff8cd68
正确的AMI ID:ami-0085e579c65d43668
步骤四:修改 CloudFormation 文件,再次执行堆栈创建
1. 在美国东部一区中的 CloudFormation 控制台中,可以看到堆栈创建成功
2. 在美国东部一区中的 EC2 控制台中,查看创建成功的 EC2 实例
3. 测试结束后,在 CloudFormation 控制台中删除该 CloudFormation 堆栈
4. 在 EC2 控制台中,确认该 EC2 实例以及被删除
5. 在 S3 控制台中,删除用来保存 CloudFormation 模板文件的 S3 存储桶