AWS System Manager(SSM)在InvalidPluginName中获取命令调用结果

库桑

我已经能够成功将SSM命令发送到EC2实例。

这是我正在使用的Python Lambda代码:

            # System Manager send_command
            response = ssm_client.send_command(
                        InstanceIds=[instanceID],
                        DocumentName=document,
                        Parameters={'action': ['Install'],'licenseKey': [licenseKeyValue],})
                        
            command_id = response['Command']['CommandId']
            print("Command ID: " + command_id)

该文档为:arn:aws:ssm:us-east-2:539736333151:document / New-Relic_Infrastructure

[更新:问题出在本文档中具有多个插件(操作)的文档中。必须使用--plugin-namecorrectName来获取状态。

我知道send_command正在使用此文档。我也知道commandID。

我已经在实例以及在适用于Systems Manager的AWS CLI中-> Run Command界面中看到了结果。

现在,我正在尝试通过get-command-invocation检索命令状态。我的AWS CLI命令:

aws ssm get-command-invocation --command-id 28XXXa35-dXX1-4XX1-9XX0-9ecfXXXX29ae --instance-id i-0c038XXXXc4e9c66e

我收到此回复:

调用GetCommandInvocation操作时发生错误(InvalidPluginName):

我也尝试过:

aws ssm get-command-invocation --command-id 28XXXa35-dXX1-4XX1-9XX0-9ecfXXXX29ae --instance-id i-0c038XXXXc4e9c66e --plugin-name runShellScript

具有完全相同的响应。

关于为什么我在可选插件收到无效插件错误的任何想法

来自:aws ssm get-command-invocation帮助

概要

        get-command-invocation
      --command-id <value>
      --instance-id <value>
      [--plugin-name <value>]
      [--cli-input-json | --cli-input-yaml]
      [--generate-cli-skeleton <value>]
      [--cli-auto-prompt <value>]

选项

   --command-id (string)
      (Required) The parent command ID of the invocation plugin.

   --instance-id (string)
      (Required) The ID of the managed instance targeted by the command. A
      managed  instance  can  be  an Amazon EC2 instance or an instance in
      your hybrid environment that is configured for Systems Manager.

   --plugin-name (string)
      (Optional) The name of  the  plugin  for  which  you  want  detailed
      results.  If  the document contains only one plugin, the name can be
      omitted and the details will be returned.

提前致谢。

阿维·平托

跑步也有同样的问题 AWS-RunPatchBaseline

如果查看New-Relic_Infrastructure文档的内容,您会注意到该文档可以执行两个操作:aws:runPowerShellScript ("name": "WindowsInstallNewRelicInfrastructureAgent")aws:runShellScript ("name": "LinuxInstallNewRelicInfrastructureAgent")

因此,为了获得ssm_client.get_command_invocation的结果,您还必须发送 PluginName="WindowsInstallNewRelicInfrastructureAgent" or "LinuxInstallNewRelicInfrastructureAgent"

问题是,在您拨打电话后ssm_client.send_command,通话get_command_invocation会因错误而失败

调用GetCommandInvocation操作时发生错误(InvalidPluginName)

您必须等到命令完成运行,然后才能通过运行对其进行检查

# we must wait for command to finish before we query the get_command_invocation on the instance, or else the Plugins list will be empty and we will crash
keepWaiting = None
while keepWaiting is None: 
    commandResp = ssm_client.list_commands(
        CommandId=command['Command']['CommandId'] #this way we will get only this command without it crashing because it is mising the Plugin name 
    )
    if commandResp['Commands'][0]['Status'] == "InProgress" or commandResp['Commands'][0]['Status'] == "Pending":            
        time.sleep(30)
    else:
        keepWaiting = 1
    )
    

有趣的是,如果您在Powershell中运行:

Get-SSMCommandInvocation -CommandId 'theCommandIdYouJustGot' -Detail $true 

你会看到的命令,它的地位,你可以看到CommandPlugins是空的,而状态是InProgress,当状态变为SuccessCommandPlugins将包含两个值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AWS System Manager启动会话:调用StartSession操作时发生错误(TargetNotConnected):<instance_id>未连接

来自分类Dev

AWS System Manager可以以ec2-user身份登录吗

来自分类Dev

使用aws-sdk-v1在ruby脚本中从AWS SSM参数存储获取数据

来自分类Dev

AWS Glue 中的 AWS 区域

来自分类Dev

在NodeJS中访问AWS SSM参数

来自分类Dev

在NodeJS Lambas中访问AWS SSM参数

来自分类Dev

如何从 AWS 中的 Athena 获取结果格式 JSON?

来自分类Dev

获取PHP中system()命令所回显的值

来自分类Dev

system()中的变量调用C ++

来自分类Dev

在C中利用system()调用

来自分类Dev

如何从 CodePipeline 调用 AWS CLI 命令?

来自分类Dev

使用 AWS SSM 运行命令的环境变量

来自分类Dev

使用System()从R脚本调用Python命令

来自分类Dev

AWS CloudFormation可以调用AWS API吗?

来自分类Dev

合并AWS CLI结果

来自分类Dev

R system()命令错误

来自分类Dev

从AWS Lambda获取AWS IoT影子状态

来自分类Dev

AWS Lambda 调用 Lambda

来自分类Dev

Fargate和SSM的AWS权限

来自分类Dev

无法调用System :: Action ^

来自分类Dev

C:暂停system()调用

来自分类Dev

从c调用system()

来自分类Dev

获取子网ID AWS

来自分类Dev

从python的“ os.system”调用中调用时,会启动两个“ prstat”命令

来自分类Dev

无法使用AWS SSM命令中传递的awk过滤器打印第二个字段

来自分类Dev

与System.TypeLoadException中的更新结果

来自分类Dev

AWS CLI:如何在aws ssm send-command目标中扩展变量?

来自分类Dev

在AWS中还原DEIS

来自分类Dev

延迟AWS中的工作