编写Boto3过滤器以使用自定义标签名称的正确方法是什么?

阿比

我正在尝试列出不同标签键的标签值上的实例,例如>一个标签键-环境,其他标签键-角色。我的代码如下:

import argparse
import boto3

AWS_ACCESS_KEY_ID = '<Access Key>'
AWS_SECRET_ACCESS_KEY = '<Secret Key>'

def get_ec2_instances(Env,Role):
    ec2 = boto3.client("ec2", region)
    reservations = ec2.describe_instances(Filters={"tag:environment" :   Env, "tag:role" : Role})
    for reservation in reservations["Reservations"] :
        for instance in reservation["Instances"]:
             print  "%s" % (instance.tags['Name'])

if  __name__ == '__main__':

    regions = ['us-east-1','us-west-1','us-west-2','eu-west-1','sa-east-1',
               'ap-southeast-1','ap-southeast-2','ap-northeast-1']
    parser = argparse.ArgumentParser()
    parser.add_argument('Env', default="environment", help='value for   tag:environment');
    parser.add_argument('Role', default="role", help='value for tag:role');
    args = parser.parse_args()

    for region in regions: get_ec2_instances(args.Env, args.Role)

运行此脚本后:python script.py arg1 arg2

我收到以下错误

Traceback (most recent call last):
  File "script.py", line 27, in <module>
    for region in regions: get_ec2_instances(args.Env, args.Role)
  File "script.py", line 10, in get_ec2_instances
    reservations = ec2.describe_instances(Filters={"tag:environment" :  Env, "tag:role" : Role})
  File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 258, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 524, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/usr/local/lib/python2.7/dist-packages/botocore/client.py", line 577, in _convert_to_request_dict
    api_params, operation_model)
  File "/usr/local/lib/python2.7/dist-packages/botocore/validate.py", line 270, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter Filters, value: {'tag:role': 'arg1', 'tag:environment': 'arg2'}, type: <type 'dict'>, valid types: <type 'list'>, <type 'tuple'>
讨价还价

这看起来很熟悉,我是否在某处为某人修改过此;-)。实际上,我编写的代码很匆忙,并且没有经过正确的测试(而且我不会费心修改%字符串格式并将其替换为str.format())。实际上,在AWS中未正确记录使用Filters参数的信息。

请参阅Russell Ballestrini博客,使用Boto3过滤AWS资源,以了解有关正确的boto过滤器方法的更多信息。

  1. 过滤器接受列表值,并且标记内的信息应为dict。因此 [{}]
  2. Boto3文档在如何使用指定标签名称方面含糊不清。如果没有示例,当他们说您可以使用tag:key时,就会感到困惑。如此之多的人只会做[{"tag:keyname","Values": [""] }],却行不通。(实际上,我假设原始代码是开发人员知道过滤器是如何工作的,因此我只修改了结构)。
  3. 实际上,您必须明确指定“名称”和“值”对。因此,指定标记名称的正确方法是[{"Name" :"tag:keyname", "Values":[""] }]这很棘手。

因此,如果要用于示例,则是设置过滤器格式的正确方法

filters = [{'Name':'tag:environment', 'Values':[Env]},
           {'Name':'tag:role', 'Values':[Role]}
          ]

(更新)并确保argparse接受字符串值,您只需强制参数接受字符串值

parser.add_argument('Env', type=str, default="environment",
                    help='value for   tag:environment');
parser.add_argument('Role', type=str,default="role",
                    help='value for tag:role');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编写自定义方法和自定义过滤器有什么区别?

来自分类Dev

AngularJS:我可以使用什么过滤器类型来创建自定义货币指令?

来自分类Dev

带标签自定义过滤器的django模板

来自分类Dev

为什么自定义平均过滤器(3x3)的输出与 opencv 的平均过滤器不同?

来自分类Dev

如何编写自定义过滤器,该过滤器依赖于本机Angular过滤器

来自分类Dev

自定义Symfony2过滤器未使用自定义树枝标签触发

来自分类Dev

django编写了我的第一个自定义模板标签和过滤器

来自分类Dev

我们可以使用angular js中的自定义过滤器过滤嵌套的json数据吗

来自分类Dev

使用NEST创建自定义令牌过滤器

来自分类Dev

使用TypeScript创建自定义Angular过滤器

来自分类Dev

使用自定义EJS过滤器的SailsJS

来自分类Dev

在AngularJs中使用自定义过滤器

来自分类Dev

使用自定义URL过滤器查询MongoDB

来自分类Dev

在自定义过滤器中使用数组

来自分类Dev

使用 keras 自定义过滤器 CNN

来自分类Dev

使用 Angular 自定义过滤器

来自分类Dev

在自定义过滤器Angular JS中使用数字过滤器

来自分类Dev

将方法的参数带入自定义操作过滤器MVC3 ASP

来自分类Dev

Django自定义过滤器

来自分类Dev

自定义查询过滤器

来自分类Dev

自定义过滤器排序

来自分类Dev

FOSElasticaBundle / 自定义过滤器

来自分类Dev

使用 boto3 创建带有自定义标头的 s3 预签名 url(放置)

来自分类Dev

有没有一种方法可以使用Rest API获取Magento 2中特定类别的自定义过滤器?

来自分类Dev

是否可以使用Quickblox Messages API在邮件上添加自定义过滤器/逻辑

来自分类Dev

不等于 boto3 过滤器

来自分类Dev

使用自定义窗口Matlab应用自定义过滤器

来自分类Dev

在Wordpress中允许在kses过滤器中使用带破折号的自定义标签

来自分类Dev

在哪里可以找到使用boto3编写自定义AWS凭证提供程序的文档?

Related 相关文章

  1. 1

    编写自定义方法和自定义过滤器有什么区别?

  2. 2

    AngularJS:我可以使用什么过滤器类型来创建自定义货币指令?

  3. 3

    带标签自定义过滤器的django模板

  4. 4

    为什么自定义平均过滤器(3x3)的输出与 opencv 的平均过滤器不同?

  5. 5

    如何编写自定义过滤器,该过滤器依赖于本机Angular过滤器

  6. 6

    自定义Symfony2过滤器未使用自定义树枝标签触发

  7. 7

    django编写了我的第一个自定义模板标签和过滤器

  8. 8

    我们可以使用angular js中的自定义过滤器过滤嵌套的json数据吗

  9. 9

    使用NEST创建自定义令牌过滤器

  10. 10

    使用TypeScript创建自定义Angular过滤器

  11. 11

    使用自定义EJS过滤器的SailsJS

  12. 12

    在AngularJs中使用自定义过滤器

  13. 13

    使用自定义URL过滤器查询MongoDB

  14. 14

    在自定义过滤器中使用数组

  15. 15

    使用 keras 自定义过滤器 CNN

  16. 16

    使用 Angular 自定义过滤器

  17. 17

    在自定义过滤器Angular JS中使用数字过滤器

  18. 18

    将方法的参数带入自定义操作过滤器MVC3 ASP

  19. 19

    Django自定义过滤器

  20. 20

    自定义查询过滤器

  21. 21

    自定义过滤器排序

  22. 22

    FOSElasticaBundle / 自定义过滤器

  23. 23

    使用 boto3 创建带有自定义标头的 s3 预签名 url(放置)

  24. 24

    有没有一种方法可以使用Rest API获取Magento 2中特定类别的自定义过滤器?

  25. 25

    是否可以使用Quickblox Messages API在邮件上添加自定义过滤器/逻辑

  26. 26

    不等于 boto3 过滤器

  27. 27

    使用自定义窗口Matlab应用自定义过滤器

  28. 28

    在Wordpress中允许在kses过滤器中使用带破折号的自定义标签

  29. 29

    在哪里可以找到使用boto3编写自定义AWS凭证提供程序的文档?

热门标签

归档