AWS EventBridge可以将目标设为Kinesis数据流,而不仅限于AWS本身。下面是一些示例代码,它们演示了如何在AWS CDK中创建EventBridge规则,并将其目标设为Kinesis数据流。
首先,需要创建一个Kinesis数据流:
from aws_cdk import (
aws_kinesis as kinesis,
core,
)
class MyStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
event_stream = kinesis.Stream(
self,
'MyStreamingAppEventStream',
stream_name='MyStreamingAppEventStream',
retention_period=core.Duration.hours(24)
)
core.CfnOutput(self, 'MyEventStreamArn', value=event_stream.stream_arn)
然后,可以使用以下代码创建一个AWS EventBridge规则来将事件路由到Kinesis数据流:
from aws_cdk import (
aws_events as events,
aws_events_targets as targets,
aws_iam as iam,
core,
)
class MyStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, event_stream_arn: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# Create a role for the rule to use to assume
event_role = iam.Role(
self,
'EventRole',
assumed_by=iam.ServicePrincipal('events.amazonaws.com'),
description='Role assumed by EventBridge to publish streaming events to the Kinesis stream'
)
event_role.add_to_policy(
iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=["kinesis:PutRecord"],
resources=[event_stream_arn],
)
)
# Create the event rule
event_rule = events.Rule(
self,
'MyEventBridgeRule',
description='Catch all entertainment events',
event_pattern=events.EventPattern(
detail_type=[
'EntertainmentEvent'
]
)
)
# Add the Kinesis target to the rule
event_rule.add_target(targets.KinesisStreamTarget(
stream=event_stream_arn,
message_format_version='1.0',
role=event_role
))
在这个例子中,规则的事件模式是一个示例“EntertainmentEvent”,可以替换为任何自定义事件模式。请注意,您需要将Kinesis数据流ARN传