我在實際成功回圈 AWS Config 的 boto3 結果時遇到了問題。根據我的測驗,我能夠執行回圈;但是,對于不同的 ARN,它只輸出相同的違規而不是每個違規。
我在執行以下操作時意識到代碼中的問題所在:
for arn in configRule.items():
acmArn = configRule['EvaluationResults'][0]['EvaluationResultIdentifier']['EvaluationResultQualifier']['ResourceId']
但是,當我嘗試取出[0]so 它不是一個特定的專案時,我得到“串列索引必須是整數或切片,而不是 str”。
我的問題是,是否有一種實際的方法可以使該值遞增,以便能夠獲得違規的不同 ARN?對不起,如果這是一個簡單的答案,對 Python 來說仍然是新手,所以試圖弄清楚這一切。
輸出示例:
{
"EvaluationResults": [
{
"Annotation": "Certificate will expire on 2023-01-21T23:59:59.000Z",
"ComplianceType": "NON_COMPLIANT",
"ConfigRuleInvokedTime": "2022-01-03 18:28:54.939000 00:00",
"EvaluationResultIdentifier": {
"EvaluationResultQualifier": {
"ConfigRuleName": "acm-certificate-expiration-check",
"ResourceId": "arn:aws:acm:us-west-2:xxxx:certificate/39a95537-e5aa-46dd-bc9b-04d7b2606bd0",
"ResourceType": "AWS::ACM::Certificate"
},
"OrderingTimestamp": "2021-12-22 00:29:01 00:00"
},
"ResultRecordedTime": "2022-01-03 18:28:55.672000 00:00"
},
{
"Annotation": "Certificate will expire on 2023-01-10T23:59:59.000Z",
"ComplianceType": "NON_COMPLIANT",
"ConfigRuleInvokedTime": "2022-01-03 18:28:54.939000 00:00",
"EvaluationResultIdentifier": {
"EvaluationResultQualifier": {
"ConfigRuleName": "acm-certificate-expiration-check",
"ResourceId": "arn:aws:acm:us-west-2:xxxx:certificate/493de1e8-2bcb-42c7-96df-ce88bdeac64c",
"ResourceType": "AWS::ACM::Certificate"
},
"OrderingTimestamp": "2021-12-12 18:25:14 00:00"
},
"ResultRecordedTime": "2022-01-03 18:28:55.683000 00:00"
}
],
"ResponseMetadata": {
"HTTPHeaders": {
"content-length": "955",
"content-type": "application/x-amz-json-1.1",
"date": "Mon, 03 Jan 2022 20:13:06 GMT",
"strict-transport-security": "max-age=86400",
"x-amzn-requestid": "a6e51323-9e4c-44c7-a15a-ea0314392ab6"
},
"HTTPStatusCode": 200,
"RequestId": "a6e51323-9e4c-44c7-a15a-ea0314392ab6",
"RetryAttempts": 0
}
}
uj5u.com熱心網友回復:
configRules.items()對于您的示例,將是一個包含單個元組的序列,('EvaluationResults', [...]). 您并不真正關心那個密鑰:您在正文中對其進行了硬編碼。您真正想要的是遍歷dict串列中的s configRule['EvaluationResults']:
for arn in configRule['EvaluationResults']:
acmArn = arn['EvaluationResultIdentifier']['EvaluationResultQualifier']['ResourceId']
uj5u.com熱心網友回復:
所以,我不確定這是否是正確的方法,但現在這就是我讓它作業的方式。這允許我在那里添加一個變數并在每次執行回圈時增加它。
我確信有更好的方法可以做到這一點,但只是我在做一些測驗時發現的。
i = 0
for key, value in configRule.items():
acmArn = configRule['EvaluationResults'][i]['EvaluationResultIdentifier']['EvaluationResultQualifier']['ResourceId']
i =1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/402869.html
標籤:
