亚马逊云服务之CloudFormation

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 亚马逊的Web Service其实包含了一套云服务。云服务主要分为三种: IaaS: Infrastructure as a service,基础设施即服务。 PaaS: Platform as a service, 平台即服务。

亚马逊的Web Service其实包含了一套云服务。云服务主要分为三种:

  • IaaS: Infrastructure as a service,基础设施即服务。

  • PaaS: Platform as a service, 平台即服务。

  • SaaS: Software as a service, 软件即服务。

而亚马逊提供的云服务至少涵盖了前面两种。以下是亚马逊提供的各种服务。

img_4620ffed5a82fb6d7d2c245f063cdf20.png

以上的图中S3、EC2等就属于IaaS,RDS、DynamoDB等就属于PaaS。

今天分享的是亚马逊的CloudFormation,亚马逊将其归类为Deployment&Management(部署及管理类别)。为什么亚马逊要推出这项服务那?我们可以假设一个场景。如果你要将一个WordPress网站部署到亚马逊上,你需要以下几步:创建一个EC2实例->在此EC2实例上配置WordPress->创建RDS数据库实例->在WordPress中配置与该RDS的连接。整个过程耗时耗力,需要在亚马逊不同的云服务间跳转。这些操作关联性很强,不具备自动化。如果你使用了CloudFormation以后,只需要在页面上点几个按钮,输入一些参数,就可以创建一个博客,省时省力,甚至完全不用任何UI,直接通过命令行完成。

CloudFormation给予了用户一种简单的方法来创建和管理一系列有关联的AWS的资源,可以有序的及可预见的初始化和更新这些资源。

要了解CloudFomation之前,先要了解几个概念。

Template - 模板

Template是CloudFormation的一个重要概念。Template本质上是一个json格式的文件。该文件定义了你需要使用那些AWS的资源,并且如何初始化这些资源。CloudFormation支持的资源如下图所示。

img_6ca021b87a8229626fd3bd910261eb5f.png

一个Template文件至少包含一下几个属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
    "AWSTemplateFormatVersion" : "2010-09-09",  //Template版本

    "Description" : "描述该Template的用途",

    "Parameters": {        // 应用该Template需要配置的参数
    },

    "Resources" : {        // 使用到的AWS的资源及它们之间的关系
    },

    "Outputs" : {        // stack创建完毕后的一系列返回值
    }
}

这个Template就是用来创建一个EC2的虚拟机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{ "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",
  "Outputs" : { "InstanceId" : { "Description" : "The InstanceId of the newly created EC2 instance",
          "Value" : { "Ref" : "Ec2Instance" }
        } },
  "Parameters" : { "KeyPair" : { "Description" : "The EC2 Key Pair to allow SSH access to the instance",
          "Type" : "String"
        } },
  "Resources" : { "Ec2Instance" : { "Properties" : { "ImageId" : "ami-3b355a52",
              "KeyName" : { "Ref" : "KeyPair" }
            },
          "Type" : "AWS::EC2::Instance"
        } }
}

AWS官方提供了很多Template的资源,我们可以直接使用,当然也可以按需修改,甚至自己手动编写自己的Template。<http://aws.amazon.com/cloudformation/aws-cloudformation-templates/ >列出了一系列可供使用的Template。

Stack - 堆

Template只是一个json格式的文件,如果想要使用它的话,需要创建一个Stack,在Stack中指定你要使用的Template,然后亚马逊才会按照Template中的定义来创建及初始化资源。可以在AWS Management Console中或通过命令行调用API的方式来创建Stack。

实战

接下来,我们就通过AWS Management Console,使用CloudFormation来创建一个部署在EC2上、使用RDS作为数据库的WordPress网站。

首先,需要登录到AWS Management Console,选择EC2服务,点击左侧菜单的Key Pair,创建一个Key Pair。这个Key Pair将在接下来被使用,主要使AWS能够ssh到创建的EC2机器上。当然你也可以使用已有的Key Pair。

img_9ab8fba1152d80de734a315841abce44.png

然后选择CloudFormation服务,点击Create Stack按钮。

然后输入Stack名称,并选择一个Template。由于我们要创建一个WordPress的站点,可以选择use a sample temple,并选择WordPress这个模板。

img_2af792be543c08e7d214fdcf6ef482ce.png

img_593dfe47c83d9e7ad52019ff346826b3.png

然后点击continue按钮,配置相关的参数。注意在KeyName一项中输入我们第一步创建的Key Pair。

img_6a22a63fa347125f87fb70d803d14e57.png

然后点击continue按钮,配置此Stack的标签,这个是可选项,可以跳过。再点一下continue,将会再次确认想要的创建的资源信息,继续后就可以看到资源正在创建了。

img_078e045f42993c4599344f69d1f95319.png

页面下半部分有很多标签,你可以随时查看该Stack的描述、资源、事件、参数、输出等各项信息。

等待大约20分钟,Stack就会执行完毕,在Outputs标签中你会看到有一个url。

img_aea2bc2c111aadcdd549fabd92586431.png

这个就是我们创建的WordPress的入口地址,访问该链接会进入WordPress的初始化设置页面。

img_c6add576e42ec86baa7e4711e36a4bbc.png

配置完以后,一个新的WordPress就诞生了,重新访问URL,你会看到你的博客首页。

img_585230682c818b85fc21773bf1dd0bf8.png

CloudFormer

提到CloudFormation就不得不说CloudFormer。CloudFormer是亚马逊提供的一个工具,用来给已有的AWS资源创建CloudFormation Template。这样你在以后创建相同的AWS资源时就可以直接使用这个Template了。

要使用CloudFormer首先要创建一个Stack,CloudFormer就被部署到一台EC2机器上,通过这个Stack返回的Outputs的URL我们可以一步步勾选使用到的资源,最终生成一个Template,该Template会自动放置到你的S3中。

首先创建Stack,Template选择use a sample template,并选择CloudFormer。

img_6855105136184ff49c26c4ae5745a924.png

然后点击continue,配置其他参数,直到走完创建Stack这个流程。

img_fde346f2025d1cb912ed4a53923c8609.png

等待这个Stack创建完毕后,就可以从Outputs标签得到一个URL。这个URL是执行CloudFormer工具的入口地址。

img_e0f1562e1f35fd931122394986197255.png

点击此URL,即可按照配置一步步配置自己的Template。

img_687a37388b002316c48cde2884e6b9ae.png

流程走完后,生成的Template会存放到你的S3 bucket中。


由于CloudFormation支持对几乎所有的AWS资源进行创建和配置,并且能够按照指定顺序创建,其Template简洁易懂、容易配置、可重用,所以是你使用AWS的不可多得的好帮手。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
文字识别 Java API
文字识别OCR里这些包
【2月更文挑战第7天】文字识别OCR里这些包
577 1
|
网络协议 数据安全/隐私保护 Web App开发
|
安全 API
获取百炼API-KEY
获取百炼API-KEY
|
机器学习/深度学习 人工智能 算法
强化学习在复杂环境中的应用与挑战
【8月更文第9天】强化学习(Reinforcement Learning, RL)是一种机器学习方法,通过智能体与环境的交互来学习最优策略。近年来,随着计算能力的提升和算法的进步,强化学习被广泛应用于各种复杂环境下的任务,如机器人导航、游戏策略优化等。本文将探讨强化学习在这些领域中的应用案例,并分析所面临的挑战及其潜在的解决方案。
1220 4
音频剪裁大师:使用 Python 和 ffmpeg 分割音频的完整指南
使用 Python 和 ffmpeg 进行音频文件分割。通过 `subprocess` 模块调用 ffmpeg 命令,定义 `split_audio` 函数,输入参数包括音频文件、起始时间、持续时间和输出文件名。函数构建命令行指令进行分割,然后执行。运行脚本,即可按指定时间从音频中提取片段。简单易用,适用于多种音频处理场景。
|
Web App开发 JavaScript 测试技术
webrtc学习: 部署stun和turn服务器
webrtc的P2P穿透部分是由libjingle实现的.  步骤顺序大概是这样的:  1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转.    stun 服务器比较简单.
10242 1
|
安全 Java 数据库
Spring Security 权限管理详解与案例
Spring Security 是 Spring 框架中用于提供认证和访问控制的模块。它保护了成千上万的应用程序,使其免受未经授权的访问。本文将详细介绍 Spring Security 的权限管理功能,并通过一个实际案例来展示其用法。
1853 1
|
Web App开发 监控 程序员
从前端程序员的视角看小程序的稳定性保障
当我们谈业务稳定性的时候,通常是指后端工程师从架构的角度来看的,例如限流和降级、流量调度、业务开关、容量压测等,但监控也是整个业务稳定性建设中不可或缺的一环,例如对业务和前端的监控,以保证出现问题的时候,可以第一时间找到根因所在。
4241 108
|
存储 算法 PHP
唯一ID生成原理与PHP实现-雪花算法
唯一ID生成原理与PHP实现-雪花算法
943 0
唯一ID生成原理与PHP实现-雪花算法
|
弹性计算 负载均衡 Cloud Native
全景剖析阿里云容器网络数据链路(四)—— Terway IPVLAN+EBPF
本系列联合作者 容器服务 @谢石 近几年,企业基础设施云原生化的趋势越来越强烈,从最开始的IaaS化到现在的微服务化,客户的颗粒度精细化和可观测性的需求更加强烈。容器网络为了满足客户更高性能和更高的密度,也一直在高速的发展和演进中,这必然对客户对云原生网络的可观测性带来了极高的门槛和挑战。为了提高云原生网络的可观测性,同时便于客户和前后线同学增加对业务链路的可读性
1871 1
全景剖析阿里云容器网络数据链路(四)—— Terway IPVLAN+EBPF