在 Amazon EC2 实例上运行的应用程序的 IAM 角色 - Amazon A EC2 uto Scaling

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon EC2 实例上运行的应用程序的 IAM 角色

在 Amazon EC2 实例上运行的应用程序需要凭证以访问其他 AWS 服务。要以安全的方式提供这些凭证,请使用 IAM 角色。角色可提供临时权限,以供应用程序在访问其他 AWS 资源时使用。角色的权限将确定允许访问资源的应用程序。

对于 Auto Scaling 组中的实例,您必须创建启动模板或启动配置,并选择要与实例关联的实例配置文件。实例配置文件是 IAM 角色的容器,在实例启动时允许 Amazon EC2 将 IAM 角色传递到实例。首先,创建具有访问 AWS 资源所需的所有权限的 IAM 角色。然后,创建实例配置文件并将该角色分配给它。

注意

作为最佳实践,我们强烈建议您创建该角色,使其拥有应用程序所需的最低其他 AWS 服务 权限。

先决条件

创建运行在 Amazon EC2 上的应用程序可代入的 IAM 角色。选择适当的权限,以便随后向应用程序提供可以进行所需 API 调用的角色。

如果您使用 IAM 控制台而不是 AWS CLI 或其中一个 AWS 软件开发工具包,则控制台会自动创建实例配置文件并将其命名为与其对应的角色相同的名称。

创建 IAM 角色(控制台)
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在左侧的导航窗格中,选择角色

  3. 选择 创建角色

  4. 对于选择可信实体,选择 AWS 服务

  5. 对于您的使用案例,选择 EC2,然后选择 Next(下一步)。

  6. 如果可能,选择要用作权限策略的策略,或选择 Create policy(创建策略)以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息,请参阅《IAM 用户指南》中的创建 IAM 策略。在您创建策略后,关闭该选项卡并返回到您的原始选项卡。选中您希望服务具有的权限策略旁边的复选框。

  7. (可选)设置权限边界。这是一项可用于服务角色的高级功能。有关更多信息,请参阅《IAM 用户指南》中的 IAM 实体的权限边界

  8. 选择下一步

  9. Name, review, and create(命名、检查并创建)页面上,对于 Role name(角色名称),请输入一个角色名称以帮助标识此角色的作用。此名称在您的 AWS 账户中必须唯一。由于其他 AWS 资源可能会引用该角色,因此您无法在角色创建后对其名称进行编辑。

  10. 检查该角色,然后选择创建角色

IAM 权限

使用基于 IAM 身份的策略来控制对新 IAM 角色的访问。使用指定实例配置文件的启动模板创建或更新自动扩缩组的 IAM 身份(用户或角色)将需要 iam:PassRole 权限。

下面的策略示例授予仅传递名称以 qateam- 开头的 IAM 角色的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/qateam-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } } ] }
重要

有关 Amazon EC2 Auto Scaling 如何验证使用启动模板的自动扩缩组的iam:PassRole操作权限的信息,请参阅ec2:RunInstances 和 iam:PassRole 的权限验证

创建启动模板

使用创建启动模板时 AWS Management Console,在高级详细信息部分,从 IAM 实例配置文件中选择角色。有关更多信息,请参阅 使用高级设置创建启动模板

使用中的create-launch-template命令创建启动模板时 AWS CLI,请指定您的 IAM 角色的实例配置文件名称,如以下示例所示。

aws ec2 create-launch-template --launch-template-name my-lt-with-instance-profile --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro","IamInstanceProfile":{"Name":"my-instance-profile"}}'

另请参阅

有关帮助您开始了解和使用 Amazon EC2 的 IAM 角色的更多信息,请参阅: