CDK无法创建CloudWatch日志订阅

2024-09-27 00:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用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


Tags: inpygithubawsforinitlinekernel
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:48

我认为问题在于:

filter_pattern=aws_logs.FilterPattern().all_events

您正在传递对方法all_events的引用。但是您应该传递IFilterPattern接口的实例。你知道吗

尝试将其更改为:

filter_pattern=aws_logs.FilterPattern().all_events()

相关问题 更多 >

    热门问题