Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 无法使用boto3创建ResourceGroup:查询格式无效_Python 3.x_Amazon Web Services_Boto3 - Fatal编程技术网

Python 3.x 无法使用boto3创建ResourceGroup:查询格式无效

Python 3.x 无法使用boto3创建ResourceGroup:查询格式无效,python-3.x,amazon-web-services,boto3,Python 3.x,Amazon Web Services,Boto3,我正在尝试使用以下boto3代码段创建资源组: kwargs = { 'Name': 'cluster.foo.io', 'Description': 'AWS resources assigned to the foo cluster.', 'ResourceQuery': { 'Type': 'TAG_FILTERS_1_0', 'Query': '[{"Key": "foo.io/cluster", "Values": ["clust

我正在尝试使用以下boto3代码段创建资源组:

kwargs = {
    'Name': 'cluster.foo.io',
    'Description': 'AWS resources assigned to the foo cluster.',
    'ResourceQuery': {
        'Type': 'TAG_FILTERS_1_0',
        'Query': '[{"Key": "foo.io/cluster", "Values": ["cluster.foo.io"]}]',
    },
    'Tags': {
        'foo.io/cluster': 'cluster.foo.io'
    }
}

client = boto3.client("resource-groups")
resp = client.create_group(**kwargs)
但我得到了以下错误:

File "/Users/benjamin/.pyenv/versions/3.7.3/Python.framework/Versions/3.7/lib/python3.7/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
File "/Users/benjamin/.pyenv/versions/3.7.3/Python.framework/Versions/3.7/lib/python3.7/site-packages/botocore/client.py", line 661, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.errorfactory.BadRequestException: An error occurred (BadRequestException) 
    when calling the CreateGroup operation: Query not valid: 
    Query format not valid: check JSON syntax
我不断地将查询与结果进行比较,但要么我看不出有什么不同,要么我在左边的字段中走得很远。我甚至使用了
json
模块,如下所示:

resp = self.resource_client.create_group(
    Name='cluster.foo.io',
    Description="AWS resources assigned to the foo cluster",
    ResourceQuery={
        "Type": "TAG_FILTERS_1_0",
        "Query": json.dumps([{"Key": "foo.io/cluster", "Values": ["cluster.foo.io"]}]),
    },
    Tags={
        "foo.io/cluster": "cluster.foo.io",
    },
)

任何帮助都将不胜感激

查询参数缺少ResourceTypeFilters和TagFilters。因此,ResourceQuery应该如下所示:

'ResourceQuery': {
    'Type': 'TAG_FILTERS_1_0',
    'Query': "{\"ResourceTypeFilters\": [\"AWS::AllSupported\"], \"TagFilters\": [{\"Key\": \"foo.io/cluster\", \"Values\": [\"cluster.foo.io\"]}]}"
}
因此,应按如下方式替换代码(要替换的主要部分是ResourceQuery:

query = {
    "ResourceTypeFilters": ["AWS::AllSupported"],
    "TagFilters": [{
        "Key": "foo.io/cluster",
        "Values": ["cluster.foo.io"]
    }]
}
resource_query = {
    'Type': 'TAG_FILTERS_1_0',
    'Query': json.dumps(query)
}
kwargs = {
    'Name': 'cluster.foo.io',
    'Description': 'AWS resources assigned to the foo cluster.',
    'ResourceQuery': resource_query,
    'Tags': {
        'foo.io/cluster': 'cluster.foo.io'
    }
}
client = boto3.client("resource-groups")
resp = client.create_group(**kwargs)

我参考了显示的示例CLI。

查询参数缺少ResourceTypeFilters和TagFilters。因此,ResourceQuery应该如下所示:

'ResourceQuery': {
    'Type': 'TAG_FILTERS_1_0',
    'Query': "{\"ResourceTypeFilters\": [\"AWS::AllSupported\"], \"TagFilters\": [{\"Key\": \"foo.io/cluster\", \"Values\": [\"cluster.foo.io\"]}]}"
}
因此,应按如下方式替换代码(要替换的主要部分是ResourceQuery:

query = {
    "ResourceTypeFilters": ["AWS::AllSupported"],
    "TagFilters": [{
        "Key": "foo.io/cluster",
        "Values": ["cluster.foo.io"]
    }]
}
resource_query = {
    'Type': 'TAG_FILTERS_1_0',
    'Query': json.dumps(query)
}
kwargs = {
    'Name': 'cluster.foo.io',
    'Description': 'AWS resources assigned to the foo cluster.',
    'ResourceQuery': resource_query,
    'Tags': {
        'foo.io/cluster': 'cluster.foo.io'
    }
}
client = boto3.client("resource-groups")
resp = client.create_group(**kwargs)
我参考了所示的示例CLI