<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>云计算 on MentalityXt</title><link>http://xtpol.com/zh/tags/%E4%BA%91%E8%AE%A1%E7%AE%97/</link><description>Recent content in 云计算 on MentalityXt</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 03 Mar 2025 23:26:00 +0800</lastBuildDate><atom:link href="http://xtpol.com/zh/tags/%E4%BA%91%E8%AE%A1%E7%AE%97/index.xml" rel="self" type="application/rss+xml"/><item><title>AWS 云基础概念</title><link>http://xtpol.com/zh/p/aws-cloud-basics/</link><pubDate>Mon, 03 Mar 2025 23:26:00 +0800</pubDate><guid>http://xtpol.com/zh/p/aws-cloud-basics/</guid><description>&lt;h2 id="aws准备工作"&gt;&lt;a href="#aws%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;AWS准备工作&#10;&lt;/h2&gt;&lt;p&gt;(先创建一个账户 登陆上AWS 记住刚创建是以ROOT的身份登录的)&lt;/p&gt;&#10;&lt;h2 id="iam"&gt;&lt;a href="#iam" class="header-anchor"&gt;&lt;/a&gt;IAM&#10;&lt;/h2&gt;&lt;p&gt;比如inux或者windows，他们都有一个最高权限的账户 root/administrator，这里也有，感觉有点类似于域的概念，AWS最高权限是ROOT，他有全部权限什么都可以操控，但是如果一直用root大家也知道，如果被黑别人都不用提权了，啥都有了，所以有了IAM。&lt;/p&gt;&#10;&lt;p&gt;而IAM呢，你可以创建一个用户并给它分配一个服务，比如我想给他分配一个S3的服务权限，那么会要求你设置账号密码，然后给你生成一个专属的URL，你可以通过这个URL登录这个账户，也称之为IAM账户，你在本地搭建tomcat或者nginx等服务的时候，一般启动这些服务的用户都是www-data，实际上就类似于这个，而像域的概念是因为，作为ROOT你可以修改很多东西，如下图。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0001.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;你可以创建用户组，用户，角色，策略等等，感觉和域的概念很像，其实linux/windows都一样，角色分配也可以，策略也能做，像是做基线的感觉，只是这里是统一化管理，像是分发的感觉，而不是在同一台机器上操作，所以感觉像域控，为了后续的学习，这里需要创建一个管理员账户。&lt;/p&gt;&#10;&lt;h3 id="创建账户"&gt;&lt;a href="#%e5%88%9b%e5%bb%ba%e8%b4%a6%e6%88%b7" class="header-anchor"&gt;&lt;/a&gt;创建账户&#10;&lt;/h3&gt;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0002.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;提供 AWS 管理控制台访问就是让 IAM 用户可以通过 Web 页面（AWS 控制台）操作，而不仅仅是使用 API，这里全部开启，学习阶段web和api都要了解。&lt;/p&gt;&#10;&lt;p&gt;点击下一步 会到设置权限处&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0003.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;直接创建一个组，权限就选第一个，这里是为了创建一个拥有administrator权限的组，如果以后还想创建administrator权限的用户就可以直接丢进这个组，当然如果不考虑以后，可以自行点击最右边的&lt;strong&gt;直接附加策略&lt;/strong&gt;，附加上去一个administratoraccess就行(跟windows/linux账户管理的架构其实非常非常像)&lt;/p&gt;&#10;&lt;p&gt;这个页面最下面其实还有一个设置边界权限，其实也很好理解，adminisratoraccess是不是有了全部的权限，如果我想让某个 IAM 用户只能管理 EC2，而不能管理 S3，即使他加入了管理员组，就可以在这里设置。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0004.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;这里我们用不到，直接下一步就行。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0005.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;这里仅仅是添加标签，类似于用户组还有用户的描述把。直接点击创建用户。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0006.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="角色"&gt;&lt;a href="#%e8%a7%92%e8%89%b2" class="header-anchor"&gt;&lt;/a&gt;角色&#10;&lt;/h3&gt;&lt;p&gt;介绍一下角色这个模块&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0007.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;正常会生成两个默认角色 主要是有个ARN&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0008.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;每个角色都有一个ARN 类似于linux的/etc/passwd以及windows的SID把 目前了解到的概念就是 如果要学习云渗透 就必须了解这个IAM角色的概念 后续提权会用到这里&#10;我了解到的概念就是：IAM 角色可以让 AWS 服务（如 EC2, Lambda）自动访问 AWS 资源，而不需要 API Key。其实也就是一个服务如果需要另一个服务的资源就可以设置这个，访问如下&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl http://169.254.169.254/latest/meta-data/iam/security-credentials/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;可以获得临时凭证，但是如果你把这个角色给了EC2，你就必须在登录EC2的状态下才可以访问这个URL，同时可以获得一个临时的凭据，而且这是一个特殊的IP(169.254.169.254)，仅对当前实例EC2可见，外部无法访问，IMDS自动识别你的 EC2 实例，并返回当前绑定的IAM角色的临时凭证。&lt;/p&gt;&#10;&lt;p&gt;理解就是非常安全和方便，如果像上面一样用APIKEY来访问服务，而APIKEY又是一个长期存在的东西，如果被盗了就很容易被攻击者长期持有，而这个一般只存活一个小时，后续就算拿到了凭证也无法登陆了，无法持久化的去操控。&lt;/p&gt;&#10;&lt;h3 id="iam渗透进阶暂停"&gt;&lt;a href="#iam%e6%b8%97%e9%80%8f%e8%bf%9b%e9%98%b6%e6%9a%82%e5%81%9c" class="header-anchor"&gt;&lt;/a&gt;IAM渗透进阶(暂停)&#10;&lt;/h3&gt;&lt;p&gt;基础概念学完了 接下来关于渗透部分还有下面这些 目前留空因为还没开始学渗透 把大纲放在这&lt;/p&gt;&#10;&lt;p&gt;1️⃣ 识别 IAM 账户信息&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;aws sts get-caller-identity&lt;/code&gt; 获取当前 IAM 账户信息&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;aws iam list-users&lt;/code&gt; 及 &lt;code&gt;aws iam list-roles&lt;/code&gt; 识别账户内用户和角色&lt;/li&gt;&#10;&lt;li&gt;通过 IAM ARN 判断 AWS 账户归属&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;2️⃣ IAM 权限提升（Privilege Escalation）&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;iam:AttachUserPolicy&lt;/code&gt; 绑定管理员权限 (&lt;code&gt;AdministratorAccess&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;sts:AssumeRole&lt;/code&gt; 切换到更高权限的角色&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;iam:CreateAccessKey&lt;/code&gt; 创建新 API Key 访问 AWS&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;iam:PassRole&lt;/code&gt; + &lt;code&gt;ec2:RunInstances&lt;/code&gt; 通过 EC2 绑定高权限角色&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;3️⃣ 利用 IAM 角色&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;aws sts assume-role&lt;/code&gt; 获取临时权限&lt;/li&gt;&#10;&lt;li&gt;读取 EC2 实例的 IAM 角色 (&lt;code&gt;169.254.169.254/latest/meta-data/iam/security-credentials/&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;SSRF 读取 IAM 角色凭证（IMDS v1 漏洞）&lt;/li&gt;&#10;&lt;li&gt;IMDS v2 保护机制及绕过方法&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;4️⃣ IAM 访问策略分析&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;解析 &lt;code&gt;aws iam list-policies&lt;/code&gt; 获取的策略内容&lt;/li&gt;&#10;&lt;li&gt;JSON 格式的 IAM 策略解读&lt;/li&gt;&#10;&lt;li&gt;通过 &lt;code&gt;aws iam get-policy-version&lt;/code&gt; 查看策略版本历史&lt;/li&gt;&#10;&lt;li&gt;发现过度授权的 IAM 角色（Overly Permissive Policies）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;5️⃣ IAM 角色滥用&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;aws iam list-attached-role-policies&lt;/code&gt; 检查 IAM 角色的附加策略&lt;/li&gt;&#10;&lt;li&gt;通过 &lt;code&gt;sts assume-role&lt;/code&gt; 获取跨账户访问权限&lt;/li&gt;&#10;&lt;li&gt;发现外部身份提供者（OIDC/SAML）配置错误&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;6️⃣ IAM 账户访问 AWS 资源&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;aws s3 ls&lt;/code&gt; 枚举 IAM 账户对 S3 的访问权限&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;aws ec2 describe-instances&lt;/code&gt; 检查 EC2 资源访问情况&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;aws lambda list-functions&lt;/code&gt; 查看 Lambda 函数绑定的 IAM 角色&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;7️⃣ IAM 账户数据泄露&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;公开 S3 存储桶 (&lt;code&gt;aws s3 ls s3://target-bucket --no-sign-request&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;CloudFormation/Terraform 配置文件泄露&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;aws iam get-account-authorization-details&lt;/code&gt; 获取 IAM 账户权限详情&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;aws iam list-access-keys&lt;/code&gt; 检查 AWS API Key 泄露&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;8️⃣ 防御与检测&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;监控 AWS CloudTrail 日志，检测 IAM 账户滥用&lt;/li&gt;&#10;&lt;li&gt;AWS GuardDuty 监测异常 IAM 行为&lt;/li&gt;&#10;&lt;li&gt;限制 IAM 角色的 &lt;code&gt;sts:AssumeRole&lt;/code&gt; 访问范围&lt;/li&gt;&#10;&lt;li&gt;启用 IAM 访问分析器（IAM Access Analyzer）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="ec2"&gt;&lt;a href="#ec2" class="header-anchor"&gt;&lt;/a&gt;EC2&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;你可以把 EC2 理解为 AWS 提供的“云端虚拟机”&lt;/strong&gt;，主要包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;实例（Instance）&lt;/strong&gt;：一台云服务器，可以启动、停止、重启。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;AMI（Amazon Machine Image）&lt;/strong&gt;：EC2 的操作系统镜像，比如 Ubuntu、Amazon Linux、Windows Server。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;实例类型（Instance Type）&lt;/strong&gt;：决定 CPU、内存、带宽，比如 &lt;code&gt;t2.micro&lt;/code&gt;（免费）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;EBS（Elastic Block Store）&lt;/strong&gt;：EC2 的硬盘存储，相当于云端磁盘。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;安全组（Security Group）&lt;/strong&gt;：EC2 的防火墙规则，控制允许哪些 IP 访问。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;公有 IP &amp;amp; 私有 IP&lt;/strong&gt;：&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;公有 IP：互联网上可以直接访问的 IP。&lt;/li&gt;&#10;&lt;li&gt;私有 IP：只能在 VPC（AWS 内部网络）中访问。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;直接创建一个实例 search EC2找到直接进入创建页面 配置如下就行了 用免费版本的话实例一个月不超过750小时就免费 750个小时相当于31天多了 肯定会有疑问 直接写免费不就行了吗 但是EC2支持创建多个实例 创建两个 那每个就只允许开375个小时了 配置如下(因为国外大部分用的都是 Amazon Linux 而且集成也方便 所以这里创建这个 还可以学习一下AmazonLinux和普通不一样的地方)&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0009.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0010.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0011.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0012.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;到此就可以了 用SSH连上去就行 主要是知道EC2是什么 体验一下就行&lt;/p&gt;&#10;&lt;p&gt;还有一个 Security Group 这个跟你在国内的aliyun之类的非常像，只不过aliyun那些会自动把这个防火墙给你开启，导致你在本机开了端口还要去aliyunweb页面开端口，感觉就是一个防火墙。&lt;/p&gt;&#10;&lt;p&gt;接着是一个EBS，我对他的理解就是类似于vmware虚拟机，当你需要给你的虚拟化的vpc扩充硬盘的时候，可以挂载一个上去，当然这个硬盘是虚拟化的，他不会消失，就相当于又插上去了一个硬盘，可以独立存储东西，很方便，就是一个独立的云硬盘。&lt;/p&gt;&#10;&lt;p&gt;这可能就是云服务的概念，而EFS呢，是通过NFS共享的硬盘，就是不知道通信会不会卡，不过这样确实挺不错的。&lt;/p&gt;&#10;&lt;h2 id="s3"&gt;&lt;a href="#s3" class="header-anchor"&gt;&lt;/a&gt;S3&#10;&lt;/h2&gt;&lt;p&gt;S3 是对象存储，不是传统的文件系统&lt;/p&gt;&#10;&lt;p&gt;实际利用比如aliyun已经有很多了，比如常见你文件上传的时候，他会上传到oss服务，读取文件也是从那边读的，相当于你怎么上传都传不到服务器本地，而是其他的云端。我感觉这个S3其实跟OSS没啥区别。&lt;/p&gt;&#10;&lt;h3 id="s3-与-oss-的不同点"&gt;&lt;a href="#s3-%e4%b8%8e-oss-%e7%9a%84%e4%b8%8d%e5%90%8c%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;S3 与 OSS 的不同点&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;特性&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;AWS S3&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;阿里云 OSS&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;存储桶名称&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;全局唯一&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;同区域唯一&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;区域限制&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;必须选择 AWS 区域（如 us-east-1）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;必须选择阿里云区域（如 cn-hangzhou）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;存储类型&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;标准（Standard）、低频（IA）、Glacier&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;标准、低频、归档、冷归档&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;API 兼容性&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;S3 API&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;部分兼容 S3 API，但有阿里云专有 API&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;默认访问权限&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;默认私有，需要手动修改&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;默认私有，需要手动修改&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;跨区域复制&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;支持跨 AWS 区域复制&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;支持跨阿里云区域复制&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;默认是私有的 你可以存一些备份资料什么的，其他人也看不见，接下来操作S3的话，需要学习创建S3存储桶，通过URL和AWSCLI进行操作尝试。&lt;/p&gt;&#10;&lt;h3 id="创建s3存储桶"&gt;&lt;a href="#%e5%88%9b%e5%bb%bas3%e5%ad%98%e5%82%a8%e6%a1%b6" class="header-anchor"&gt;&lt;/a&gt;创建S3存储桶&#10;&lt;/h3&gt;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0013.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;配置如下&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0014.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0015.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0016.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;创建好之后找到创建的存储桶 随便传上去一个文件&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0017.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;然后再存储桶策略处写入下面的策略&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Version&amp;#34;: &amp;#34;2012-10-17&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Statement&amp;#34;: [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Effect&amp;#34;: &amp;#34;Allow&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Principal&amp;#34;: &amp;#34;*&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Action&amp;#34;: &amp;#34;s3:GetObject&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Resource&amp;#34;: &amp;#34;arn:aws:s3:::mentalityxttest/*&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;因为默认情况下 只允许当前用户访问上传的资源 但是目前为了学习 全部开放比较好 所以允许存储桶策略控制之后 还要写规则来允许外部访问存储桶 至此就可以访问到图片了&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0018.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="aws-cli"&gt;&lt;a href="#aws-cli" class="header-anchor"&gt;&lt;/a&gt;AWS CLI&#10;&lt;/h3&gt;&lt;h4 id="先检查-aws-cli-是否安装"&gt;&lt;a href="#%e5%85%88%e6%a3%80%e6%9f%a5-aws-cli-%e6%98%af%e5%90%a6%e5%ae%89%e8%a3%85" class="header-anchor"&gt;&lt;/a&gt;先检查 AWS CLI 是否安装&#10;&lt;/h4&gt;&lt;p&gt;执行：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;如果没有安装，可以参考官方文档：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Linux/macOS&lt;/strong&gt;:&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl &amp;#34;https://awscli.amazonaws.com/AWSCLIV2.pkg&amp;#34; -o &amp;#34;AWSCLIV2.pkg&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo installer -pkg AWSCLIV2.pkg -target /&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: 下载 AWS CLI&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="配置-aws-cli绑定你的-aws-账户"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae-aws-cli%e7%bb%91%e5%ae%9a%e4%bd%a0%e7%9a%84-aws-%e8%b4%a6%e6%88%b7" class="header-anchor"&gt;&lt;/a&gt;配置 AWS CLI（绑定你的 AWS 账户）&#10;&lt;/h4&gt;&lt;p&gt;你需要配置 &lt;strong&gt;Access Key 和 Secret Key&lt;/strong&gt;（可以在 IAM 里创建），然后执行：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws configure&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;然后按提示输入：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;AWS Access Key ID&lt;/strong&gt;：你的 AWS 访问密钥&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;AWS Secret Access Key&lt;/strong&gt;：你的 AWS 密钥&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Default region name&lt;/strong&gt;：&lt;code&gt;ap-southeast-1&lt;/code&gt;（你选的区域）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Default output format&lt;/strong&gt;：&lt;code&gt;json&lt;/code&gt;（默认 JSON，推荐）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0019.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;区域在主页 两个key都在用户的访问密钥处&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0020.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h4 id="s3-cli-常用操作"&gt;&lt;a href="#s3-cli-%e5%b8%b8%e7%94%a8%e6%93%8d%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;S3 CLI 常用操作&#10;&lt;/h4&gt;&lt;p&gt;下面是 S3 常用命令，结合你学习的存储桶权限，可以直接在终端测试操作！&lt;/p&gt;&#10;&lt;p&gt;创建 S3 存储桶&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 mb s3://your-bucket-name&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;mb&lt;/code&gt; = make bucket（创建存储桶）&lt;/p&gt;&#10;&lt;p&gt;列出存储桶&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 ls&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;上传文件到 S3&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 cp localfile.jpg s3://your-bucket-name/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;cp&lt;/code&gt; = copy（拷贝文件）&lt;/p&gt;&#10;&lt;p&gt;如果想递归上传整个文件夹：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 cp ./my-folder s3://your-bucket-name/ --recursive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;下载 S3 的文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 cp s3://your-bucket-name/3.jpg ./localfile.jpg&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;列出存储桶中的文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 ls s3://your-bucket-name/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;删除 S3 存储桶中的文件&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 rm s3://your-bucket-name/3.jpg&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;删除整个存储桶&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 rb s3://your-bucket-name --force&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;rb&lt;/code&gt; = remove bucket，&lt;code&gt;--force&lt;/code&gt; 代表删除所有内容后再删除存储桶。&lt;/p&gt;&#10;&lt;h2 id="lambda"&gt;&lt;a href="#lambda" class="header-anchor"&gt;&lt;/a&gt;Lambda&#10;&lt;/h2&gt;&lt;p&gt;Lambda 就是 &lt;strong&gt;一个能自动运行的代码托管环境&lt;/strong&gt;，它的作用类似：你写了一段 Python 代码 → &lt;strong&gt;但不需要开服务器运行&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;事件触发器（Event Source）&lt;/strong&gt;：Lambda 代码什么时候执行？&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;S3 事件&lt;/strong&gt;（上传文件后自动执行 Lambda）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;API Gateway&lt;/strong&gt;（用户访问 API 时触发）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CloudWatch 事件&lt;/strong&gt;（定时触发）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;SNS / SQS 消息&lt;/strong&gt;（消息触发 Lambda）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;运行环境（Runtime）&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Lambda &lt;strong&gt;支持多种语言&lt;/strong&gt;（Python、Node.js、Go、Java、C#、Ruby）。&lt;/li&gt;&#10;&lt;li&gt;你需要选择一个&lt;strong&gt;运行时&lt;/strong&gt;，比如 &lt;code&gt;Python 3.9&lt;/code&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;执行时间限制&lt;/strong&gt;：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Lambda &lt;strong&gt;最大执行时间 15 分钟&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;代码执行时间越长，费用越高。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;直接搜索Lambda就能找到 在刚开始进入的时候 会有教程按个走就行了 慢慢看&#10;其中比较有意思的是响应事件 正如上面列出来的一样 S3事件API事件都可以触发Lambda函数 挺有意思的&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0021.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;默认就可以了 先添加一个触发器 主要是熟悉一下流程就行&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0022.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0023.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;开始测试 上传一个文件到S3&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 cp .\3.jpg s3://*********/3.jpg&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0024.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;可以看到触发了&lt;/p&gt;&#10;&lt;p&gt;当然可以到 &lt;strong&gt;CloudWatch&lt;/strong&gt; 看详细信息&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0025.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0026.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;具体的事件 当然我们只能看到他被触发了 无法确定是由什么事件出发的 结果是什么&lt;/p&gt;&#10;&lt;p&gt;回到Lambda 写入如下代码点击 Deploy 保存代码&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def lambda_handler(event, context):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(&amp;#34;=== Lambda 被触发 ===&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(json.dumps(event, indent=4)) # 打印触发 Lambda 的事件&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; response = {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;statusCode&amp;#39;: 200,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;body&amp;#39;: json.dumps(&amp;#39;Lambda 运行成功&amp;#39;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(&amp;#34;=== Lambda 返回值 ===&amp;#34;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; print(json.dumps(response, indent=4)) # 打印 Lambda 返回的结果&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return response&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;重新触发一次 不论是上传文件触发事件 还是 点击测试代码都可以触发&lt;/p&gt;&#10;&lt;p&gt;这里是点击测试代码的日志 可以看到 返回值的json跟测试里面的json一模一样 被记录下来了&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0027.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;这里是上传文件到S3存储桶出发的日志 里面有详细的awscli的模块 也有上传文件的名称 也有存储桶的名称还有文件大小等等&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0028.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;event&lt;/code&gt;（事件数据）&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;event&lt;/code&gt; 是 AWS 触发 Lambda &lt;strong&gt;时自动传进来的数据&lt;/strong&gt;，比如：&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;S3 触发 Lambda&lt;/strong&gt;，&lt;code&gt;event&lt;/code&gt; 里会包含 &lt;strong&gt;上传的文件名、存储桶名&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;API Gateway 触发 Lambda&lt;/strong&gt;，&lt;code&gt;event&lt;/code&gt; 里会包含 &lt;strong&gt;HTTP 请求信息&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CloudWatch 触发 Lambda&lt;/strong&gt;，&lt;code&gt;event&lt;/code&gt; 里会包含 &lt;strong&gt;定时任务信息&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;故此我们输出了event才有s3存储桶的很多信息 包括上传者的IP都有&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;context&lt;/code&gt;（执行环境）&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;context&lt;/code&gt; 不是事件数据，而是 &lt;strong&gt;AWS 运行 Lambda 时的一些环境信息&lt;/strong&gt;，比如：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;context.function_name&lt;/code&gt; → &lt;strong&gt;Lambda 函数名称&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;context.memory_limit_in_mb&lt;/code&gt; → &lt;strong&gt;分配的内存&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;context.aws_request_id&lt;/code&gt; → &lt;strong&gt;当前请求的 ID&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;context.get_remaining_time_in_millis()&lt;/code&gt; → &lt;strong&gt;Lambda 剩余的运行时间&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;context包含如上 如果想看一下 也可以放到函数里面进行调用&lt;/p&gt;&#10;&lt;h3 id="aws-cli-1"&gt;&lt;a href="#aws-cli-1" class="header-anchor"&gt;&lt;/a&gt;AWS CLI&#10;&lt;/h3&gt;&lt;p&gt;首先，确保你已经正确 &lt;strong&gt;配置 AWS CLI&lt;/strong&gt;（&lt;code&gt;aws configure&lt;/code&gt;），并且有足够的权限。&lt;/p&gt;&#10;&lt;h4 id="列出所有-lambda-函数"&gt;&lt;a href="#%e5%88%97%e5%87%ba%e6%89%80%e6%9c%89-lambda-%e5%87%bd%e6%95%b0" class="header-anchor"&gt;&lt;/a&gt;列出所有 Lambda 函数&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda list-functions&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;这个命令会返回你的 Lambda 函数列表&lt;/strong&gt;，你应该会看到 &lt;code&gt;MyFirstFunction&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h4 id="获取-lambda-详细信息"&gt;&lt;a href="#%e8%8e%b7%e5%8f%96-lambda-%e8%af%a6%e7%bb%86%e4%bf%a1%e6%81%af" class="header-anchor"&gt;&lt;/a&gt;获取 Lambda 详细信息&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda get-function --function-name MyFirstFunction&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;查看 Lambda 代码存储位置、运行时（Python 3.9）、执行角色等信息&lt;/strong&gt;。&#10;&lt;strong&gt;还会返回代码的ZIP压缩包的连接，可以下载。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h4 id="手动调用-lambda"&gt;&lt;a href="#%e6%89%8b%e5%8a%a8%e8%b0%83%e7%94%a8-lambda" class="header-anchor"&gt;&lt;/a&gt;手动调用 Lambda&#10;&lt;/h4&gt;&lt;p&gt;你可以用 CLI 直接触发 Lambda（相当于控制台的“测试”功能）。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda invoke \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --function-name MyFirstFunction \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --payload &amp;#39;{&amp;#34;key1&amp;#34;: &amp;#34;value1&amp;#34;, &amp;#34;key2&amp;#34;: &amp;#34;value2&amp;#34;}&amp;#39; \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cli-binary-format raw-in-base64-out \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; response.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda invoke --function-name MyFirstFunction --payload &amp;#34;{\&amp;#34;key1\&amp;#34;: \&amp;#34;value1\&amp;#34;, \&amp;#34;key2\&amp;#34;: \&amp;#34;value2\&amp;#34;}&amp;#34; response.json --cli-binary-format raw-in-base64-out&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Lambda 运行完后，结果会存到&lt;/strong&gt; &lt;code&gt;response.json&lt;/code&gt;&lt;strong&gt;文件&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;如果用的是 AWS CLI v2 新版本的 需要在后面加上 &amp;ndash;cli-binary-format raw-in-base64-out 让 AWS CLI 不做 base64 编码，直接发送 JSON 作为请求体，Lambda 就能正确解析了。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;查看结果&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat response.json&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;你应该会看到：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;statusCode&amp;#34;: 200,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;body&amp;#34;: &amp;#34;\&amp;#34;Lambda 运行成功\&amp;#34;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;如果你的 Lambda 代码会打印 &lt;code&gt;event&lt;/code&gt;，你也会看到它解析输入数据的日志。&lt;/p&gt;&#10;&lt;h4 id="更新-lambda-代码"&gt;&lt;a href="#%e6%9b%b4%e6%96%b0-lambda-%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;更新 Lambda 代码&#10;&lt;/h4&gt;&lt;p&gt;假设你有一个新的 &lt;code&gt;lambda_function.py&lt;/code&gt;，可以这样上传：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zip function.zip lambda_function.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda update-function-code \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --function-name MyFirstFunction \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --zip-file fileb://function.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;这个命令会 &lt;strong&gt;直接更新 Lambda 代码&lt;/strong&gt;，你不需要去 AWS 控制台手动上传。&lt;/p&gt;&#10;&lt;h4 id="更新-lambda-配置"&gt;&lt;a href="#%e6%9b%b4%e6%96%b0-lambda-%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;更新 Lambda 配置&#10;&lt;/h4&gt;&lt;p&gt;如果你想 &lt;strong&gt;修改 Lambda 运行时、内存、超时时间&lt;/strong&gt;，可以：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda update-function-configuration \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --function-name MyFirstFunction \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --memory-size 256 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --timeout 30&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;这里把 Lambda 的 &lt;strong&gt;内存改为 256MB，超时时间改为 30 秒&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h4 id="删除-lambda-函数"&gt;&lt;a href="#%e5%88%a0%e9%99%a4-lambda-%e5%87%bd%e6%95%b0" class="header-anchor"&gt;&lt;/a&gt;删除 Lambda 函数&#10;&lt;/h4&gt;&lt;p&gt;如果你不需要这个 Lambda 了，可以删除：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda delete-function --function-name MyFirstFunction&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意：这个操作是不可逆的！&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h4 id="编写上传-lambda代码"&gt;&lt;a href="#%e7%bc%96%e5%86%99%e4%b8%8a%e4%bc%a0-lambda%e4%bb%a3%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;编写上传 Lambda代码&#10;&lt;/h4&gt;&lt;p&gt;基础编写就不提了 进阶会提到boto3这个库 需要学习&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def lambda_handler&lt;span class="o"&gt;(&lt;/span&gt;event, context&lt;span class="o"&gt;)&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# TODO implement&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;statusCode&amp;#39;&lt;/span&gt;: 200,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;body&amp;#39;&lt;/span&gt;: json.dumps&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hello from Lambda!&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;zip &lt;span class="k"&gt;function&lt;/span&gt;.zip lambda_function.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws lambda create-function &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --function-name BackdoorLambda &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --runtime python3.8 &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --role arn:aws:iam::&amp;lt;ACCOUNT_ID&amp;gt;:role/&amp;lt;HIGH_PRIV_ROLE&amp;gt; &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --handler lambda_function.lambda_handler &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --zip-file fileb://function.zip&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="cloudtrail"&gt;&lt;a href="#cloudtrail" class="header-anchor"&gt;&lt;/a&gt;CloudTrail&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;CloudTrail = AWS 账户的操作记录系统&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;记录xxxx谁（用户、角色、服务）在 AWS 做了什么（创建、修改、删除资源）。&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;记录xxxx什么时候、从哪里（IP 地址、地理位置）访问了 AWS。&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;记录xxxxAPI 调用（通过 AWS 控制台、CLI、SDK 执行的所有操作）。&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;简单理解： CloudTrail 就像 AWS 账户的“黑匣子”，能记录所有 AWS 操作，帮助你 排查问题 &amp;amp; 发现异常。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;主要是行为审计，非常像堡垒机对运维人员的任何行为做出的审计记录，&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0029.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;随便创建一个进来就能看到了，这里面都能看到，但是比如调用S3的接口执行ls或者下载文件的话，是不会被记录的，因为没有开，如下图 数据事件处是可以开的，但是要收费，就不管了，实际上知道怎么调用接口之类的就行了，下面看一下AWSCLI。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0030.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="aws-cli-2"&gt;&lt;a href="#aws-cli-2" class="header-anchor"&gt;&lt;/a&gt;AWS CLI&#10;&lt;/h3&gt;&lt;h4 id="查询最近的-cloudtrail-事件"&gt;&lt;a href="#%e6%9f%a5%e8%af%a2%e6%9c%80%e8%bf%91%e7%9a%84-cloudtrail-%e4%ba%8b%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;查询最近的 CloudTrail 事件&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --max-results 10&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;查询最近 10 个事件，默认是 &lt;strong&gt;所有管理事件&lt;/strong&gt;（不包含 S3 数据事件）。&lt;/p&gt;&#10;&lt;h4 id="按事件名称查询"&gt;&lt;a href="#%e6%8c%89%e4%ba%8b%e4%bb%b6%e5%90%8d%e7%a7%b0%e6%9f%a5%e8%af%a2" class="header-anchor"&gt;&lt;/a&gt;按事件名称查询&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=CreateBucket&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;过滤出所有 &lt;code&gt;CreateBucket&lt;/code&gt; 事件（即创建 S3 存储桶的操作）。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=GetObject&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;尝试查找 S3 文件下载（&lt;code&gt;GetObject&lt;/code&gt;）事件，前提是你&lt;strong&gt;已经启用了 S3 数据事件&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h4 id="按-iam-用户查询"&gt;&lt;a href="#%e6%8c%89-iam-%e7%94%a8%e6%88%b7%e6%9f%a5%e8%af%a2" class="header-anchor"&gt;&lt;/a&gt;按 IAM 用户查询&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=MentalityXt --max-results 10&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;查找 &lt;strong&gt;MentalityXt 用户最近 10 个操作&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h4 id="按资源名称查询"&gt;&lt;a href="#%e6%8c%89%e8%b5%84%e6%ba%90%e5%90%8d%e7%a7%b0%e6%9f%a5%e8%af%a2" class="header-anchor"&gt;&lt;/a&gt;按资源名称查询&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=mentalityxttest&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;过滤出所有操作 &lt;strong&gt;mentalityxttest S3 存储桶&lt;/strong&gt; 的事件。&lt;/p&gt;&#10;&lt;h4 id="按时间范围查询"&gt;&lt;a href="#%e6%8c%89%e6%97%b6%e9%97%b4%e8%8c%83%e5%9b%b4%e6%9f%a5%e8%af%a2" class="header-anchor"&gt;&lt;/a&gt;按时间范围查询&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail lookup-events --start-time &amp;#34;2025-03-03T00:00:00Z&amp;#34; --end-time &amp;#34;2025-03-03T23:59:59Z&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;查询 &lt;strong&gt;2025 年 3 月 3 日的所有 CloudTrail 事件&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h4 id="列出所有-cloudtrail-跟踪trails"&gt;&lt;a href="#%e5%88%97%e5%87%ba%e6%89%80%e6%9c%89-cloudtrail-%e8%b7%9f%e8%b8%aatrails" class="header-anchor"&gt;&lt;/a&gt;列出所有 CloudTrail 跟踪（Trails）&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail list-trails&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;列出 AWS 账户内所有的 CloudTrail 追踪（Trails）。&lt;/p&gt;&#10;&lt;h4 id="获取某个-trail-的详细信息"&gt;&lt;a href="#%e8%8e%b7%e5%8f%96%e6%9f%90%e4%b8%aa-trail-%e7%9a%84%e8%af%a6%e7%bb%86%e4%bf%a1%e6%81%af" class="header-anchor"&gt;&lt;/a&gt;获取某个 Trail 的详细信息&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail describe-trails&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;查询 CloudTrail 追踪的详细信息，包括 S3 日志存储位置。&lt;/p&gt;&#10;&lt;h4 id="停止-cloudtrail-记录"&gt;&lt;a href="#%e5%81%9c%e6%ad%a2-cloudtrail-%e8%ae%b0%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;停止 CloudTrail 记录&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail stop-logging --name management-events&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;停止 &lt;code&gt;management-events&lt;/code&gt; Trail 的日志记录（&lt;strong&gt;不会删除已存储的日志&lt;/strong&gt;）。&lt;/p&gt;&#10;&lt;h4 id="重新启动-cloudtrail-记录"&gt;&lt;a href="#%e9%87%8d%e6%96%b0%e5%90%af%e5%8a%a8-cloudtrail-%e8%ae%b0%e5%bd%95" class="header-anchor"&gt;&lt;/a&gt;重新启动 CloudTrail 记录&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws cloudtrail start-logging --name management-events&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;重新启动 &lt;code&gt;management-events&lt;/code&gt; Trail 的日志记录。&lt;/p&gt;&#10;&lt;h4 id="下载-cloudtrail-事件日志"&gt;&lt;a href="#%e4%b8%8b%e8%bd%bd-cloudtrail-%e4%ba%8b%e4%bb%b6%e6%97%a5%e5%bf%97" class="header-anchor"&gt;&lt;/a&gt;下载 CloudTrail 事件日志&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 ls s3://aws-cloudtrail-logs-6502********-63db363a/AWSLogs/6502********/CloudTrail/&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;列出存储在 S3 里的 CloudTrail 日志&lt;/strong&gt;（如果你启用了 S3 存储）。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws s3 cp s3://aws-cloudtrail-logs-6502********-63db363a/AWSLogs/6502********/CloudTrail/2025/03/03/日志文件.json.gz .&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gunzip 日志文件.json.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;下载 CloudTrail 日志文件并解压&lt;/strong&gt;，可以本地分析。&lt;/p&gt;&#10;&lt;p&gt;上面列了一堆我感觉就第十条最好用，它可以下载所有的日志，再慢慢分析一样的，像上面如果一直查在数据量特别大的情况下好用一些，但是数据量不是很大的话还是全部下载下来分析比较好，目前记录AWSCLI操作的命令还算比较少，其实这也是为了一个场景，当获取到泄露的Access Key 和 Secret Key的时候就可以利用API来获取到一些信息，所以这个实际上不用死记硬背，但是得知道有这些API的请求方法。&lt;/p&gt;&#10;&lt;h2 id="cloudwatch"&gt;&lt;a href="#cloudwatch" class="header-anchor"&gt;&lt;/a&gt;CloudWatch&#10;&lt;/h2&gt;&lt;p&gt;CloudWatch 是 AWS 的 &lt;strong&gt;监控 &amp;amp; 日志管理服务&lt;/strong&gt;，可以：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;监控 AWS 资源&lt;/strong&gt;（EC2、S3、Lambda、RDS 等）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;收集 &amp;amp; 存储日志&lt;/strong&gt;（Lambda、EC2、CloudTrail 等日志）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;设置告警&lt;/strong&gt;（比如 CPU 超过 80% 时触发告警）&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;可视化数据&lt;/strong&gt;（创建 Dashboard 进行展示）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;和上一个相似，上一个主要是用户的操作审计等等，而这个是对资源方面的监控，如果用过安全设备，啥设备都行，其实都有这一块，比如WAF、IPS/IDS、态势感知等等。&lt;/p&gt;&#10;&lt;p&gt;直接搜点开看两眼就行了，有时候接口方面的审计也能细化，在Lambda处实际上我们创建了一个并打开过一次，这里随便放点图把。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0031.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;其他的这些东西 可以挨个点开看看 理解一下就行 另外&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;CloudWatch 本身不记录 API 请求&lt;/strong&gt;，但是 &lt;strong&gt;CloudTrail 记录 API&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;如果你想在 CloudWatch 里看到 API 日志，需要把 CloudTrail 事件存到 CloudWatch Logs&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;这样你就能用 AWS CLI 查询 API 调用日志了！&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这里也不多赘述了，如果以后需要在AWS上搭建服务的话在了解，目前不需要了解。&lt;/p&gt;&#10;&lt;p&gt;在翻得时候我发现了一个有意思的地方，流量监视器，但是前提是得开一个EC2实例，我之前给他关了因为我学完就不咋用还可能会计费。所以下面一条数据流量没有。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0032.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;当然如果光开启了只会收到流量包发不过去失败的情况的日志，不会有流量传输的日志。下面的方法是可以传过去的&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0033.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;注意左上角的位置，有点麻烦，这里就不搞了，值得一提的是这里也可以通过AWSCLI来设置及查询。&lt;del&gt;我想到了一个场景，当目标的KEY泄露了，同时目标放着一个站点，这个站点用的人挺多的，可能通信没有加密也可能用了JS加密了(JS逆向可以解开加密)，获得到别人的通信流量包的时候很容易知道他人的密码，或者捕获COOKIE危害性还是蛮大的。&lt;/del&gt;(实际上不行，只能记录源IP/目标IP 源端口/目标端口 传输协议（TCP/UDP/ICMP）数据包数量/字节数)，那感觉除非是开发才用得到，像云安全之类的也需要开一下以外，就没啥大作用了。我发现学的这些东西实际上是攻防都在学，日志系统可以溯源应急梳理攻击链。&lt;/p&gt;&#10;&lt;p&gt;我上面画线的部分可以解决，AWS还有个WAF，可以自己写规则，当登录发包的请求里面存在username/passwd之类的敏感词的时候可以添加规则并捕获，但是要收费。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0034.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;就算了 知道有这个东西就行了&lt;/p&gt;&#10;&lt;h2 id="vpc"&gt;&lt;a href="#vpc" class="header-anchor"&gt;&lt;/a&gt;VPC&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;VPC 是 AWS 上的虚拟私有网络（Virtual Private Cloud）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;你可以在 VPC 里创建 EC2、数据库（RDS）、负载均衡（ELB）等资源&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;VPC 允许你控制网络拓扑（子网、路由表、安全组、NACL 等）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;所有 AWS 资源都运行在某个 VPC 里&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这个概念在我22年实习的时候就了解了，当时一直想买一台VPS用来开一些服务，但我发现VPC貌似比VPS便宜，而且感觉也差不多，最主要是想要那个公网IP。&lt;/p&gt;&#10;&lt;p&gt;VPC主要是一个网络环境。可以看下面，都是配置网络相关的。如果操作得当实际上可以搭建一个AWS内网横向靶场，双网卡的那种，挺有意思的。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0035.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;在EC2那我也提到了这里好像跟aliyun那种不一样，aliyun那边自带防火墙这边都没有，结果在这里。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0036.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;这里实际上我的理解也都是，可以都看看，VPC负责网络流量方面的事情，而EC2主要是处理计算方面的吧，比如给一个操作系统分配CPU、内存等等。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;VPC 的防御端主要是做访问控制、流量管控，而攻击端则是尝试获取这些配置信息或绕过防御机制&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;大概的理解都是这种 VPC的防御已经在上面的左边列出来了，而我们主要是攻方面的，接下来列出来一些重要的API接口，用来查询这些配置信息，前提是获得KEY。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;服务&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;API 作用&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;可能的攻击利用&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;VPC&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeVpcs&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取所有 VPC 的 CIDR、状态、默认 VPC 等信息&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;子网（Subnet）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeSubnets&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;查看所有子网的 IP 范围、可用区等&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;路由表（Route Table）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeRouteTables&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取当前 VPC 的路由配置，查看公网访问策略&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;NACL（网络 ACL）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeNetworkAcls&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;查看当前 VPC 的 ACL 规则（入站 / 出站限制）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;安全组（Security Groups）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeSecurityGroups&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取 EC2 安全组规则，查找可能的开放端口&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;互联网网关（IGW）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeInternetGateways&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取 VPC 连接外网的方式，是否暴露公网&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;NAT 网关&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeNatGateways&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取 NAT 代理信息，可能绕过公网限制&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;VPN 连接&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeVpnConnections&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取 VPN 连接信息，可能尝试劫持 VPN&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DNS 防火墙&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ListFirewallRules&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取 DNS 防火墙规则，可能尝试绕过拦截&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;弹性 IP（Elastic IP）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;DescribeAddresses&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;获取当前账户绑定的公网 IP，寻找攻击目标&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;这些 API 都可以通过 &lt;strong&gt;AWS CLI&lt;/strong&gt; 或 &lt;strong&gt;SDK&lt;/strong&gt; 查询，例如：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ec2 describe-security-groups --region us-east-1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ec2 describe-route-tables --region us-east-1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ec2 describe-network-acls --region us-east-1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;通过这些规则找到漏洞进行绕过就行。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;创建新的安全组规则，放宽访问权限&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;创建隐藏的 IAM 账号，保留后门&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;修改 VPC 流量日志，隐藏访问记录&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;创建弹性 IP，绑定到自己控制的实例&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="rds"&gt;&lt;a href="#rds" class="header-anchor"&gt;&lt;/a&gt;RDS&#10;&lt;/h2&gt;&lt;p&gt;RDS 主要用于 &lt;strong&gt;管理关系型数据库&lt;/strong&gt;，它和自己部署 MySQL 的区别在于：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;无需手动运维&lt;/strong&gt;：AWS 自动管理 &lt;strong&gt;备份、补丁、监控、扩展&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;高可用&lt;/strong&gt;：可以 &lt;strong&gt;跨多个可用区（AZ）部署&lt;/strong&gt;，保证故障时数据库可用。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;安全性&lt;/strong&gt;：可以使用 &lt;strong&gt;VPC 内网部署、加密存储、自动备份&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;性能优化&lt;/strong&gt;：支持 &lt;strong&gt;自动扩展、读副本（Read Replica）、Aurora&lt;/strong&gt; 进行高性能读写。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;这里到稍微重点的地方了，很多时候，开发者用的数据库都是用的云服务，这样更方便更加的安全，更加的便宜。&lt;/p&gt;&#10;&lt;h3 id="rds-的关键概念"&gt;&lt;a href="#rds-%e7%9a%84%e5%85%b3%e9%94%ae%e6%a6%82%e5%bf%b5" class="header-anchor"&gt;&lt;/a&gt;RDS 的关键概念&#10;&lt;/h3&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;概念&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;作用&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RDS 实例&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;运行数据库的主机（相当于一台数据库服务器）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;数据库引擎&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;支持 MySQL、PostgreSQL、MariaDB、Oracle、SQL Server、Aurora&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;子网组（Subnet Group）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;让数据库运行在特定的 VPC 子网&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;安全组（Security Group）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;控制 RDS 的访问权限（是否允许外部连接）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;参数组（Parameter Group）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;控制数据库的 &lt;strong&gt;配置参数&lt;/strong&gt;（比如 MySQL 的 &lt;code&gt;max_connections&lt;/code&gt; ）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;快照（Snapshot）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;备份数据库，可以随时恢复&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;读副本（Read Replica）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用于读操作优化，减少主实例负载&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;多可用区部署（Multi-AZ）&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;主数据库在 &lt;strong&gt;多个可用区（AZ）&lt;/strong&gt; 运行，主备切换时不中断&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h3 id="搭建mysql"&gt;&lt;a href="#%e6%90%ad%e5%bb%bamysql" class="header-anchor"&gt;&lt;/a&gt;搭建MYSQL&#10;&lt;/h3&gt;&lt;p&gt;还是一样找到对应的控制台，目前要找的是RDS&lt;/p&gt;&#10;&lt;p&gt;按照我下面的配置走 不然要付费&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0037.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0038.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0039.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;剩下的随便点点 默认就行&lt;/p&gt;&#10;&lt;h3 id="连接mysql-awscli"&gt;&lt;a href="#%e8%bf%9e%e6%8e%a5mysql-awscli" class="header-anchor"&gt;&lt;/a&gt;连接MYSQL (AWSCLI)&#10;&lt;/h3&gt;&lt;p&gt;第一种在EC2里面连接就不提了 就是正常连接就行&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -h your-rds-endpoint -u admin -p&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;主要是第二种通过AWSCLI&lt;/p&gt;&#10;&lt;h4 id="查询-rds-实例"&gt;&lt;a href="#%e6%9f%a5%e8%af%a2-rds-%e5%ae%9e%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;查询 RDS 实例&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds describe-db-instances&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;返回结果示例：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;span class="lnt"&gt;20&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;DBInstances&amp;#34;: [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;DBInstanceIdentifier&amp;#34;: &amp;#34;mydatabase&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;DBInstanceClass&amp;#34;: &amp;#34;db.t3.micro&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Engine&amp;#34;: &amp;#34;mysql&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;DBInstanceStatus&amp;#34;: &amp;#34;available&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Endpoint&amp;#34;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Address&amp;#34;: &amp;#34;mydatabase.xxxxxxxx.us-east-1.rds.amazonaws.com&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Port&amp;#34;: 3306&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;VpcSecurityGroups&amp;#34;: [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;VpcSecurityGroupId&amp;#34;: &amp;#34;sg-0abcd1234&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Status&amp;#34;: &amp;#34;active&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;你可以从 &lt;strong&gt;&amp;ldquo;Endpoint&amp;rdquo;&lt;/strong&gt; 获取 RDS 连接地址&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&amp;ldquo;DBInstanceStatus&amp;rdquo;&lt;/strong&gt; 显示数据库状态&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="备份-rds"&gt;&lt;a href="#%e5%a4%87%e4%bb%bd-rds" class="header-anchor"&gt;&lt;/a&gt;备份 RDS&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds create-db-snapshot --db-instance-identifier mydatabase --db-snapshot-identifier mybackup&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;创建快照（备份）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="删除-rds"&gt;&lt;a href="#%e5%88%a0%e9%99%a4-rds" class="header-anchor"&gt;&lt;/a&gt;删除 RDS&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds delete-db-instance --db-instance-identifier mydatabase --skip-final-snapshot&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;立即删除数据库（跳过最后快照）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="查询-rds-是否允许公网访问"&gt;&lt;a href="#%e6%9f%a5%e8%af%a2-rds-%e6%98%af%e5%90%a6%e5%85%81%e8%ae%b8%e5%85%ac%e7%bd%91%e8%ae%bf%e9%97%ae" class="header-anchor"&gt;&lt;/a&gt;查询 RDS 是否允许公网访问&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds describe-db-instances --query &amp;#34;DBInstances[*].[DBInstanceIdentifier, PubliclyAccessible]&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;返回结果示例（被拒绝了）：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;database-1&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; false&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h4 id="开启-rds-公网访问"&gt;&lt;a href="#%e5%bc%80%e5%90%af-rds-%e5%85%ac%e7%bd%91%e8%ae%bf%e9%97%ae" class="header-anchor"&gt;&lt;/a&gt;开启 RDS 公网访问&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds modify-db-instance \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --db-instance-identifier mydatabase \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --publicly-accessible \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --apply-immediately&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds modify-db-instance --db-instance-identifier mydatabase --publicly-accessible --apply-immediately&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0040.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;执行完成之后 就会返回mysql的地址了 允许公网访问&lt;/p&gt;&#10;&lt;h4 id="开启-rds-的安全组策略"&gt;&lt;a href="#%e5%bc%80%e5%90%af-rds-%e7%9a%84%e5%ae%89%e5%85%a8%e7%bb%84%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;开启 RDS 的安全组策略&#10;&lt;/h4&gt;&lt;p&gt;上面成功获得了这个RDS里的mysql的外部访问权限，但是实际上这里还被安全组阻止了，即使开启了，但是安全组也就是防火墙没有放行还是无法访问，这里将策略打开。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds describe-db-instances --query &amp;#34;DBInstances[*].[DBInstanceIdentifier,VpcSecurityGroups]&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;result：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;database-1&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;VpcSecurityGroupId&amp;#34;: &amp;#34;sg-0e8c9518e********&amp;#34;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;Status&amp;#34;: &amp;#34;active&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;记住VpcSecurityGroupId&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;开放权限&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;span class="lnt"&gt;8&#10;&lt;/span&gt;&lt;span class="lnt"&gt;9&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ec2 authorize-security-group-ingress \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --group-id sg-0123456789abcdef \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --protocol tcp \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --port 3306 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --cidr YOUR_IP/32&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;为了安全期间也可以 curl ifconfig.me&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;找到IP之后 将上面的YOUR_IP替换为当前的 而不是0.0.0.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef --protocol tcp --port 3306 --cidr 0.0.0.0/0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;成功&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0041.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0042.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;h4 id="修改mysql密码"&gt;&lt;a href="#%e4%bf%ae%e6%94%b9mysql%e5%af%86%e7%a0%81" class="header-anchor"&gt;&lt;/a&gt;修改MYSQL密码&#10;&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds modify-db-instance \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --db-instance-identifier database-1 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --master-user-password &amp;#34;NewPassword123!&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;上面这个可以直接把密码改了 然后连进去 看看数据 但是一般不允许这样 即使是合法渗透 这样也要出事 记一下就行了&lt;/p&gt;&#10;&lt;p&gt;至此RDS完毕了，AWSCLI加了一个入站规则，然后给RDS设置了可以被外部访问，现在通过WEB全删了吧。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0043.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;第二个关闭RDS的远程访问&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws rds modify-db-instance --db-instance-identifier mydatabase --no-publicly-accessible --apply-immediately&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;操作步骤&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;进入 AWS 控制台&lt;/strong&gt; → &lt;strong&gt;RDS 服务&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;在 &lt;strong&gt;数据库实例&lt;/strong&gt; 列表找到你的数据库 &lt;code&gt;database-1&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;点击 &lt;strong&gt;“修改（Modify）”&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;找到 &lt;strong&gt;“连接”&lt;/strong&gt; 部分，&lt;strong&gt;取消勾选&lt;/strong&gt;&lt;code&gt;Publicly accessible&lt;/code&gt;（公网可访问）。&lt;/li&gt;&#10;&lt;li&gt;选择 &lt;strong&gt;立即应用（Apply Immediately）&lt;/strong&gt; 或 &lt;strong&gt;等待维护窗口&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;保存更改&lt;/strong&gt; 并 &lt;strong&gt;等待 RDS 实例重新启动&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="http://xtpol.com/zh/p/aws-cloud-basics/image-0044.zh.webp" alt="" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;我已经删了就不截图步骤了。&lt;/p&gt;&#10;&lt;h2 id="基础完结"&gt;&lt;a href="#%e5%9f%ba%e7%a1%80%e5%ae%8c%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;基础完结&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;至此基础部分全部完结 如果需要任何服务 做任何基线 任何访问控制 存储等等 通过上面学到的所有东西都可以完成 你还可以通过上面了解到的自行搭建一个免费的web服务器 并且架构非常棒 涉及各种应用&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;接下来可以走向很多方向 比如先把AWS certified Security考了 或者如下&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;走安全方向（深入 IAM、VPC、攻防演练、渗透测试）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;走 DevOps &amp;amp; 自动化方向（Terraform、CI/CD、Serverless）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;探索 AWS 专项服务（AI、物联网 IoT、区块链等）&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;CI/CD 在jenkins还有Azure DevOps等等里面比较多 我不清楚在AWS里面自带的DevOps是否能够完成渗透 下一步就是安全方向渗透测试&lt;/strong&gt;&lt;/p&gt;&#10;</description></item></channel></rss>