我创建了一个 IAM 角色,但启动实例时此角色未显示在下拉列表中。我该怎么办?

上次更新时间:2019 年 4 月 16 日

我创建了一个新的 AWS Identity and Access Management (IAM) 角色,但在启动实例时无法在下拉列表中找到此角色。

解决方法

下拉列表包含实例配置文件而不是 IAM 角色,但是您可以将 IAM 角色添加到实例配置文件。您必须选择已将所需的 IAM 角色添加到的实例配置文件。

请按照以下步骤创建一个关联到实例配置文件的新 IAM 角色。然后,在启动实例时从下拉列表中选择实例配置文件。使用 IAM 控制台或 AWS 命令行界面 (AWS CLI) 创建链接到实例配置文件的新 IAM 角色。

使用 IAM 控制台

1.    打开 IAM 控制台

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

3.    选择 EC2 作为 AWS 服务,并选择 EC2 作为您的使用案例,然后选择下一步:权限

4.    为您的使用案例选择策略名称,并选择下一步:标签,然后选择下一步:检查

5.    输入角色名称,然后选择创建角色

选择 EC2 作为您的使用案例将为 Amazon Elastic Compute Cloud (Amazon EC2) 创建信任关系。您的 EC2 使用案例还将创建实例配置文件,为其提供与 IAM 角色相同的名称,然后将 IAM 角色添加到相同的实例配置文件。如果创建 IAM 角色时未选择 EC2,则不会为 Amazon EC2 创建实例配置文件和信任关系。

使用 AWS CLI

重要提示:开始之前,您必须已经安装配置了 AWS CLI。

1.    创建一个名为 Test-Role-Trust-Policy.json 的文件并将以下策略粘贴到该文件中:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

2.    通过运行以下命令创建 IAM 角色

$ aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json

3.    通过运行以下命令创建实例配置文件

$ aws iam create-instance-profile --instance-profile-name Webserver

4.    通过运行以下命令将 IAM 角色添加到实例配置文件:

aws iam add-role-to-instance-profile --role-name Test-Role --instance-profile-name Webserver

对于 EC2 的现有 IAM 角色,您必须将 EC2 服务委托人添加到其现有信任策略中。有关详细信息,请参阅指定委托人

注意:如果 IAM 角色和实例配置文件具有不同的名称,您必须选择在启动 EC2 实例时已将所需的 IAM 角色添加到的实例配置文件。此 IAM 角色将不会在下拉列表中列出。