Boto3:describe_auto_scaling_groups 在输入中给出未知参数:"Filters" 错误

Boto3:describe_auto_scaling_groups giving Unknown parameter in input: "Filters" error

我正在尝试列出一组基于标记值的已过滤 ASG,如下所示:

client = boto3.client('autoscaling',region)
asg=client.describe_auto_scaling_groups(
        Filters=[
                {"Name": "tag:ecs_cluster", "Values": ["testCluster"]},
                {"Name": "tag:cluster-name", "Values": ["ciCluster"]}
            ])

这与 Boto3 内联 documentation 但在执行时会出现以下错误:

Parameter validation failed: Unknown parameter in input: "Filters", must be one of: AutoScalingGroupNames, NextToken, MaxRecords

如何在不提供任何 AutoScalingGroupNames 的情况下获得过滤列表?

对于遇到此问题的任何人:

“过滤器”选项是最近推出的一项新功能。这目前适用于最新的 AWS CLI,我也使用最新版本进行了测试,我可以确认它正在运行。

工作版本:

aws --version
aws-cli/2.4.0 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off

其他服务仍在更新中,尚无预计何时可在所有平台上使用。在更新 Lambda 时,您可以使用当前版本的 AWS CLI。

好吧,我遇到了与您提到的完全相同的错误,在本地脚本中工作正常但在 lambda 中却不行,但我想说“过滤器”不起作用的真正罪魁祸首是 lambda 上的 botocore 版本。

这是在本地脚本上运行良好但在 Lambda 上运行不正常的代码部分:

response = asg.describe_auto_scaling_groups(Filters=[{'Name': 'tag:Patch Group','Values': ['asg',]},],MaxRecords=100) 

我确实打印出了 Lambda 的 boto3 和 botocore 版本:

print(boto3.__version__)
print(botocore.__version__)

我确实在本地安装了相同的版本,并且能够在本地重现相同的 lambda 错误

pip install boto3==1.18.55
pip3 install botocore==1.21.55 

this article 之后,我怀疑我是否应该上传自己的 python + botocore + boto3 层,或者我是否应该处理代码以使其与 Lambda 的默认 boto3 + botocore 版本一起工作.

顺便说一句,这些是适用于它的版本:

  • aws-cli/2.3.6 Python/3.8.8 Linux/5.13.0-27-generic exe/x86_64.ubuntu.20 prompt/off
  • Python 3.8.10
  • boto3 版本:1.20.26
  • botocore 版本:1.21.65

Lambda 运行时的 link 也很有帮助。

此致