【发布时间】:2020-01-05 13:04:54
【问题描述】:
我尝试使用 CDK 框架创建 Cloud Watch Logs 订阅过滤器,但没有成功。
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 部署
Traceback(最近一次调用最后一次):文件“infra.py”,第 52 行,在 LambdaStack(app, "cwllogstos3", env={'region': 'eu-west-1'}) 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py", 第 66 行,在 调用 inst = super().call(*args, **kwargs) 文件“infra.py”,第 47 行,在 init 目的地=流文件“/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py”, 第 66 行,在 调用 inst = super().call(*args, **kwargs) 文件“/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]) 文件“/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/初始化.py", 第 207 行,在创建中 args=_make_reference_for_native(self, args), 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py ", 第 119 行,在 _make_reference_for_native 返回 [_make_reference_for_native(kernel, i) for i in d] 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init强>.py", 第 119 行,在 返回 [_make_reference_for_native(kernel, i) for i in d] 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init强>.py", 第 124 行,在 _make_reference_for_native 返回 _make_reference_for_native(kernel, struct_data) 文件“/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py”, 第 117 行,在 _make_reference_for_native 返回 {k: _make_reference_for_native(kernel, v) for k, v in d.items()} 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 第 117 行,在 返回 {k: _make_reference_for_native(kernel, v) for k, v in d.items()} 文件 "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", 第 130 行,在 _make_reference_for_native d.jsii__type = "Object" AttributeError: 'method' object has no attribute 'jsii__type' Subprocess exited with error 1
【问题讨论】: