【问题标题】:AWS boto3 append/delete parameter in put_subscription_filterAWS boto3 在 put_subscription_filter 中追加/删除参数
【发布时间】:2021-11-05 23:29:33
【问题描述】:

我正在将来自 2 个环境(dev 和 prd)的 cloudwatch 日志订阅到同一个 firehose(dev)。开发日志订阅 dev firehose,prd 日志订阅 dev 中的 Destination 资源,然后将日志流式传输到同一个 firehose。执行此操作的 boto 调用几乎相同。

这是订阅 firehose 的代码:

 boto_client.put_subscription_filter(
        destinationArn=DESTINATION_ARN,
        filterName=" ",
        filterPattern=PATTERN,
        logGroupName=LOG_GROUP_NAME,
        roleArn=IAM_ROLE
 )

这是订阅目的地的代码:

 boto_client.put_subscription_filter(
        destinationArn=DESTINATION_ARN,
        filterName=" ",
        filterPattern=PATTERN,
        logGroupName=LOG_GROUP_NAME
 )

唯一的区别是 roleArn 参数。它不能传递到目的地,必须传递到消防水带。所以我的问题是如何构建调用,以便如果环境是 dev - 我会附加 roleArn。或相反亦然。如果是 prd - 我会删除 roleArn 参数。这样我就不必创建 2 个几乎相同的函数。

附言。我尝试为 roleArn 传递 None、Empty String 和虚拟值 - 但它没有用。

【问题讨论】:

    标签: python amazon-web-services design-patterns arguments boto3


    【解决方案1】:

    花了几天但想通了。 您可以使用 **kwargs 来传递这样的参数

    def create_subscription(**kwargs):
       if isDev:
          kwargs["roleArn"] = ROLE_ARN
       boto_client.put_subscription_filter(**kwargs)
    
    create_subscription(destinationArn=DESTINATION_ARN,
                        filterName=" ",
                        filterPattern=PATTERN,
                        logGroupName=LOG_GROUP_NAME)
    

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多