

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

# 在 Amazon EC2 实例上运行的应用程序的 IAM 角色
<a name="us-iam-role"></a>

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

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

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

**Contents**
+ [前提条件](#us-iam-role-prereq)
+ [创建启动模板](#us-iam-role-create-lt)
+ [另请参阅](#iam-role-see-also)

## 前提条件
<a name="us-iam-role-prereq"></a>

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

如果您使用 IAM 控制台而不是其中一个 AWS SDKs， AWS CLI 则控制台会自动创建实例配置文件，并为其指定与其对应的角色相同的名称。<a name="create-iam-role-console"></a>

**创建 IAM 角色（控制台）**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在左侧的导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 对于**选择可信实体**，选择 **AWS 服务**。

1. 对于您的使用案例，选择 **EC2**，然后选择 **Next**（下一步）。

1. 如果可能，选择要用作权限策略的策略，或选择 **Create policy**（创建策略）以打开新的浏览器选项卡并从头开始创建新策略。有关更多信息，请参阅《IAM 用户指南》**中的[创建 IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-start)。在您创建策略后，关闭该选项卡并返回到您的原始选项卡。选中您希望服务具有的权限策略旁边的复选框。

1. （可选）设置权限边界。这是一项可用于服务角色的高级功能。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM 实体的权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。

1. 选择**下一步**。

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

1. 检查该角色，然后选择**创建角色**。

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

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

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/qateam-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ec2.amazonaws.com",
                        "ec2.amazonaws.com.rproxy.govskope.us.cn"
                    ]
                }
            }
        }
    ]
}
```

------

**重要**  
有关 Amazon EC2 Auto Scaling 如何验证使用启动模板的自动扩缩组的`iam:PassRole`操作权限的信息，请参阅[`ec2:RunInstances` 和 `iam:PassRole` 的权限验证](ec2-auto-scaling-launch-template-permissions.md#runinstances-permissions-validation)。

## 创建启动模板
<a name="us-iam-role-create-lt"></a>

使用创建启动模板时 AWS 管理控制台，在**高级详细信息**部分，从 **IAM 实例配置文件**中选择角色。有关更多信息，请参阅 [使用高级设置创建启动模板](advanced-settings-for-your-launch-template.md)。

使用中的[create-launch-template](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-launch-template.html)命令创建启动模板时 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"}}'
```

## 另请参阅
<a name="iam-role-see-also"></a>

有关帮助您开始了解和使用 Amazon EC2 的 IAM 角色的更多信息，请参阅：
+ 《Amazon EC2 用户指南》**中的[适用于 Amazon EC2 的 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)
+ *IAM 用户指南*中的使用[使用实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)和[使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)