首页 > 解决方案 > AWS Systems Manager - 实例未显示

问题描述

谁能帮我调查 EC2 实例配置文件的问题?我创建了一个 EC2 实例并设置了一个 IAM 角色。但是,当我检查实例时,我看到:没有角色附加到实例配置文件:xxx-instance-profile。

知道我必须在哪里看吗?因为,当我检查该实例配置文件(角色)时,我信任它:

受信任的实体 身份提供者 ec2.amazonaws.com

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

我已附加一项权限策略 AmazonSSMManagedInstanceCore

当我转到我的实例时,我看到没有附加任何角色。而且,在 Systems Manager -> Session Manager 中,我看不到我的实例。

我不知道我做错了什么:(有什么建议吗?

问候,

标签: amazon-web-servicesamazon-ec2amazon-iam

解决方案


我不确定您所说的 EC2 实例配置文件问题是什么意思。实例配置文件是您授予 EC2 实例的权限集,方法是定义包含所需权限的策略并将该策略附加到角色。该角色附加到 EC2 实例。因为该角色将由服务使用,所以它必须与该服务具有信任关系。

您要使用哪个 Systems Manager 服务?您可以使用特定服务和对特定 AWS 实例的限制创建自己的自定义策略。或者,您可以使用托管策略。

以下是各种政策的一些例子。

假设您想要一个附加到 EC2 实例的角色,以便您可以使用Systems Manager Session Manager远程登录到该实例。

假设该实例位于具有到 Internet 的路由的VPC中,可以直接通过Internet 网关或通过NAT 网关到 Internet 网关。

在这种情况下,您的实例具有到 Systems Manager Session Manager 的 AWS 公共服务的路由。该实例必须安装Systems Manager Session Manager 代理。此代理预安装在 Amazon Linux 2、Amazon Linux 和 Ubuntu 16.04、18.04、20.04 上。

假设已安装代理并且有到服务的路由,那么您提到的实例需要通过 IAM 访问服务的权限。这是通过向 EC2 实例授予角色来完成的。

  • 为此,请访问 IAM - https://console.aws.amazon.com/iam/
  • 从导航面板中选择角色,创建一个新角色
  • 选择受信任实体的类型作为 AWS 服务
  • 选择常见用例下的 EC2 选项
  • 按下一个:权限
  • 如果需要,您可以在此处创建自定义策略,我建议使用托管策略
  • 通过搜索 AmazonEC2RoleforSSM 选择现有的托管策略,还有其他 SSM 托管策略,AmazonEC2RoleforSSM 专门用于管理 EC2
  • 选择它并按下一步:标签
  • 按下一个:审查,
  • 给它一个名字 - my-ec2-ssm-role

现在我们有了 EC2 实例的角色,接下来我们需要将该角色添加到实例中。

转到 EC2 - https://console.aws.amazon.com/ec2

  • 选择您的实例
  • 从右上角的菜单中,选择操作、安全性、修改 IAM 角色。
  • 选择刚刚创建的角色 my-ec2-ssm-role
  • 按保存

现在该角色已链接到 Systems Manager Session Manager https://console.aws.amazon.com/systems-manager/session-manager

  • 按开始会话
  • 您的实例应该是可见的,您可以选择它并按开始会话

如果您的实例不可见,则可能是您没有到AWS Service Endpoints的路由。例如,EC2 实例不在公共子网中或没有到 Internet 的路由。在这种情况下,您需要将 3 个 VPC 终端节点添加到您的子网。这些端点是:

  • com.amazonaws.[地区].ssm
  • com.amazonaws.[区域].ssmmessages
  • com.amazonaws.[区域].ec2messages

您可以在此处阅读如何设置它。


推荐阅读