我正在尝试使用Amazon EC2 Run Command功能,基本上它说它无法找到任何实例。
我阅读了所有文档,并按照我在这个相对较新的功能上找到的所有步骤进行操作,但我无法让它在我的生活中工作。
以下是信息:
我去了" EC2 - >命令 - >命令历史 - >运行命令" 我点击" AWS-RunShellScript"的单选框。命令文件 我点击了"选择实例"下拉按钮,它说"在这个地区找不到任何实例"如下图1所示。
我点击"我的实例在哪里?"超链接,它带我到AWS文档显示在这里:" Troubleshooting SSM Run Command"
第一个疑难解答建议是确保满足先决条件,并提供此处显示的另一个超链接:" SSM Run Command Prerequisites"
先决条件:
我按照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:是
答案 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。