我创建了一个 Amazon Event Bridge 规则,并且想使用 AWS CLI 在其上附加目标。
我知道当您在 Windows 10 命令提示符上的 aws cli 中使用 json 字符串时,您需要
所以,我在命令提示符下调用它
aws events put-targets --rule xxxxxxxxxxxxxxxxxxxxxxxxx --targets "{\"Arn\":\"arn:aws:ssm:ap-northeast-1:awsaccountid:automation-definition/AWS-StartEC2Instance\",\"Input\":\"{\"InstanceId\":[\"i-xxxxxxxxxxxxxxxxx\"]}\",\"Id\":\"aaaaaaaa\",\"RoleArn\":\"arn:aws:iam::awsaccountid:role/some-ssm-role\"}"
但出现错误:
Error parsing parameter '--targets': Invalid JSON: Expecting ',' delimiter: line 1 column 104 (char 103)
JSON received: {"Arn":"arn:aws:ssm:ap-northeast-1:awsaccountid:automation-definition/AWS-StartEC2Instance","Input":"{"InstanceId":["i-xxxxxxxxxxxxxxxxx"]}","Id":"aaaaaaaa","RoleArn":"arn:aws:iam::awsaccountid:role/some-ssm-role"}
有什么建议吗?
附注
我确保以下命令在 Linux 终端上成功。
aws events put-targets --rule xxxxxxxxxxxxxxxxxxxxxxxxx --targets '{"Arn": "arn:aws:ssm:ap-northeast-1:awsaccountid:automation-definition/AWS-StopEC2Instance","Input":"{\"InstanceId\":[\"i-xxxxxxxxxxxxxxxxx\"]}","Id":"aaaaaaaa","RoleArn":"arn:aws:iam::awsaccountid:role/some-ssm-role"}'
您可以尝试以下操作吗:
aws events put-targets --rule xxxxxxxxxxxxxxxxxxxxxxxxx --targets "{\"Arn\":\"arn:aws:ssm:ap-northeast-1:awsaccountid:automation-definition/AWS-StartEC2Instance\",\"Input\":\"{\\\"InstanceId\\\":[\\\"i-xxxxxxxxxxxxxxxxx\\\"]}\",\"Id\":\"aaaaaaaa\",\"RoleArn\":\"arn:aws:iam::awsaccountid:role/some-ssm-role\"}"
或者,同样的事情,但这次使用插入符延续标记稍微更具可读性:
aws events put-targets ^
--rule xxxxxxxxxxxxxxxxxxxxxxxxx ^
--targets "{\"Arn\":\"arn:aws:ssm:ap-northeast-1:awsaccountid:automation-definition/AWS-StartEC2Instance\",\"Input\":\"{\\\"InstanceId\\\":[\\\"i-xxxxxxxxxxxxxxxxx\\\"]}\",\"Id\":\"aaaaaaaa\",\"RoleArn\":\"arn:aws:iam::awsaccountid:role/some-ssm-role\"}"
需要认识到的关键是,JSON 中的
Input
属性本身就是一个包含 JSON 的字符串,因此需要对其进行双重转义。这至少对我来说通过了初始格式验证。
我在 Windows cli 上遇到以下错误。 我该如何解决这个问题?
aws events put-rule --name "detect-console-login" --description "检测控制台登录。由虚拟机创建。" --event-pattern '"{"detail-type": ["AWS Console Sign In via CloudTrail"]}"' --region us-east-2 --state ENABLED 调用 PutRule 操作时发生错误 (InvalidEventPatternException) :事件模式无效。原因:过滤器不是一个对象
在 [来源:(String)""{"detail-type": ["AWS 控制台通过 CloudTrail 登录"]}"";行:1,列:2]