我遵循了 this 教程,以便在 ASG 终止实例之前执行 shell 命令。
但是当 SSM 尝试调用脚本时,我不断收到此错误
验证目标实例上的 SSM 代理可用性时,该步骤超时。实例上的 SSM 代理:[i-07b0850b2f3ced30c] 无法正常工作。更多诊断详情请参阅自动化服务故障排除指南。
我错过了什么?这是因为SSM代理正在停止?这与权限有关吗?
这是我正在使用的自动化:
description: 'This document will disjoin instances From an Active Directory, create an AMI of the instance, send a signal to LifeCycleHook to terminate the instance'
schemaVersion: '0.3'
assumeRole: '{{automationAssumeRole}}'
parameters:
automationAssumeRole:
default: 'arn:aws:iam::012345678901:role/automationAssumeRole'
description: (Required) The ARN of the role that allows automation to perform the actions on your behalf.
type: String
ASGName:
default: My_AutoScalingGroup
type: String
InstanceId:
type: String
LCHName:
default: my-lifecycle-hook
type: String
mainSteps:
- inputs:
DocumentName: AWS-RunShellScript
InstanceIds:
- '{{ InstanceId }}'
TimeoutSeconds: 3600
Parameters:
commands: ifconfig
executionTimeout: '7200'
name: DoSomething
action: 'aws:runCommand'
onFailure: 'step:TerminateTheInstance'
- inputs:
LifecycleHookName: '{{ LCHName }}'
InstanceId: '{{ InstanceId }}'
AutoScalingGroupName: '{{ ASGName }}'
Service: autoscaling
Api: CompleteLifecycleAction
LifecycleActionResult: CONTINUE
name: TerminateTheInstance
action: 'aws:executeAwsApi'
运行文档时实例是否已被管理?应该是.. 此错误表明 ssm 代理在实例上未激活,因此未传递命令。
我不希望 ssm 代理因规模缩小而停止..因为实例由于生命周期挂钩而处于终止:等待状态。
我遇到了同样的错误,并通过以下故障排除步骤修复了它。
在Windows实例中启动SSM代理的文档:
{
"schemaVersion": "2.0",
"description": "Start SSM agent on instance",
"mainSteps": [
{
"action": "aws:runPowerShellScript",
"name": "runPowerShellScript",
"inputs": {
"runCommand": [
"Start-Service AmazonSSMAgent"
]
}
}
]
}
希望这些步骤对您有帮助,谢谢。
我也遇到过类似的问题,最让我烦恼的是向实例角色添加“AmazonSSMFullAccess”策略。