AWS CloudFormation 系列--(1)快速入门

本文档是AWS CloudFormation的快速入门,介绍了为何需要使用CloudFormation服务,详细阐述了模板格式、资源字段属性,并通过实战案例演示了创建VPC、IGW、子网、安全组和EC2实例的过程,展示了如何通过代码实现IaC。
摘要由CSDN通过智能技术生成

AWS CloudFormation 系列–(1)快速入门

B站视频链接:https://www.bilibili.com/video/BV1Wd4y1i7PE/?spm_id_from=333.999.0.0
微信公众号自刘地


最近打算系统性的整理和分享AWS相关知识,而AWS CloudFormation这服务非常能提高你学习AWS的效率。所以先从这个服务开始介绍,后续我也会经常用到这个服务。

首先提醒一下,AWS CloudFormation需要你具有一定的AWS相关知识,比如在AWS Console上创建过VPC和EC2等资源,因为AWS CloudFormation这个服务,就是用代码的方式来创建资源,如果你不会通过图形化的方式创建,那么很难通过代码的方式来理解。

一、为什么需要AWS CloudFormation服务

利用AWS CloudFormation服务,可以让你通过代码的方式来创建AWS资源,这是AWS的基础架构即代码服务(IaC)。

为什么不在AWS Console界面来创建、删除资源,而是通过代码的方式来操作资源,主要有下面几个优势:

  1. 容易分享AWS环境给他人。通过代码的方式分享你的AWS环境,可以确保每次部署都是完全相同的,不用担心一些误操作引起的环境差异。当你需要学习一个新的服务时,经常会看到别人已经搭建好了所有的测试环境,并且分享了CloudFormation的代码,学会看这些代码能帮你提高学习效率。例如学习GWLB时看到这篇文档[参考链接1],节约了很多部署环境的时间。
  2. 可以「批量」操作AWS资源。在AWS CloudFormation代码里面,定义的VPC和EC2等这些资源,形成了一个堆栈(stack),创建或者删除一堆栈,就会自动创建或删除堆栈里面定义的所有资源。这个特点太方便学习做实验了,需要时,一键创建所有实验环境,做完后,一键打扫战场。避免漏删资源而扣费。
  3. 可以做版本控制。因为AWS CloudFormation都是代码文件,所以可以使用Git来进行版本控制。

二、AWS CloudFormation 模板格式

CloudFormation 模板就是你需要写的代码文件,模板是JSONYAML格式的文本文件,你可以指定任何的扩展名称,例如.txt,后缀名并不会影响内容的读取。

下面是在模板里面定义创建一个VPC,分别用JSON和YAML格式来展现。JSON和YAML格式是可以相互转换的,但是YAML支持注释功能,所以我更习惯使用YAML格式来写模板,之后的CloudFormation模板的代码我都会使用YAML格式来写。

通过JSON格式来创建一个VPC的代码,不用关心代码里面的字段,后面会讲解。

"MyTestVpc" : {
   
   "Type" : "AWS::EC2::VPC",
   "Properties" : {
   
      "CidrBlock" : "10.0.0.0/16",
      "EnableDnsSupport" : "true",
      "EnableDnsHostnames" : "true",
      "Tags" : [ 
         {
   "Key" : "Name", "Value" : "MyTestVpc"} 
      ]
   }
}

通过YAML格式来创建一个VPC的代码。YAML格式写起来更加简单,你可以写单引号、双引号、不写引号,都是一样的。我一般不写引号,除非字符较多,会通过引号来分隔字符。YAML和Python语法一样,不同的层级,通过缩进来区分。

# 创建VPC
MyTestVpc:
  Type: AWS::EC2::VPC
  Properties:
    CidrBlock: 10.0.0.0/16
    EnableDnsSupport: true
    EnableDnsHostnames: true
    Tags:
     - Key: Name
       Value: MyTestVpc

三、AWS CloudFormation 模板字段

下面是CloudFormation模板的所有字段,这是快速入门,只介绍最重要的一个字段,其他参考大家可以自己看文档模板格式[参考链接2],以后在其他文章中会陆续介绍这些参数。

Resources:这是唯一的必选字段,定义模板要创建哪些资源,例如创建VPC、EC2等,模板的主要作用就是定义资源,模板里面其他字段都可以省略,但是必须定义资源字段。

---
AWSTemplateFormatVersion: "version date"

Description:
  String

Metadata:
  template metadata

Parameters:
  set of parameters

Rules:
  set of rules

Mappings:
  set of mappings

Conditions:
  set of conditions

Transform:
  set of transforms

Resources:
  set of resources

Outputs:
  set of outputs

四、AWS CloudFormation 资源字段属性

4.1、实战案例

首先来看最重要的Resources字段,这个字段下面会有很多属性,而且不同的服务类型,属性参数并不一样。这些属性不需要你刻意去记忆, 主要还是明确需求之后,去查看文档资源和属性类型参考[参考链接3]。

这里通过一个实际的需求来看如何写CloudFormation的模板:创建一个VPC,内部创建一个EC2实例并关联安全组,实例通过IGW访问互联网。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值