【问题标题】:boto3 error for creating stack instances with "deployment targets"使用“部署目标”创建堆栈实例的 boto3 错误
【发布时间】:2023-02-23 04:25:46
【问题描述】:

我使用服务管理权限为 OU 创建_stack_instances,通过帐户列表的交集过滤,当我运行命令时,它给我一个错误,有人可以告诉我我的代码有什么问题吗?

  1. 通过 cli 出错

    参数验证失败: DeploymentTargets 中的未知参数:“AccountFilterType”,必须是以下之一:Accounts、AccountsUrl、OrganizationalUnitIds

  2. 通过 lambda 错误

    [错误] ParamValidationError:参数验证失败: DeploymentTargets 中的未知参数:“AccountFilterType”,必须是以下之一:Accounts、AccountsUrl、OrganizationalUnitIds

  3. 拉姆达代码:

    def add_stack_to_stackset(StackSetName,accountid):

     response = CF.create_stack_instances(
         StackSetName=StackSetName,
         DeploymentTargets={
             'OrganizationalUnitIds': ['ou-blah'],
              'Accounts': [accountid],
             'AccountFilterType': 'INTERSECTION'
         },
         Regions=['us-east-1']
     )
     op_id = response['OperationId']
     return op_id
    
  4. 客户端代码

    aws cloudformation create-stack-instances --stack-set-name demo --deployment-targets OrganizationalUnitIds=ou-blah,Accounts=12345,AccountFilterType=INTERSECTION --regions us-east-1 地区

【问题讨论】:

    标签: python-3.x amazon-web-services aws-lambda aws-cloudformation boto3


    【解决方案1】:

    有时 ValidationErrors 只是错误或在您使用旧版本的 boto3 时发生 - 例如,在 newest version of boto3 INTERSECTION 中是一个有效参数(如果您使用的是这个版本那么它是一个错误......) .

    您始终可以禁用请求验证:

    parameter_validation

    禁用参数验证(默认为 true, 参数已验证)。这是一个布尔值,要么为真 或假的。每当您使用客户端进行 API 调用时,参数 您提供的是通过一组验证检查运行的,包括(但 不限于)提供的必需参数、类型检查、否 未知参数、最小长度检查等。通常,你 应该启用参数验证。

    【讨论】:

    • 这就是问题所在。有人告诉我在启动时只需添加一个带有最新 boto3 的 lambda 层,我一旦这样做,就成功了。
    【解决方案2】:

    我有类似的问题,但使用 aws cli。升级到 aws cli v2 解决了它。所以我怀疑 boto3 也有同样的问题。使用最新版本应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 2018-10-01
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2020-08-19
      • 1970-01-01
      相关资源
      最近更新 更多