我正在编写一个boto脚本,使用JmesPath过滤掉cloudtrail。
JmesPath应该将输出作为bucket的名称。我不确定什么是正确的语法。提前谢谢
logs = cloudtrail.create_trail(
Name='GoodTrail',
S3BucketName='goodbucket3',
)
print(logs)
path = jmespath.search('logs',{'S3BucketName': ''}})
print(path)
这就是print(logs)
给出的结果:
{
"Name": "GoodTrail",
"S3BucketName": "goodbucket3",
"IncludeGlobalServiceEvents": true,
"IsMultiRegionTrail": false,
"TrailARN": "arn:aws:cloudtrail:us-east-1:XXXXXXXXXXX:trail/GoodTrail",
"LogFileValidationEnabled": false,
"IsOrganizationTrail": false,
"ResponseMetadata": {
"RequestId": "520fdfae-02ea-4695-857c-c47c7bcb00dd",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"x-amzn-requestid": "520fdfae-02ea-4695-857c-c47c7bcb00dd",
"content-type": "application/x-amz-json-1.1",
"content-length": "242",
"date": "Fri, 18 Dec 2020 15:48:26 GMT"
},
"RetryAttempts": 0
}
}
这方面的三个主要问题:
search
函数时,必须将表达式作为第一个参数,将JSON文档作为第二个参数,而在这里,则相反。 来源:https://jmespath.org/specification.html#jmespath-specification因此,你应该:
'logs'
传递给search
函数,而不是包含JSON文档本身的变量logs
,因此它应该是S3BucketName
因此,通过脚本test.py:
给出:
相关问题 更多 >
编程相关推荐