【问题标题】:Why AWS Python SDK IAM Client get_account_authorization_details method producing Type Error?为什么 AWS Python SDK IAM 客户端 get_account_authorization_details 方法会产生类型错误?
【发布时间】:2021-09-10 03:21:08
【问题描述】:

我正在使用 boto3 文档 (https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.get_account_authorization_details) 中提供的代码和此代码:

import boto3
import boto3.session

my_session = boto3.session.Session(profile_name='US-Prod')
client = my_session.client('iam')

response = client.get_account_authorization_details(
    Filter=[
        'User'|'Role'|'Group'|'LocalManagedPolicy'|'AWSManagedPolicy',
    ],
    MaxItems=123,
    Marker='string'
)

产生这个错误:

Exception has occurred: TypeError
unsupported operand type(s) for |: 'str' and 'str'
  File "C:\Users\bg216063\Documents\AWS\sre-scripts\excel\mkIAMxls.py", line 9, in <module>
    'User'|'Role'|'Group'|'LocalManagedPolicy'|'AWSManagedPolicy',

当我从文档示例中复制和粘贴后,为什么不支持这些类型?

【问题讨论】:

  • | 表示它至少是这些值之一。例如,尝试指定Filter=["User"]

标签: python amazon-web-services boto3


【解决方案1】:

文档中的管道符号表示“或”。也就是说,可以指定'User''Role'等...

您链接的文档还指出:

此参数的格式是逗号分隔的(如果有多个) 字符串列表。列表中的每个字符串值必须是 下面列出的有效值。

为了使您的代码与文档一致(并使其在语法上正确的 Python 代码),它将如下所示:

response = client.get_account_authorization_details(
    Filter=[
        'User','Role','Group','LocalManagedPolicy','AWSManagedPolicy'
    ],
    MaxItems=123,
    Marker='string'
)

虽然那时我认为您可以删除过滤器,因为您请求的是所有类型,所以您并没有真正过滤结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2021-06-24
    • 2022-09-23
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多