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

2 分钟阅读
0

我无法从我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问 Amazon Simple Storage Service(Amazon S3) 存储桶。

解决方法

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

完成以下步骤:

  1. 打开 AWS Identity and Access Management (IAM) 控制台
  2. 在导航窗格中的 Access management(访问管理)下,选择 Roles(角色)。
  3. 选择 Create role(创建角色)。
  4. Trusted entity type(可信实体类型)下,选择 AWS service(AWS 服务),然后选择 EC2
    **注意:**当您使用 IAM 控制台创建 IAM 角色并选择 EC2 作为可信实体时,系统会自动创建与角色名称同名的 IAM 实例配置文件。但是,如果您使用 AWS 命令行界面 (AWS CLI) 或 API 来创建角色,则不会自动创建实例配置文件。有关详细信息,请参阅我创建了 IAM 角色,但当我启动实例时,该角色没有出现在下拉列表中。我该怎么办?
  5. 选择 Next(下一步)。
  6. 创建自定义策略,提供访问 S3 存储桶所需的最低权限。
    **注意:**创建具有所需最低权限的策略是一种安全最佳实践。但是,要允许 EC2 访问您的所有 S3 存储桶,请使用 AmazonS3ReadOnlyAccessAmazonS3FullAccess 托管 IAM 策略。
  7. 选择 Next(下一步)。
  8. 输入角色名称,然后选择 Create role(创建角色)。

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

完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 在导航窗格中,选择 Instances(实例)。
  3. 选择您要附加 IAM 角色的实例。
  4. 选择 Actions(操作)选项卡,然后选择 Security(安全)。
  5. 选择 Modify IAM role(修改 IAM 角色)。
  6. 选择 IAM 角色,然后选择 Save(保存)。IAM 角色现已分配给您的 EC2 实例。

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

完成以下步骤:

  1. 打开 Amazon S3 控制台
  2. 选择要验证其策略的 S3 存储桶链接。
  3. 选择 Permissions(权限)选项卡。
  4. Bucket policy(存储桶策略)部分中,搜索包含 Effect: Deny 的语句。
  5. 编辑 IAM 策略以移除任何 Effect: Deny 语句,这些语句拒绝 IAM 实例配置文件访问您的存储桶。

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

先决条件

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

要对私有 EC2 实例和 S3 存储桶之间的连接进行故障排除,请参阅如何排查网关 Amazon VPC 端点的连接问题?

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

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,应确保您使用的是最新版本的 AWS CLI

完成以下步骤:

  1. 在您的 EC2 实例上安装 AWS CLI
  2. 运行以下命令以验证对您的 S3 存储桶的访问权限:
    aws s3 ls s3://DOC-EXAMPLE-BUCKET
    **注意:**在前面的命令中,将 DOC-EXAMPLE-BUCKET 替换为您的 S3 存储桶的名称。

对于使用 AWS Key Management Service (AWS KMS) 密钥加密的 S3 对象,在 IAM 角色和 KMS 密钥策略中授予 kms: Decrypt 权限。如果您不授予 kms:Decrypt 权限,则无法复制或下载 S3 对象。

相关信息

Amazon S3 的 Identity and Access Management

如何解决在使用接口 VPC 端点连接到我的 Amazon S3 存储桶时出现的连接问题?

AWS 官方
AWS 官方已更新 10 个月前