适用于 Java 的 AWS 开发工具包
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

为 Amazon EC2 配置 IAM 角色(高级)

必须使用由 AWS 颁发的凭证对发送到 AWS 服务的所有请求进行加密签名。可以使用 IAM 角色方便地授予对 Amazon EC2 实例上的 AWS 资源的安全访问权。

本主题介绍如何将 IAM 角色用于 Amazon EC2 上运行的AWS SDK for Java应用程序。有关 IAM 实例的更多信息,请参阅 Amazon EC2 User Guide for Linux Instances中的Amazon EC2 的 IAM 角色

默认提供程序链和 Amazon EC2 实例配置文件

如果您的应用程序使用 create 方法创建了一个 AWS 客户端,该客户端将按照以下顺序使用默认凭证提供程序链搜索凭证:

  1. Java 系统属性:aws.accessKeyIdaws.secretKey

  2. 系统环境变量:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

  3. 默认凭证文件 (在不同平台上该文件位于不同位置)。

  4. 在 Amazon ECS 环境变量中:AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  5. 在实例配置文件凭证中,,它存在于与 EC2 实例的 IAM 角色关联的实例元数据中。

仅当在 Amazon EC2 实例上运行您的应用程序时,默认提供程序链中的最终步骤才可用。但是,当与 Amazon EC2 实例一起使用时,它将提供最大的易用性和最高安全性。您还可以将 InstanceProfileCredentialsProvider 实例直接传递给客户端构造函数,这样无需执行整个默认提供程序链即可获取实例配置文件凭证。

例如:

S3Client s3 = S3Client.builder() .credentialsProvider(InstanceProfileCredentialsProvider.builder().build()) .build();

当您使用此方法时,开发工具包将检索与 Amazon EC2 实例(位于其实例配置文件中)的关联 IAM 角色的关联凭证具有相同权限的临时 AWS 凭证。尽管这些凭证是临时凭证,而且最终会过期,但 InstanceProfileCredentialsProvider 会定期为您刷新它们,保证您收到的凭证可继续访问 AWS。

演练:将 IAM 角色用于 Amazon EC2 实例

本演练将介绍如何使用 IAM 角色从 Amazon S3 中检索对象以管理访问。

创建 IAM 角色

创建授予对 Amazon S3 的只读访问权的 IAM 角色。

创建 IAM 角色

  1. 打开 IAM 控制台

  2. 在导航窗格中,选择角色,然后选择创建新角色

  3. 选择角色类型页上的 AWS 服务角色下,选择 Amazon EC2

  4. 附加策略页上,选择 Amazon S3 只读访问权限,然后选择下一步

  5. 输入角色名称,然后选择下一步。请记住此名称,

    因为在启动 Amazon EC2 实例时会用到它。

  6. Review 页面上,选择 Create Role

启动 EC2 实例并指定您的 IAM 角色

您可通过 Amazon EC2 控制台,使用 IAM 角色启动 Amazon EC2 实例。

要使用控制台启动 Amazon EC2 实例,请参阅 Amazon EC2 User Guide for Linux Instances中的 Amazon EC2 Linux 实例入门

到达核查实例启动页面时,选择编辑实例详细信息。在 IAM 角色中,选择您之前创建的 IAM 角色。按指示完成该过程。

注意

您需要创建或使用现有安全组和密钥对才能连接到该实例。

利用此 IAM 和 Amazon EC2 设置,您可以将应用程序部署到 EC2 实例,它将具有对 Amazon S3 服务的读取访问权限。