如何授予我的 Amazon EC2 实例对 Amazon S3 存储桶的访问权限?

2 分钟阅读
0

我无法从我的 Amazon Elastic Compute Cloud(Amazon EC2)实例访问 Amazon Simple Storage Service(Amazon S3)存储桶。如何激活 EC2 实例对 S3 存储桶的读/写访问权限?

简短描述

要从 EC2 实例连接到 S3 存储桶,您必须执行以下操作:

  1. 创建一个 AWS Identity and Access Management(AWS IAM)配置文件角色,授予对 Amazon S3 的访问权限。

  2. 将 IAM 实例配置文件附加到该实例。

  3. 验证在您的 S3 存储桶上的权限。

  4. 验证从 EC2 实例到 Amazon S3 的网络连接。

  5. 验证对 S3 存储桶的访问权限。

解决方法

创建 IAM 实例配置文件,授予对 Amazon S3 的访问权限

  1. 打开 IAM 控制台

  2. 选择角色,然后选择创建角色

  3. 选择 AWS 服务,然后在用例下选择 EC2

**注意:**从控制台创建 IAM 角色并选择 EC2 作为可信实体会自动创建与角色名称同名的 IAM 实例配置文件。但是,如果角色是使用 AWS 命令行界面(AWS CLI)或通过 API 创建的,则不会自动创建实例配置文件。有关更多信息,请参阅我创建了一个 IAM 角色,但是当我启动实例时,该角色没有出现在下拉列表中。我该怎么办?

  1. 选择下一步: 权限

  2. 创建自定义策略,提供访问 S3 存储桶所需的最低权限。有关创建自定义策略的说明,请参阅编写 IAM 策略:如何授予对 Amazon S3 存储桶的访问权限Amazon S3 中的身份和访问管理

**注意:**创建具有所需最低权限的策略是一种安全最佳实践。但是,要允许 EC2 访问您的所有 Amazon S3 存储桶,请使用 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess 托管 IAM 策略。

  1. 选择下一步: 标签,然后选择下一步: 审核

  2. 输入角色名称,然后选择创建角色

将 IAM 实例配置文件附加到 EC2 实例

  1. 打开 Amazon EC2 控制台

  2. 选择实例

  3. 选择您要附加 IAM 角色的实例。

  4. 依次选择操作选项卡、安全,然后选择修改 IAM 角色

  5. 选择您刚刚创建的 IAM 角色,然后选择保存。IAM 角色现已分配给您的 EC2 实例。

验证在您的 S3 存储桶上的权限

  1. 打开 Amazon S3 控制台

  2. 选择您要验证其策略的 S3 存储桶。

  3. 选择权限

  4. 选择桶策略

  5. 搜索带有 Effect: Deny的语句。

  6. 在您的存储桶策略中,编辑或移除所有含 Effect: Deny 的语句,这些是拒绝 IAM 实例配置文件访问您的存储桶的语句。有关编辑策略的说明,请参阅编辑 IAM 策略

验证从 EC2 实例到 Amazon S3 的网络连接

要使您的 EC2 实例连接到 S3 端点,该实例必须为以下实例之一:

  • 具有公有 IP 地址且路由表默认路由指向互联网网关的EC2 实例
  • 默认路由经过 NAT 网关的私有 EC2 实例
  • 使用网关 VPC 端点连接到 Amazon S3 的私有 EC2 实例

要对私有 EC2 实例和 S3 存储桶之间的连接进行故障排除,请参阅为什么我无法使用网关 VPC 端点连接到 S3 存储桶?

验证对 S3 存储桶的访问权限

  1. 在您的 EC2 实例上安装 AWS CLI

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

  1. 执行以下命令验证对您的 S3 存储桶的访问权限。将 DOC-EXAMPLE-BUCKET 替换为您的 S3 存储桶的名称。
aws s3 ls s3://DOC-EXAMPLE-BUCKET

注意:使用 AWS Key Management Service(AWS KMS)密钥加密的 S3 对象必须具有 以下授予的 kms:Decrypt 权限:

  • 附加到实例的 IAM 角色。
  • KMS 密钥策略。

如果未授予这些权限,则您无法复制或下载 S3 对象。有关更多信息,请参阅当我从 Amazon S3 下载 KMS 加密的对象时,我是否需要指定 AWS KMS 密钥?


相关信息

为什么我无法使用网关 VPC 端点连接到 S3 存储桶?

AWS 官方
AWS 官方已更新 2 年前