我试图查看boto3命令的输出中是否存在名为“AccessKeyId”的键。在
我得到了这个错误:
File "aws_iam_rotate_keys.py", line 76, in delete_access_key
key2 = response['AccessKeyMetadata'][1]['AccessKeyId']
IndexError: list index out of range
这是生成错误的代码:
^{pr2}$以下是“回复”的内容:
{'AccessKeyMetadata': [{'UserName': 'bluethundr', 'AccessKeyId': 'AKIAJNYZQ2U5LGE6ZRWQ', 'Status': 'Active', 'CreateDate': datetime.datetime(2019, 3, 25, 17, 33, 40, tzinfo=tzutc())}], 'IsTruncated': False, 'ResponseMetadata': {'RequestId': '6b3e8952-4f27-11e9-af5a-356bad8d4700', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '6b3e8952-4f27-11e9-af5a-356bad8d4700', 'content-type': 'text/xml', 'content-length': '558', 'date': 'Mon, 25 Mar 2019 17:57:13 GMT'}, 'RetryAttempts': 0}}
我做错什么了?如果测试正确,如何执行此操作?在
在这个响应中,可以有一个或两个键。我想写一个包含两种可能性的if测试。在
如果有2个键,则响应如下所示,并且代码不会中断:
{'AccessKeyMetadata': [{'UserName': 'bluethundr', 'AccessKeyId': 'AKIAJNYZQ2U5LGE6ZRWQ', 'Status': 'Active', 'CreateDate': datetime.datetime(2019, 3, 25, 17, 33, 40, tzinfo=tzutc())}, {'UserName': 'bluethundr', 'AccessKeyId': 'AKIAJVNDVTUVFZHWSRSA', 'Status': 'Active', 'CreateDate': datetime.datetime(2019, 3, 25, 18, 8, 51, tzinfo=tzutc())}], 'IsTruncated': False, 'ResponseMetadata': {'RequestId': '16957e66-4f29-11e9-b7dc-7fcb6d606368', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '16957e66-4f29-11e9-b7dc-7fcb6d606368', 'content-type': 'text/xml', 'content-length': '771', 'date': 'Mon, 25 Mar 2019 18:09:09 GMT'}, 'RetryAttempts': 0}}
您在
if
子句中的检查有点混乱。您正在检查非空字符串,它将始终返回True
。在为了使其尽可能接近当前代码,请执行以下操作:
在该响应中,
AccessKeyMetadata
是一个项目的列表,因此索引1超出范围。在你的支票
是一个只测试这些常量字符串的检查。在控制台中运行此代码将返回:
^{pr2}$我想您应该改为测试响应对象:
相关问题 更多 >
编程相关推荐