我无法从我的 Amazon Elastic Compute Cloud(Amazon EC2)实例访问 Amazon Simple Storage Service(Amazon S3)存储桶。如何激活 EC2 实例对 S3 存储桶的读/写访问权限?
简短描述
要从 EC2 实例连接到 S3 存储桶,您必须执行以下操作:
-
创建一个 AWS Identity and Access Management(AWS IAM)配置文件角色,授予对 Amazon S3 的访问权限。
-
将 IAM 实例配置文件附加到该实例。
-
验证在您的 S3 存储桶上的权限。
-
验证从 EC2 实例到 Amazon S3 的网络连接。
-
验证对 S3 存储桶的访问权限。
解决方法
创建 IAM 实例配置文件,授予对 Amazon S3 的访问权限
-
打开 IAM 控制台。
-
选择角色,然后选择创建角色。
-
选择 AWS 服务,然后在用例下选择 EC2。
**注意:**从控制台创建 IAM 角色并选择 EC2 作为可信实体会自动创建与角色名称同名的 IAM 实例配置文件。但是,如果角色是使用 AWS 命令行界面(AWS CLI)或通过 API 创建的,则不会自动创建实例配置文件。有关更多信息,请参阅我创建了一个 IAM 角色,但是当我启动实例时,该角色没有出现在下拉列表中。我该怎么办?
-
选择下一步: 权限。
-
创建自定义策略,提供访问 S3 存储桶所需的最低权限。有关创建自定义策略的说明,请参阅编写 IAM 策略:如何授予对 Amazon S3 存储桶的访问权限和 Amazon S3 中的身份和访问管理。
**注意:**创建具有所需最低权限的策略是一种安全最佳实践。但是,要允许 EC2 访问您的所有 Amazon S3 存储桶,请使用 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess 托管 IAM 策略。
-
选择下一步: 标签,然后选择下一步: 审核。
-
输入角色名称,然后选择创建角色。
将 IAM 实例配置文件附加到 EC2 实例
-
打开 Amazon EC2 控制台。
-
选择实例。
-
选择您要附加 IAM 角色的实例。
-
依次选择操作选项卡、安全,然后选择修改 IAM 角色。
-
选择您刚刚创建的 IAM 角色,然后选择保存。IAM 角色现已分配给您的 EC2 实例。
验证在您的 S3 存储桶上的权限
-
打开 Amazon S3 控制台。
-
选择您要验证其策略的 S3 存储桶。
-
选择权限。
-
选择桶策略。
-
搜索带有 Effect: Deny的语句。
-
在您的存储桶策略中,编辑或移除所有含 Effect: Deny 的语句,这些是拒绝 IAM 实例配置文件访问您的存储桶的语句。有关编辑策略的说明,请参阅编辑 IAM 策略。
验证从 EC2 实例到 Amazon S3 的网络连接
要使您的 EC2 实例连接到 S3 端点,该实例必须为以下实例之一:
- 具有公有 IP 地址且路由表默认路由指向互联网网关的EC2 实例
- 默认路由经过 NAT 网关的私有 EC2 实例
- 使用网关 VPC 端点连接到 Amazon S3 的私有 EC2 实例
要对私有 EC2 实例和 S3 存储桶之间的连接进行故障排除,请参阅为什么我无法使用网关 VPC 端点连接到 S3 存储桶?
验证对 S3 存储桶的访问权限
- 在您的 EC2 实例上安装 AWS CLI。
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
- 执行以下命令验证对您的 S3 存储桶的访问权限。将 DOC-EXAMPLE-BUCKET 替换为您的 S3 存储桶的名称。
aws s3 ls s3://DOC-EXAMPLE-BUCKET
注意:使用 AWS Key Management Service(AWS KMS)密钥加密的 S3 对象必须具有 以下授予的 kms:Decrypt 权限:
如果未授予这些权限,则您无法复制或下载 S3 对象。有关更多信息,请参阅当我从 Amazon S3 下载 KMS 加密的对象时,我是否需要指定 AWS KMS 密钥?
相关信息
为什么我无法使用网关 VPC 端点连接到 S3 存储桶?