我们用CloudFormation(执行版)创建一个VPC环境

大家好,
我是系统解决方案部SRE团队的冈崎。
上次,我想介绍一种使用“CloudFormation”的简单方法。
这次,我想实际使用上次填写的模板文件创建一个VPC。
创建一个堆栈
首先,登录到您的开发服务器,并为将运行 CloudFormation 的用户注册 API 密钥,如下所示。
[root@localhost ~]# aws configure AWS Access Key ID [****************XXXX]: AWS Secret Access Key [****************XXXX]: Default region name [ap-northeast-1]: Default output format [XXXX]:
如果您没有 aws 命令,请按以下步骤安装:
[root@localhost ~]# yum install epel-release [root@localhost ~]# yum install python-pip [root@localhost ~]# pip install awscli
请确保您拥有上次创建的 vpc.yml 文件,然后运行以下命令创建 VPC。
[root@localhost ~]# ls -l 总计 4 -rw-r--r--. 1 root root 1713 3月 22 06:20 vpc.yml [root@localhost ~]# aws cloudformation create-stack \ > --stack-name vpc \ > --region ap-northeast-1 \ > --template-body file://./vpc.yml
执行后,如果显示以下消息且没有任何错误,则创建过程将继续进行。
arn:aws:cloudformation:ap-northeast-1:189461266018:stack/vpc/7b29dce0-4c70-11e9-8b3c-0ee87e6fb924
您可以使用以下命令检查状态。
当显示“CREATE_COMPLETE”时,表示资源已创建完成。
aws cloudformation describe-stacks --stack-name vpc STACKS 2019-03-28T02:12:32.683Z False False arn:aws:cloudformation:ap-northeast-1:189461266018:stack/vpc/f23007a0-50fe-11e9-88b0-0e819627e6da vpc CREATE_COMPLETE DRIFTINFORMATION NOT_CHECKED PARAMETERS PublicSubnetCider 10.31.0.0/24 PARAMETERS ProjectCode test PARAMETERS VPCCider 10.31.0.0/16
让我们检查一下每个资源的构建是否已经完成。


已成功创建具有指定标识符的 VPC 和子网。
删除资源
现在,让我们一次性删除这次创建的所有资源。
如果手动删除,您需要导航到每个资源页面并逐个删除,但
使用 CloudFormation 创建的资源可以从单个控制台删除。
返回开发服务器并执行以下命令。
[root@localhost ~]# aws cloudformation delete-stack --stack-name vpc
现在我们来检查删除进度。
运行以下命令,如果显示“DELETE_IN_PROGRESS”,则表示删除正在进行中。
[root@localhost ~]# aws cloudformation describe-stacks --stack-name vpc STACKS 2019-03-28T02:12:32.683Z 2019-03-28T02:20:53.902Z False False arn:aws:cloudformation:ap-northeast-1:189461266018:stack/vpc/f23007a0-50fe-11e9-88b0-0e819627e6da vpc DELETE_IN_PROGRESS DRIFTINFORMATION NOT_CHECKED PARAMETERS PublicSubnetCider 10.31.0.0/24 PARAMETERS ProjectCode test PARAMETERS VPCCider 10.31.0.0/16
堆栈删除完成后,您将看到以下错误消息:
[root@localhost ~]# aws cloudformation describe-stacks --stack-name vpc 调用 DescribeStacks 操作时发生错误 (ValidationError):ID 为 vpc 的堆栈不存在
现在我们来检查删除操作是否真的完成了。
我们可以确认 VPC 已经消失了。

解释
以下是对每条命令的逐步解释:
# aws cloudformation create-stack \ ↑ 使用 aws cloudformation 声明您将使用 CloudFormation。使用 create-stack 创建堆栈,或使用 delete-stack 删除堆栈。> --stack-name vpc \ ↑ stack-name [name] 设置堆栈名称。> --region ap-northeast-1 \ ↑ --region [region] 设置要创建资源的区域。> --template-body file://./vpc.yml ↑ --template-body [file URL] 指定模板文件的 URL。
这样,您就可以用最少的命令创建一个 VPC。
如果您想更改之前设置的参数值,可以按如下方式编写命令。
# aws cloudformation create-stack \ > --stack-name vpc \ > --region ap-northeast-1 \ > --template-body file://./vpc.yml > --parameters \ > ParameterKey=ProjectCode,ParameterValue=test-beyondjapan \ > ParameterKey=VPCCider,ParameterValue="10.23.0.0/16" \ > ParameterKey=PublicSubnetCider,ParameterValue="10.23.0.0/24"
您可以在 parameters 中声明每个参数的用途,在 ParameterKey 中指定参数 ID,并在 ParameterValue 中指定值。
概括
这次,我们能够直接在控制台中创建和删除堆栈和资源。
使用 CloudFormation,您可以轻松创建和删除 AWS 资源。
在本篇及之前的文章中,我们仅介绍了如何创建 VPC,但下次我们将介绍一些实用内容,例如创建 EC2 实例,敬请期待。
0