第37天:使用 S3 基于角色的权限管理 EC2 访问
I’m ready to translate the article for you, but I need the full text of the post (the content you’d like translated). Could you please paste the article’s body here? Once I have that, I’ll provide a Simplified Chinese translation while preserving the source link, markdown formatting, and any code blocks or URLs unchanged.
实验信息
Nautilus DevOps 团队需要在 EC2 实例上部署一个应用,以便与 S3 存储桶交互进行数据的存储和检索。团队必须创建一个私有 S3 存储桶,设置适当的 IAM 策略和角色,并测试应用功能。
任务概览
-
EC2 实例设置
- 名为
xfusion-ec2的实例已存在。 - 该实例需要访问 S3 存储桶的权限。
- 名为
-
设置 SSH 密钥
- 在
aws-client主机上创建新的 SSH 密钥对(id_rsa和id_rsa.pub)。 - 将公钥添加到 EC2 实例上 root 用户的
authorized_keys中。
- 在
-
创建私有 S3 存储桶
- 存储桶名称:
xfusion-s3-29734。 - 确保存储桶为私有。
- 存储桶名称:
-
创建 IAM 策略和角色
- 策略必须允许对
xfusion-s3-29734执行s3:PutObject、s3:GetObject和s3:ListBucket。 - 角色名称:
xfusion-role。 - 将策略附加到角色,并将角色关联到 EC2 实例。
- 策略必须允许对
-
测试访问
- SSH 登录到 EC2 实例并将文件上传至存储桶。
- 列出存储桶内容以进行验证。
Step 1: Verify Existing EC2 Instance
名为 xfusion-ec2 的 EC2 实例已经存在。在此阶段无需进行任何更改;该实例稍后将被附加到用于 S3 访问的 IAM 角色。
第2步:设置 SSH 密钥(免密码访问)
2.1 在 aws-client 上创建 SSH 密钥对
# Generate a new SSH key pair:
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ""
# Confirm files exist:
ls /root/.ssh/
你应该会看到:
id_rsa id_rsa.pub
2.2 将公钥添加到 EC2 实例
- 使用 AWS 控制台(Instance Connect 或 Session Manager)连接到
xfusion-ec2。 - 确认 EC2 安全组已允许入站 SSH(端口 22)。
- 编辑
authorized_keys文件:
sudo -i
vi /root/.ssh/authorized_keys
- 粘贴来自
aws-client主机的/root/.ssh/id_rsa.pub内容,保存并退出。
✅ 免密码 SSH 已成功启用。
第3步:创建私有 S3 存储桶
-
打开 AWS 控制台 → S3 → Create bucket。
-
配置:
- Bucket name:
xfusion-s3-29734 - Region: 与 EC2 实例相同
- Object Ownership: 禁用 ACL
- Block Public Access: 保持全部启用(存储桶保持私有)
- Bucket name:
-
点击 Create bucket。
✅ 存储桶默认是私有的。
第4步:创建用于 S3 访问的 IAM 策略
4.1 创建策略
导航至 IAM → Policies → Create policy,选择 JSON 选项卡,并粘贴以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::xfusion-s3-29734/*"
},
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::xfusion-s3-29734"
}
]
}
- 点击 Next,为策略命名为
xfusion-s3-policy,并创建它。
Source: …
第5步:创建 IAM 角色并附加策略
5.1 创建角色
- 前往 IAM → Roles → Create role。
- 受信实体:AWS service → EC2。
- 点击 Next。
5.2 附加策略
选择刚才创建的 xfusion-s3-policy,然后点击 Next。
5.3 角色名称
输入 xfusion-role 作为角色名称,点击 Create role。
✅ 角色已准备就绪。
第6步:将 IAM 角色附加到 EC2 实例
- 打开 EC2 → Instances。
- 选择
xfusion-ec2。 - 选择 Actions → Security → Modify IAM role。
- 选择
xfusion-role并点击 Update IAM role。
✅ 该 EC2 实例现在拥有访问 S3 存储桶的权限。
第 7 步:从 EC2 测试 S3 访问
7.1 SSH 登录 EC2 实例
ssh root@
7.2 创建测试文件
echo "S3 access test" > testfile.txt
7.3 将文件上传至 S3
aws s3 cp testfile.txt s3://xfusion-s3-29734/
7.4 列出存储桶中的文件
aws s3 ls s3://xfusion-s3-29734/
如果上传成功,文件将在列出结果中出现。