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

上次更新日期:2021 年 7 月 22 日

我无法从我的 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.    将该 IAM 实例配置文件附加到实例。

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

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

3.    验证对 S3 存储桶的访问。

解决方法

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

1.    打开 IAM 控制台

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

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

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

4.    选中下一步:权限

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

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

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

7.    输入 Role name(角色名称),然后选中 Create role(创建角色)。

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

1.    打开 Amazon EC2 控制台

2.    选择 Instances

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

4.    依次选择 Actions(选项卡)、Security(安全)和 Modify IAM role(修改 IAM 角色)。

5.    选中您刚刚创建的 IAM 角色,然后选择 Save(保存)。该 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 实例。
私有 EC2 实例使用网关 VPC 终端节点连接到 Amazon S3。

验证对 S3 存储桶的访问

1.    安装 AWS CLI。

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

2.    通过运行以下命令来验证对您的 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 密钥?


这篇文章对您有帮助吗?


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