使用 AWS CLI 自动在 Amazon EC2 实例上部署 Apache Web 服务器

“使用 AWS CLI 节省时间”       欢迎来到雲闪世界。今天,我们将利用 AWS CLI 的实际用途来提高效率并自动执行在 Amazon EC2 实例上部署 Apache Web 服务器的步骤。完成“使用 AWS CLI 节省时间”任务后,最后有一个非常有趣的秘密步骤,敬请期待! 背景 作为云工程师,您的主要任务之一是帮助您的组织更高效地运营。使用 AWS 管理控制台也可以完成工作,但点击控制台会浪费很多时间。为了提高效率并实现自动化流程的好处,使用 AWS CLI 通常是更好的选择。 您刚刚被聘为REX TECH 组织的云工程师。您注意到当前的工程师经常使用 AWS 管理控制台来完成管理 AWS 资源的任务。您还意识到他们倾向于在命令行中一次一个地运行涉及 Linux 命令的重复性任务。您想向他们展示一种更有效的方式来自动化日常流程,例如启动 Amazon EC2 Web 服务器。您决定先自己练习这些步骤,然后再向他们展示如何做到这一点。 先决条件

AWS 账户和 IAM 用户

AWS 管理控制台中的基本工作知识

您首选的 Linux CLI 中的基本 Linux 命令行知识

sudo以非 root 用户身份在 Linux 系统上拥有特权

Vim 的基本工作知识

步骤 1:检索并创建资源以启动 EC2 在启动新的 Amazon EC2 实例之前,我们必须从 AWS 账户中检索特定资源信息,我们将使用这些信息来配置我们的 EC2 实例。我们还将创建一些资源,然后才能检索更多信息。我们任务所需的资源如下所列 -

VPC ID — 专用于您的 AWS 账户的虚拟网络的 ID

AMI ID — 包含要启动的软件配置或 EC2 实例的特定模板的 ID

安全组 ID — 控制 EC2 实例进出网络流量的防火墙 ID

密钥对名称— 用于让我们以编程方式访问 AWS 资源的密钥对的名称

检索 VPC ID 要检索我们的 VPC ID,请运行以下命令 -

aws ec2 describe-vpcs 

您的屏幕应显示 VPC 的当前配置。找到并记下您将在其中启动 EC2 实例的 VPC 的“ VpcId ”,如下所示。

在 VPC 中创建新的安全组

我们需要在 VPC 中创建一个新的安全组,以便与 EC2 实例一起使用,以控制进出该实例的网络流量。要成功运行此命令,我们需要提供从上一个命令中检索到的组名称、组描述和VPC ID的信息。 要创建新的安全组,请运行以下命令 -

aws ec2 create-security-group --group-name [group_name] --description "[group_description]"
--vpc-id [vpc_id]

运行命令后,复制并保存 Linux CLI 中显示的安全组 ID,如下所示。
您还可以通过转到 AWS 管理控制台来验证安全组是否已创建。如下所示,名为“proj4cli”的新安全组已创建。

配置安全组的入站(入口)防火墙规则

我们需要在端口 22 上允许“ssh”流量,这样我们才能安全地连接到我们的 EC2 实例来执行任务。我们还需要在端口 80 上允许“http”流量,这样我们才能通过浏览器通过互联网连接到 EC2 实例并请求/获取数据以查看我们的网站。

要在端口 22 上允许“ssh”,请运行以下命令 -

aws ec2 authorize-security-group-ingress --group-id [security_group_id] --protocol tcp --port 22 --cidr 0.0.0.0/0

要在端口 80 上允许“http” ,请运行以下命令 -

aws ec2 authorize-security-group-ingress --group-id [security_group_id] --protocol tcp --port 80 --cidr 0.0.0.0/0

通过导航到 AWS 管理控制台中的 VPC 安全组入站规则来验证端口是否配置正确。您应该看到新配置的开放端口,如下所示。

创建 SSH 密钥对

我们需要创建一个新的密钥对,用于对我们的 EC2 实例进行身份验证。 要创建新的密钥对,请运行以下命令 -

aws ec2 create-key-pair --key-name [group_name]

通过运行以下命令查看密钥对是否已创建 -

aws ec2 describe-key-pairs --key-name [group_name]

获取 Amazon 系统映像 (AMI) ID

我们将使用属于 AWS 免费套餐的 Amazon Linux 2 AMI。要找到 AMI ID,请导航到 AWS 管理控制台中的 EC2 实例仪表板,单击“ AMI 目录”,然后复制并保存 Amazon Linux 2 AMI 的 AMI ID,如下所示。

我们现在已经从 AWS CLI 收集了启动已配置的 EC2 实例所需的所有资源信息,即我们的VPC ID、AMI ID 安全组 ID 和密钥对名称。 现在让我们进入第 2 步。 步骤 2:创建用于引导 EC2 实例的脚本 我们需要在 EC2 实例上安装 Apache Web 服务器,使其能够通过互联网向我们的浏览器提供 HTTP 内容。为此,我们必须创建一个 bash 脚本,通过引导 EC2 实例来安装、启用和启动 Apache Web 服务器。引导是指将脚本添加到 EC2 实例的用户数据中,以便在实例启动时执行的过程。 创建存储 bash 脚本的目录 让我们创建一个新目录,然后通过分别运行以下单独的命令将当前工作目录更改为该目录

mkdir [directory_name]
cd [directory_name]

创建 bash 脚本

我们现在可以通过运行以下命令在 Vim 中创建 bash 脚本 -

sudo vim [script_name.sh]

应会出现一个文本窗口。将以下代码复制并粘贴到文本框中,然后键入:wq! 以保存并退出 Vim。

#!/bin/bash#Update all yum package repositories
yum update -y#Install Apache Web Server
yum install -y httpd.x86_64#Start and Enable Apache Web Server
systemctl start httpd.service
systemctl enable httpd.service

步骤 3:使用 bash 脚本引导的 t2.micro 实例类型启动 EC2 Web 服务器 使用检索和创建的资源信息启动 EC2 Web 服务器 回顾步骤 2 中检索和创建的所有资源信息。我们现在将使用它们以及我们的 bash 脚本来最终启动我们的 EC2 Apache Web 服务器。 要启动我们的 EC2 Web 服务器,请运行以下命令 -

aws ec2 run-instances --image-id [ami_id] --count 1 --instance-type t2.micro --key-name [key_pair_name] --security-group-ids [security_group_id] --user-data file://[script_name.sh]

按下q 退出输出信息屏幕。 现在,通过导航到 AWS 管理控制台中的 EC2 实例仪表板来验证 EC2 实例是否已创建。您应该看到新启动的 EC2 Web 服务器,如下所示。等待几分钟,实例状态将变为“正在运行”。

步骤 4:通过浏览器连接到运行 Apache Web 服务器的 EC2 实例 从 Amazon EC2 仪表板“网络”选项卡中检索 EC2 实例的公共 IP 地址,将其复制并粘贴到您首选浏览器的地址栏中,然后在键盘上按“ Enter ”。您的浏览器应显示 Apache Web 服务器默认网页,如下所示。

成功! 您刚刚完成了“使用 AWS CLI 节省时间”任务!现在,您可以向您的工程师同事展示如何使用 AWS CLI 提高效率并自动在 Amazon EC2 实例上部署 Apache Web 服务器。

所以你已经做到了这一步,嘘……正如承诺的那样……这是秘密步骤—— 使用预配置的 EC2 Web 服务器创建 AMI 我们可以使用之前配置的 EC2 Web 服务器创建自己的 AMI。创建此 AMI 将使我们在启动具有相同配置的其他 EC2 实例时无需重复执行所有先前步骤。 让我向你展示如何实现这一目标—— 步骤 1:检索 EC2 Web 服务器实例 ID 我们需要检索 EC2 Web 服务器实例 ID,该 ID 将在命令中用于创建新 AMI。 要检索我们的 EC2 Web 服务器实例 ID,请运行以下命令 - aws ec2 描述实例 复制并保存您的 EC2 Web 服务器实例 ID。

步骤 2:从我们之前启动的 EC2 Web 服务器创建一个新的 AMI 现在我们知道了要从中创建 AMI 的 EC2 实例 ID,我们可以运行以下命令来实际创建它 -

aws ec2 create-image --instance-id [instance_id] --name "[name_of_AMI]" --description "[AMI_description]"

从 Linux CLI 显示的输出中复制并保存新创建的 AMI ID,如下所示。

通过导航到 AWS 管理控制台中的 EC2 实例仪表板,然后单击“AMI”,验证是否已创建新的 AMI 。您应该会看到新创建的 AMI,如下所示。

步骤 3:从新创建的 AMI 启动 EC2 Web 服务器 要从我们新创建的 AMI 启动具有预配置配置的 EC2 Web 服务器实例,我们可以使用之前的资源信息运行以下命令 -

aws ec2 run-instances --image-id [new_ami_id] --count 1 --instance-type t2.micro --key-name [key_pair_name] --security-group-ids [security_group_id]

再次导航到 AWS 管理控制台中的 EC2 实例仪表板,验证是否已创建 EC2 实例。您应该会看到新启动的 EC2 实例,如下所示。

步骤 4:连接到从 AMI 启动的 EC2 Web 服务器 通过 EC2 实例仪表板从新的 EC2 Web 服务器检索公有 IP 地址。请注意,这将与我们之前启动的 EC2 Web 服务器的公有 IP 地址不同。 复制公网 IP 地址,将其粘贴到您首选浏览器的地址栏中,然后按键盘上的“Enter”。您的浏览器应显示 Apache Web 服务器默认网页,如下所示。

恭喜! 您刚刚完成了“使用 AWS CLI 节省时间”秘密附加步骤!您已成功从预配置的 EC2 Web 服务器创建 AMI,并从中启动了新的 EC2 Web 服务器,同时使用了 AWS CLI。 如果你已经读到这里,谢谢你的阅读!我希望这对你来说是值得的。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UCOSIII内存管理机制详解

目录 前言 1. 内存管理概述 2. 内存区域(存储区)和内存块 3. 存储区控制块(OS_MEM) 4. 内存管理函数 5. 内存碎片问题 6. 注意事项 7.代码实现 7.1创建内存区域 7.2申请内存 7.3释放内存 前言 UCOSIII(即Mi…

c++----简单了解string

大家好,也是好久没有更新了。今天我想与大家分享的是c中常用的便捷的应该库。哈哈。可能大家对我们c的便捷性已经在前面有很多耳闻了。比如我们前面说的类模板。也是很便捷的。但是我们今天这个更加方便了。但缺点就是太多了。经过多年的迭代更新。这个库函数已经很…

2024.8.15(python管理mysql、Mycat实现读写分离)

一、python管理mysql 1、搭建主mysql [rootmysql57 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootmysql57 ~]# cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql [rootmysql57 ~]# rm -rf /etc/my.cnf [rootmysql57 ~]# mkdir /usr/local/mysql…

qt-13 进度条(模态和非模态)

进度条-模态和非模态 progressdlg.hprogressdlg.cppmain.cpp运行图模态非模态 progressdlg.h #ifndef PROGRESSDLG_H #define PROGRESSDLG_H#include <QDialog> #include <QLabel> #include <QLineEdit> #include <QProgressBar> #include <QCombo…

[书生大模型实战营][L0][Task2] Python 开发前置知识

0. 任务&#xff1a;在 InternStudio 环境中实现功能&#xff1a; python 实现 wordcount函数&#xff0c;统计英文字符串单词的使用频率&#xff0c;并返回字典&#xff1b;vscode 远程调试 InternStudio 中的 python 代码 1. wordcount 函数实现 string.punctuation 是一个…

一键切换全球优质Linux 系统软件源及 Docker 源,轻松安装 Docker —— 适配广泛、零门槛、超强功能的开源脚本!

概述 linuxMirrors开源脚本为 GNU/Linux 系统用户提供了强大的工具,帮助用户轻松更换系统软件源并安装 Docker。脚本适配了多种国内外镜像站,经过测试具备良好的下载速度和 IPv6 兼容性,并且还包括了中国大陆教育网镜像站的选项。无需技术背景,文档提供了详尽的操作指引和常…

机器学习(3)-- 一元线性回归

文章目录 线性回归训练模型测试模型线性回归方程测试实用性 总结 线性回归 线性回归算法是一种用于预测一个或多个自变量&#xff08;解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间关系的统计方法。这种方法基于线性假设&#xff0c;即因变量是自变量的线…

【网络安全】重置密码token泄露,实现账户接管

未经许可&#xff0c;不得转载。 文章目录 正文 正文 对某站点测试过程中&#xff0c;登录账户触发忘记密码功能点&#xff0c;其接口、请求及响应如下&#xff1a; PUT /api/v1/people/forgot_password 可以看到&#xff0c;重置密码token和密码哈希均在响应中泄露。 删除co…

【C#】虚部与实部

实数是数学中的一个基本概念&#xff0c;它包括了所有的有理数和无理数。实数集合是连续的&#xff0c;可以表示为数轴上的每一个点。 复数是实数的扩展&#xff0c;它允许进行除零以外的所有基本算术运算。复数由两部分组成&#xff1a;实部和虚部。 实部&#xff08;Real P…

【MySQL 07】表的增删查改 (带思维导图)

文章目录 &#x1f308; 一、insert 添加数据⭐ 1. 单行数据 全列插入⭐ 2. 多行数据 指定列插入⭐ 3. 插入否则更新⭐4. 插入否则替换 &#x1f308; 二、select 查询数据⭐ 1. select 列&#x1f319; 1.1 全列查询&#x1f319; 1.2 指定列查询&#x1f319; 1.3 查询字段…

Prettier+Vscode setting提高前端开发效率

文章目录 前言Prettier第一步&#xff1a;下载依赖&#xff08;团队合作&#xff09;或下载插件&#xff08;独立开发&#xff09;第二步&#xff1a;添加.prettierrc.json文件**以下是我使用的****配置规则** 第三步&#xff1a;添加.prettierignore文件**以下是我常用的****配…

OpenCV图像滤波(20)模糊处理函数stackBlur()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 stackBlur() 函数用于对图像进行模糊处理。该函数对图像应用了 stackBlur 技术。stackBlur 可以生成与高斯模糊相似的结果&#xff0c;而且随着模…

C++ 左值引用与右值引用超详解

目录 一 左值与右值 1.左值 2.右值 3.总结 二 左值引用与右值引用 1.左值引用 2.右值引用 3.总结与探究 3.1右值引用可以修改么&#xff1f;取地址么&#xff1f; 3.2左值引用与右值引用转化 左值引用 引用 右值 右值引用 引用 左值 3.3左值引用与右值引用相同之处 3.4左值…

栈与队列 - 逆波兰表达式求值

150. 逆波兰表达式求值 方法一&#xff1a;栈 /*** param {string[]} tokens* return {number}*/ var evalRPN function(tokens) {const stack [];for (const token of tokens) {if (isNaN(Number(token))) { // 非数字const n2 stack.pop(); // 出栈两个数字const n1 s…

【Unity开发】几种空值判断的性能测试

【Unity开发】几种空值判断的性能测试&#xff09; 项目优化过程中&#xff0c;一个非常细节的优化&#xff0c;就是在项目数据处理过程中&#xff0c;会用大量的null和“”空值的判断&#xff0c;参考了一些网友说的性能差别很大&#xff0c;是不是真的需要优化的问题&#xf…

16:【stm32】I2C的使用一:I2C片上外设的使用

I2C 1、片上外设1.1&#xff1a;寄存器与内部结构 2、通过I2C向外发送数据2.1&#xff1a;I2C的初始化2.1.1&#xff1a;初始化SCL和SDA2.1.2&#xff1a;使能时钟PCLK1&#xff08;APB1&#xff09;2.1.3&#xff1a;配置I2C1的参数 2.2&#xff1a;发送数据2.2.1&#xff1a;…

Ⅰ、基于 WebGPU 从 0 到 1 渲染 GLTF:第一个三角形

Ⅰ、基于 WebGPU 从 0 到 1 渲染 GLTF&#xff1a;第一个三角形 WebGPU 是一种面相网页的现代图形 API&#xff0c;由主要浏览器供应商开发。与 WebGL 相比&#xff0c;WebGPU 对 GPU 提供了更直接的控制&#xff0c;使应用程序能更有效地利用硬件&#xff0c;类似于 Vulkan 和…

如何在C++ QT 程序中集成cef3浏览器组件去显示网页?

目录 1、问题描述 2、为什么选择cef3浏览器组件 3、cef3组件的介绍与下载 4、将cef3组件封装成sdk 5、如何使用cef3组件加载web页面 5.1、了解CefApp与CefClient 5.2、初始化与消息循环 5.3、如何创建浏览器 5.4、重载CefClient类 6、在qt客户端集成cef组件 7、最后…

「12月·长沙」第三届传感、测量、通信和物联网技术国际会议(SMC-IoT 2024)

第三届传感、测量、通信和物联网技术国际会议&#xff08;SMC-IoT 2024&#xff09;将于2024年11月29日-2024年12月1日召开&#xff0c;由湖南涉外经济学院主办。会议中发表的文章将会被收录, 并于见刊后提交EI核心索引。 会议旨在围绕传感、测量、通信和物联网技术等相关研究…

基于node.js的宠物寄存管理系统,基于express的宠物寄存系统

摘 要 伴随着社会以及科学技术的发展&#xff0c;互联网已经渗透在人们的身边&#xff0c;网络慢慢的变成了人们的生活必不可少的一部分&#xff0c;紧接着网络飞速的发展&#xff0c;系统管理这一名词已不陌生&#xff0c;越来越多的宠物店等机构都会定制一款属于自己个性化…