尝试使用AWS控制台和EC2 Run Command for Windows

时间:2016-06-22 16:19:32

标签: amazon-web-services amazon-ec2

我正在尝试使用Amazon EC2 Run Command功能,基本上它说它无法找到任何实例。

我阅读了所有文档,并按照我在这个相对较新的功能上找到的所有步骤进行操作,但我无法让它在我的生活中工作。

以下是信息:

我去了" EC2 - >命令 - >命令历史 - >运行命令" 我点击" AWS-RunShellScript"的单选框。命令文件 我点击了"选择实例"下拉按钮,它说"在这个地区找不到任何实例"如下图1所示。

我点击"我的实例在哪里?"超链接,它带我到AWS文档显示在这里:" Troubleshooting SSM Run Command"

第一个疑难解答建议是确保满足先决条件,并提供此处显示的另一个超链接:" SSM Run Command Prerequisites"

先决条件:

  1. 支持的操作系统 - Windows 2012 R2 - 检查
  2. 最新代理商版本 - 3.17.1032 - 检查(如图2所示)
  3. 访问SSM运行命令 - 分配EC2实例角色和IAM用户角色 - 检查(如图3和图4所示)
  4. Internet访问 - 出站Internet访问 - 检查
  5. 我按照AWS文档为EC2 Run Command Access创建了Amazon EC2实例角色,并创建了具有正确运行命令访问权限的IAM用户。文档显示在此处:Delegating Access to SSM Run Command

    我使用本地计算机上的Amazon CLI运行以下命令,也在故障排除文档中显示:

    aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance-ID
    

    该命令不返回任何信息:

      

    {       " InstanceInformationList":[]   }

    更新1:

    我确实在以下地方发现了以下错误和警告,并且花了最后两个小时尝试进行故障排除。我安装并重新安装了Ec2Config服务。我检查了所有的Ec2Config文件。我检查了169.254地址,并且存在元数据和动态数据,并且看起来是正确的。不知道还有什么可以尝试。

    C:\ Program Files \ Amazon \ Ec2ConfigService \ Logs \ Ec2ConfigLog - 错误/警告

      

    2016-06-22T23:44:12.663Z:警告:无法发布到WMI。 | System.Management.Instrumentation.WmiProviderInstallationException:类型' System.Management.Instrumentation.WMIInfraException'的异常。被扔了。      at System.Management.Instrumentation.InstrumentationManager.Publish(Object value)   2016-06-22T23:44:16.263Z:无法获取实例元数据http://169.254.169.254/latest/user-data异常远程服务器返回错误:(404)Not Found。   2016-06-22T23:44:16.263Z:无法获取元数据/用户数据远程服务器返回错误:(404)Not Found。

    Windows事件查看器错误

      

    2016-06-22 23:46:59,758 [_Worker-2] ERROR [aws:getDocument] - 无法更新实例信息。,RequestId = 9cb8f2dd-38d3-11e6-bc83-19c0650ffecc,ErrorCode = AccessDeniedException,ErrorType =未知的,的StatusCode =错误请求,消息=来电
      实例标识与给定的instanceId

    不匹配

    更新2:

    Per @ praetorian1的链接stackoverflow文章我更新了Ec2Config Services" config.xml"文件以启用" Ec2HandleUserData"设置,重新启动,仍然没有变化。

    Per @Kai的建议我也确保了"角色"附加到实例 匹配" AmazonEC2RoleforSSM"策略,特别是允许" ssm:UpdateInstanceInformation"。它确实。

    我还在AWS EC2管理控制台下查看了系统日志"特定实例的文件,其中不包含任何错误,并且最后说SSM配置:状态:活动,iam:是。另外值得注意的是,它包含:Info EC2Config配置:状态:2;区域:美国东部-1; IAM:1; AuthZ的:1

      

    2016/06/23 15:01:29Z:EC2ConfigMonitorState:0   2016/06/23 15:01:29Z:Windows sysprep配置完成。   2016/06/23 15:01:32Z:AMI Origin Version:2016.01.13   2016/06/23 15:01:32Z:AMI原产地名称:Windows_Server-2012-R2_RTM-English-64Bit-SQL_2014_SP1_Web   2016/06/23 15:01:32Z:操作系统:Microsoft Windows NT 6.3.9600   2016/06/23 15:01:32Z:OsVersion:6.3   2016/06/23 15:01:32Z:OsProductName:Windows Server 2012 R2 Standard   2016/06/23 15:01:32Z:OsBuildLabEx:9600.18202.amd64fre.winblue_ltsb.160119-0600   2016/06/23 15:01:32Z:语言:en-US   2016/06/23 15:01:32Z:TimeZone:东部标准时间   2016/06/23 15:01:32Z:偏移:UTC -04:00:00   2016/06/23 15:01:32Z:EC2代理:Ec2Config服务v3.17.1032   2016/06/23 15:01:32Z:驱动程序:AWS PV Storage Host Adapter v7.3.2.0   2016/06/23 15:01:32Z:驱动程序:英特尔(R)82599虚拟功能v1.0.15.3   2016/06/23 15:01:34Z:消息:等待元数据可访问性...   2016/06/23 15:01:34Z:消息:现在可以获得元数据。   2016/06/23 15:01:37Z:消息:Windows已准备就绪   2016/06/23 15:01:40Z:Amazon EC2简单系统管理器(SSM)是一个用于自定义实例配置的可选服务。   2016/06/23 15:01:40Z:信息EC2Config配置:状态:2;区域:美国东部-1; IAM:1; AuthZ的:1   2016/06/23 15:01:40Z:SSM配置:状态:活动; IAM:是

    图1: No Instances Found

    图2: EC2 SSM Agent

    Figure 3:

    图4: RunCommandInstance Policy

2 个答案:

答案 0 :(得分:1)

尝试检查实例上Windows中的应用程序日志。出于某种原因,可能会遇到与SSM服务交谈的问题。

答案 1 :(得分:1)

正如praetorian1所述,Windows事件查看器是查找SSM - EC2运行命令相关日志消息的地方。

您发布的消息表明EC2实例没有调用ssm:UpdateInstanceInformation API所需的权限。请仔细检查RunCommandInstance角色是否附有AmazonEC2RoleforSSM政策。 (在附加策略后,请重启EC2Config服务或等待最多15分钟,以便EC2Config开始报告实例信息。)

对于图4中的IAM用户,我们不需要AmazonSSMFullAccess以外的策略来使用awscli调用SSM API。

深入研究:

EC2实例的EC2角色和IAM政策

Windows上的SSM要求在启动时附加到EC2实例的IAM EC2角色。该角色的必需权限由亚马逊管理的IAM策略AmazonEC2RoleforSSM提供。

IAM用户的IAM政策

要使用awscli对SSM服务进行API调用,必须使用SSM权限设置IAM用户。为了进行测试,Amazon提供了托管IAM策略AmazonSSMFullAccess。使用此IAM用户的凭据,我们将能够进行API调用以描述实例信息,并将命令发送到实例。

DescribeInstanceInformation API

一旦设置了具有所需权限的EC2实例并且EC2Config开始将实例信息报告回SSM,我们将能够使用DescribeInstanceInformation API获取准备用于SSM的EC2实例列表 - EC2 Run Command。