put_subscription_filter 中的 AWS boto3 append/delete 参数
AWS boto3 append/delete parameter in put_subscription_filter
我正在从 2 个环境(dev 和 prd)订阅 cloudwatch 日志到同一个 firehose (dev)。开发日志订阅开发流水线,prd 日志订阅开发中的目标资源,然后将日志流式传输到同一个流水线。执行此操作的 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 参数。它不能传递到目的地,必须传递到消防水带。所以我的问题是如何构建调用,以便如果环境是开发的 - 我会附加 roleArn。或相反亦然。如果它是 prd - 我会删除 roleArn 参数。这样我就不必创建 2 个几乎相同的函数。
PS。我试图为 roleArn 传递 None、空字符串和虚拟值 - 但它没有用。
花了几天时间,但想通了。
你可以使用 **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)
我正在从 2 个环境(dev 和 prd)订阅 cloudwatch 日志到同一个 firehose (dev)。开发日志订阅开发流水线,prd 日志订阅开发中的目标资源,然后将日志流式传输到同一个流水线。执行此操作的 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 参数。它不能传递到目的地,必须传递到消防水带。所以我的问题是如何构建调用,以便如果环境是开发的 - 我会附加 roleArn。或相反亦然。如果它是 prd - 我会删除 roleArn 参数。这样我就不必创建 2 个几乎相同的函数。
PS。我试图为 roleArn 传递 None、空字符串和虚拟值 - 但它没有用。
花了几天时间,但想通了。 你可以使用 **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)