Boto3:describe_auto_scaling_groups 在输入中给出未知参数:“过滤器”错误

Posted

技术标签:

【中文标题】Boto3:describe_auto_scaling_groups 在输入中给出未知参数:“过滤器”错误【英文标题】:Boto3:describe_auto_scaling_groups giving Unknown parameter in input: "Filters" error 【发布时间】:2021-12-27 10:38:14 【问题描述】:

我正在尝试根据标签值列出一组过滤的 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 的情况下获得过滤列表?

【问题讨论】:

你用的是什么版本的boto3? 这是通过 AWS lambda 运行的 lambda 中的 boto3 不完整。如果您使用的是 python 3.9 lambda 并且仍然无法正常工作,您必须捆绑自己的 boto3 吗? 如果我不传递 Filter 参数而只运行 client.describe_auto_scaling_groups() 它确实返回值。所以这并不是说该方法不存在。仍然无法理解为什么还需要我上传二进制文件。无论如何,它在后端的 Amazon Linux 2 机器上运行。 这确实是一个错误,感谢您将我推向正确的方向。我已经用 AWS 记录了它,一旦它解决了就会更新线程。 【参考方案1】:

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

“过滤器”选项是最近推出的一项新功能。这目前适用于最新的 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。

【讨论】:

【参考方案2】:

好吧,我遇到了与您提到的完全相同的错误,在本地脚本中工作正常但在 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 提示/关闭 Python 3.8.10 boto3 版本:1.20.26 botocore 版本:1.21.65

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

最好的问候

【讨论】:

以上是关于Boto3:describe_auto_scaling_groups 在输入中给出未知参数:“过滤器”错误的主要内容,如果未能解决你的问题,请参考以下文章

Boto3 CloudFormation 状态

AWS 成本浏览器 boto3

使用 Boto3 基于 AMI 创建 EMR 集群

使用 Python 和 Boto3 获取列表集群 Amazon Redshift

Boto3 从 S3 存储桶下载所有文件

python boto3 support