CDK 无法创建 CloudWatch Logs 订阅筛选条件



我尝试使用 CDK 框架创建云观察日志订阅过滤器,但没有成功。

from aws_cdk import (
aws_kinesis,
aws_iam,
aws_logs,
core
)

class LambdaStack(core.Stack):
def __init__(self, app: core.App, id: str, **kwargs) -> None:
super().__init__(app, id, **kwargs)
stream = aws_kinesis.Stream(
self,
"datalake-stream",
stream_name="datalake-stream"
)
role = aws_iam.Role(
self,
"datalake-role",
role_name="datalake-role",
assumed_by=aws_iam.ServicePrincipal('logs.eu-west-1.amazonaws.com')
)
role.add_to_policy(aws_iam.PolicyStatement(
actions=['kinesis:PutRecord'],
resources=[stream.stream_arn],
))
role.add_to_policy(aws_iam.PolicyStatement(
actions=['iam:PassRole'],
resources=[role.role_arn],
))
log_group = aws_logs.LogGroup(
self,
"datalake-logroup",
log_group_name="/test")
aws_logs.SubscriptionFilter(
self,
"-datalake-subscriptionfilter",
log_group=log_group,
filter_pattern=aws_logs.FilterPattern().all_events,
destination=stream
)

app = core.App()
LambdaStack(app, "cwllogstos3", env={'region': 'eu-west-1'})
app.synth()

我收到这些错误:

$ CDK 部署

回溯(最近一次调用(:文件 "infra.py",第 52 行,在 LambdaStack(app, "cwllogstos3", env={'region': 'eu-west-1'}( File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py", 第 66 行,在调用中 inst = super((。call(*args, **kwargs( 文件 "infra.py", 第 47 行, ininitdestination=stream File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py", 第 66 行,在调用中 inst = super((。call(*args, **kwargs( File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/aws_cdk/aws_logs/init.py", 第 2060 行,在 init jsii.create(SubscriptionFilter, self, [scope, id, props]( File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 第 207 行,在创建中 args=_make_reference_for_native(self, args(, File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 119号线,_make_reference_for_native return [_make_reference_for_native(kernel, i( for i in d] File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 119行,在 return [_make_reference_for_native(kernel, i( for i in d] File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 124号线,_make_reference_for_native return _make_reference_for_native(kernel, struct_data( File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 117号线,_make_reference_for_native return {k: _make_reference_for_native(kernel, v( for k, v in d.items((} file "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 117行,在 return {k: _make_reference_for_native(kernel, v( for k, v in d.items((} file "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 130 行,_make_reference_for_natived.jsii__type= "对象" 属性错误:"方法"对象没有属性">jsii__type" 子进程退出,出现错误 1

我认为问题出在这一行:

filter_pattern=aws_logs.FilterPattern().all_events

您正在传递对方法的引用all_events.但是,您应该传递IFilterPattern接口的实例。

尝试将其更改为:

filter_pattern=aws_logs.FilterPattern().all_events()

最新更新