首先,我们需要在AWS S3中创建一个存储桶。
aws s3api create-bucket --bucket my-eventbucket --region us-east-1
接下来,我们需要创建一个Lambda函数来处理Eventbridge事件,并将事件数据保存到S3存储桶中。
import json
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
# 从事件中获取数据
data = json.loads(event['detail']['Data'])
# 将数据保存到S3存储桶中
response = s3.put_object(Bucket='my-eventbucket', Key='event.json', Body=json.dumps(data))
print(response)
现在,我们需要创建一个Eventbridge规则来触发Lambda函数,并将事件数据传递给Lambda函数。
# 创建事件源
aws events put-rule --name my-eventrule --event-pattern "{\"source\": [\"my-eventsource\"]}"
# 添加事件目标
aws events put-targets --rule my-eventrule --targets "Id"="1","Arn"=""
现在,我们可以测试事件是否按预期工作。为此,我们需要使用我们的事件源发布一些事件。
import boto3
import json
eventbridge = boto3.client('events')
data = {
'name': 'john doe',
'age': 27,
'job': 'engineer'
}
event = {
'Source': 'my-eventsource',
'DetailType': 'my-eventtype',
'Detail': json.dumps({'Data': data})
}
response = eventbridge.put_events(Entries=[event])
如果一切设置正确,Lambda函数应该会在接收到事件后将事件数据保存到指定的S3存储桶中。