为何我无法从 Amazon EC2 实例连接到 Amazon S3 存储桶?

上次更新时间:2020 年 3 月 17 日

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

简要描述

要从EC2实例连接到S3存储桶,您需要:

1.    创建一个AWS Identity and Access Management(IAM)配置文件角色并将其附加到实例,以授予对Amazon S3的访问权限。

2.    确认S3存储桶策略没有拒绝访问策略。

3.    确认EC2实例和Amazon S3之间的网络连接。

解决方案

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

1.    打开 IAM 控制台

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

3.    选中 AWS 服务, 然后选择 EC2

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

4.    选中下一步:权限

5.    搜索 AmazonS3FullAccess 托管策略,然后将其选中。如果要将多个策略附加到某个角色,您可以执行此操作。

注意: 要创建自定义策略,以授予对特定存储桶的访问权限,请参阅 编写 IAM 策略:如何授予对 Amazon S3 存储桶的访问权限

6.    选中 下一步: 标签, 然后选中下一步: 检查

7.    输入角色名称,然后选中创建角色

将该IAM实例角色附加到 EC2 实例

1.    打开 Amazon EC2 控制台

2.    选择 Instances

3.    选中 IAM 角色要附加到的目标实例。

4.    依次选择操作选项卡实例设置,然后选择附加/替换 IAM 角色

5.    选中您刚刚创建的 IAM 角色,选择 Apply, 然后选择 Close。该IAM 角色现已分配至您的 EC2 实例。

验证您 S3 存储桶的权限

1.    打开 Amazon S3 控制台

2.    选中要验证策略的 S3 存储桶。

3.    选择 Permissions选项卡

4.    选择存储桶策略

5.    搜索包含 "Effect: "Deny" 的语句。

6.    在您的存储桶策略中,编辑或删除任何拒绝 IAM 实例配置文件访问您的存储桶的"Effect: Deny"语句。要了解有关编辑策略的说明,请参阅 编辑 IAM 策略

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

验证EC2实例是否可以连接到S3端点。

该实例必须为以下之一:

具有公共IP地址的EC2实例及带有指向Internet网关的默认路由的路由表条目。
具有通过 NAT 网关的默认路由的私有EC2实例。
使用 网关 VPC 终端节点私有 EC2 实例连接到 Amazon S3。

验证对 S3 存储桶的访问

1.    安装 AWS CLI

2.    通过运行以下命令来验证对您的 S3 存储桶的访问:

aws s3 ls

注意:用AWS Key Management Service(AWS KMS)密钥加密的 S3 对象,必须具有附加到实例的 IAM 角色和KMS 密钥策略中准许的kms:Decrypt 权限,以便复制或下载成功。更多信息,请参阅从 Amazon S3 下载已使用 KMS 加密的对象时是否需要指定 AWS KMS 密钥?


这篇文章对您有帮助吗?


您是否需要账单或技术支持?