我无法从我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶。如何从 EC2 实例启用对 S3 存储桶的读/写访问?
简短描述
要从 EC2 实例连接到 S3 存储桶,您需要:
-
创建一个AWS Identity and Access Management(IAM)配置文件角色并将其附加到实例,以授予对Amazon S3的访问权限。
-
确认S3存储桶策略没有拒绝访问策略。
-
确认EC2实例和Amazon S3之间的网络连接。
解决方案
创建一个IAM实例配置文件以授予对Amazon S3的访问权限
-
打开 IAM 控制台。
-
选择角色,然后选择创建角色。
-
选中 AWS 服务, 然后选择 EC2。
注意: 从选中 EC2 作为受信任实体的控制台创建IAM角色会自动创建一个与角色名称同名的IAM实例配置文件。但是,如果使用AWS命令行界面(AWS CLI)或通过API创建角色,则不会自动创建实例配置文件。要了解更多信息,请参阅我创建了一个 IAM 角色,但启动实例时此角色未显示在下拉列表中。我该怎么办?
-
选中下一步:权限。
-
创建一个自定义策略,以提供访问 S3 存储桶所需的最低权限。有关创建自定义策略的说明,请参阅编写 IAM 策略:如何授予对 Amazon S3 存储桶的访问权限和管理对 S3 资源的访问权限。
注意:创建具有所需最低权限的策略是安全的最佳做法。但是,要允许 EC2 访问您的所有 Amazon S3 存储桶,您可以使用 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess 托管 IAM 策略。
-
选中 下一步: 标签, 然后选中下一步: 检查。
-
输入角色名称,然后选中创建角色。
将该IAM实例角色附加到 EC2 实例
-
打开 Amazon EC2 控制台。
-
选择 Instances。
-
选中 IAM 角色要附加到的目标实例。
-
依次选择操作选项卡、实例设置,然后选择附加/替换 IAM 角色。
-
选中您刚刚创建的 IAM 角色,选择 Apply, 然后选择 Close。该IAM 角色现已分配至您的 EC2 实例。
验证您 S3 存储桶的权限
-
打开 Amazon S3 控制台。
-
选中要验证策略的 S3 存储桶。
-
选择 Permissions选项卡。
-
选择存储桶策略。
-
搜索包含 "Effect: “Deny” 的语句。
-
在您的存储桶策略中,编辑或删除任何拒绝 IAM 实例配置文件访问您的存储桶的"Effect: Deny"语句。要了解有关编辑策略的说明,请参阅 编辑 IAM 策略。
验证从 EC2 实例到 Amazon S3的网络连接
验证EC2实例是否可以连接到S3端点。
该实例必须为以下之一:
具有公共IP地址的EC2实例及带有指向Internet网关的默认路由的路由表条目。
具有通过 NAT 网关的默认路由的私有EC2实例。
使用 网关 VPC 终端节点私有 EC2 实例连接到 Amazon S3。
验证对 S3 存储桶的访问
-
安装 AWS CLI。
-
通过运行以下命令来验证对您的 S3 存储桶的访问: