我尝试用CDK框架创建一个cloudwatchlogs订阅过滤器,但没有成功。你知道吗
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 (most recent call last): File "infra.py", line 52, in LambdaStack(app, "cwllogstos3", env={'region': 'eu-west-1'}) File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py", line 66, in call inst = super().call(*args, **kwargs) File "infra.py", line 47, in init destination=stream File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_runtime.py", line 66, in call inst = super().call(*args, **kwargs) File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/aws_cdk/aws_logs/init.py", line 2060, in 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", line 207, in create args=_make_reference_for_native(self, args), File "/Users/enrico.pesce/Documents/GitHub/cwllogstos3/venv/lib/python3.7/site-packages/jsii/_kernel/init.py", line 119, in _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", line 119, in 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", line 124, in _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", line 117, in _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", line 117, in 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", line 130, in _make_reference_for_native d.jsii__type = "Object" AttributeError: 'method' object has no attribute 'jsii__type' Subprocess exited with error 1
我认为问题在于:
您正在传递对方法
all_events
的引用。但是您应该传递IFilterPattern
接口的实例。你知道吗尝试将其更改为:
相关问题 更多 >
编程相关推荐