第37天:使用 S3 基于角色的权限管理 EC2 访问

发布: (2026年1月10日 GMT+8 17:20)
5 分钟阅读
原文: Dev.to

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 策略和角色,并测试应用功能。

任务概览

  1. EC2 实例设置

    • 名为 xfusion-ec2 的实例已存在。
    • 该实例需要访问 S3 存储桶的权限。
  2. 设置 SSH 密钥

    • aws-client 主机上创建新的 SSH 密钥对(id_rsaid_rsa.pub)。
    • 将公钥添加到 EC2 实例上 root 用户的 authorized_keys 中。
  3. 创建私有 S3 存储桶

    • 存储桶名称:xfusion-s3-29734
    • 确保存储桶为私有。
  4. 创建 IAM 策略和角色

    • 策略必须允许对 xfusion-s3-29734 执行 s3:PutObjects3:GetObjects3:ListBucket
    • 角色名称:xfusion-role
    • 将策略附加到角色,并将角色关联到 EC2 实例。
  5. 测试访问

    • 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 实例

  1. 使用 AWS 控制台(Instance Connect 或 Session Manager)连接到 xfusion-ec2
  2. 确认 EC2 安全组已允许入站 SSH(端口 22)。
  3. 编辑 authorized_keys 文件:
sudo -i
vi /root/.ssh/authorized_keys
  1. 粘贴来自 aws-client 主机的 /root/.ssh/id_rsa.pub 内容,保存并退出。

✅ 免密码 SSH 已成功启用。

第3步:创建私有 S3 存储桶

  1. 打开 AWS 控制台 → S3Create bucket

  2. 配置:

    • Bucket name: xfusion-s3-29734
    • Region: 与 EC2 实例相同
    • Object Ownership: 禁用 ACL
    • Block Public Access: 保持全部启用(存储桶保持私有)
  3. 点击 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"
    }
  ]
}
  1. 点击 Next,为策略命名为 xfusion-s3-policy,并创建它。

Source:

第5步:创建 IAM 角色并附加策略

5.1 创建角色

  1. 前往 IAM → Roles → Create role
  2. 受信实体:AWS serviceEC2
  3. 点击 Next

5.2 附加策略

选择刚才创建的 xfusion-s3-policy,然后点击 Next

5.3 角色名称

输入 xfusion-role 作为角色名称,点击 Create role

✅ 角色已准备就绪。

第6步:将 IAM 角色附加到 EC2 实例

  1. 打开 EC2 → Instances
  2. 选择 xfusion-ec2
  3. 选择 Actions → Security → Modify IAM role
  4. 选择 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/

如果上传成功,文件将在列出结果中出现。

Back to Blog

相关文章

阅读更多 »

你好,我是新人。

嗨!我又回到 STEM 的领域了。我也喜欢学习能源系统、科学、技术、工程和数学。其中一个项目是…