AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

关于伪参数

在您注册任务时,可以使用 --task-invocation-parameters 选项指定分别对于四种任务类型唯一的参数。您还可以使用伪参数 语法引用特定值,例如 {{TARGET_ID}}。维护时段任务运行时,它传递正确的值而不是伪参数占位符。

对于 Run Command 任务,会自动处理与目标(实例)的连接。对于其他任务类型(Automation、Step Functions 和 Lambda),您必须在 --task-invocation-parameters 选项中包括 {{TARGET_ID}} 伪参数。运行任务时,实际实例 ID 在 {{TARGET_ID}} 位置提供。

示例

例如,假设您的 Lambda 任务的负载在运行时需要引用实例 ID 和目标类型。如果任务仅在实例 ID 为 i-02573cafcfEXAMPLE 的单个实例上运行,您可以使用以下命令:

"TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestFunction", "TaskType": "LAMBDA", "TaskInvocationParameters": { "Lambda": { "Payload": "{ \"targetId\": \"i-02573cafcfEXAMPLE\", \"targetType\": \"INSTANCE\" }", "Qualifier": "$LATEST", "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE" } }

但是,如果您在自定义 "targetId" 字段中包含多个实例 ID,则操作失败。因此,要在多个实例上运行任务,您需要使用 {{TARGET_ID}}{{TARGET_TYPE}} 伪参数。在这种情况下,目标组中各个实例的 ID 通过 {{TARGET_ID}} 伪参数传递给任务执行,并且任务在目标组的每个实例上运行:

"TaskArn": "arn:aws:lambda:us-east-2:111122223333:function:SSMTestFunction", "TaskType": "LAMBDA", "TaskInvocationParameters": { "Lambda": { "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE", "Payload": "{ \"targetId\": \"{{TARGET_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }

另一个例子是,要运行停止您 Amazon EC2 实例的 Automation 任务,您必须指定 AWS-StopEC2Instance SSM 文档作为 TaskArn 值,并使用 {{TARGET_ID} 伪参数:

"TaskArn": "AWS-StopEC2Instance", "TaskType": "AUTOMATION" "TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{TARGET_ID}}" ] } } }

可用伪参数

以下列表描述了您可在 --task-invocation-parameters 选项中使用 {{PSEUDO_PARAMETER}} 语法指定的伪参数。

  • TARGET_ID:目标的 ID。如果目标类型为 INSTANCE (目前唯一支持的类型),则目标 ID 为实例 ID。

  • TARGET_TYPE:目标的类型。目前仅支持 INSTANCE。

  • WINDOW_ID:目标维护时段的 ID。

  • WINDOW_TASK_ID:正在执行的时段任务的 ID。

  • WINDOW_TARGET_ID:包含目标的时段目标的 ID (目标 ID)。

  • WINDOW_EXECUTION_ID:当前时段执行的 ID。

  • TASK_EXECUTION_ID:当前任务执行的 ID。

  • INVOCATION_ID:当前调用的 ID。