aws lambda的事件源
aws-cdk.aws-lambda-event-sources的Python项目详细描述
aws lambda事件源
此模块包括允许将各种aws服务用作事件的类。
通过高级lambda.addeventsource(source)
api为aws lambda提供源代码。
注意:在大多数情况下,还可以使用资源api来调用 aws lambda函数。此库为所有lambda事件提供统一的api 来源,不管它们使用什么基本机制。
平方s
amazon简单队列服务(amazon sqs)允许您构建异步 工作流。有关amazon sqs的更多信息,请参见amazon simple queue 服务。可以将aws lambda配置为在消息到达时轮询这些消息 然后将事件传递给lambda函数调用。要查看示例事件, 请参见Amazon SQS事件
要将amazon简单队列服务设置为aws lambda的事件源,您可以 首先创建或更新amazon sqs队列,并为 队列参数。以下参数将影响amazon sqs的轮询 行为:
- 可见性超时:可能会影响重试间隔。
- ReceiveMessageWaitTime:将确定 民意测验 持续时间。默认值为20秒。
importsqs=require('@aws-cdk/aws-sqs');import{SqsEventSource}from'@aws-cdk/aws-lambda-event-sources';import{Duration}from'@aws-cdk/core';constqueue=newsqs.Queue(this,'MyQueue',{visibilityTimeout: Duration.seconds(30)// default,receiveMessageWaitTime: Duration.seconds(20)// default});lambda.addEventSource(newSqsEventSource(queue,{batchSize: 10// default});
S3
您可以编写lambda函数来处理s3 bucket事件,例如 对象创建或对象删除事件。例如,当用户上传 图片到bucket,您可能希望amazon s3调用lambda函数,以便 它读取图像并为照片创建缩略图。
您可以使用amazon s3中的bucket通知配置特性来 配置事件源映射,标识所需的bucket事件 要发布的Amazon S3和要调用的lambda函数。
imports3=require('@aws-cdk/aws-s3');import{S3EventSource}from'@aws-cdk/aws-lambda-event-sources';constbucket=news3.Bucket(...);lambda.addEventSource(newS3EventSource(bucket,{events:[s3.EventType.ObjectCreated,s3.EventType.ObjectDeleted],filters:[{prefix:'subdir/'}]// optional}));
SNS
您可以编写lambda函数来处理amazon简单通知服务 通知。当消息发布到amazon sns主题时,服务 可以通过将消息负载作为参数传递来调用lambda函数。 然后,lambda函数代码可以处理该事件,例如 向其他Amazon SNS主题发送消息,或向其他AWS服务发送消息。
这还使您能够触发lambda函数来响应amazon 使用Amazon SNS的CloudWatch警报和其他AWS服务。
有关示例事件,请参见附录:消息和json 格式和 亚马逊sns示例 事件 有关示例用例,请参见将aws lambda与来自不同的amazon sns一起使用 帐户
importsns=require('@aws-cdk/aws-sns');import{SnsEventSource}from'@aws-cdk/aws-lambda-event-sources';consttopic=newsns.Topic(...);lambda.addEventSource(newSnsEventSource(topic));
当用户对lambda函数为的主题调用sns publish api时 订阅后,amazon sns将调用lambda来调用您的函数 异步的。然后lambda将返回传递状态。如果有错误 调用lambda,amazon sns将重试调用lambda函数,最多三次 时代。经过三次尝试,如果Amazon SNS仍然无法成功调用 lambda函数,然后amazon sns会向 云表。
dynamodb流
您可以编写lambda函数来处理来自dynamodb表的更改事件。事件被发送到dynamodb流(如果配置red)每当写入(放置、删除、更新) 对表执行操作。有关详细信息,请参见将aws lambda与amazon dynamodb结合使用。
要使用lambda函数处理事件,请首先创建或更新dynamodb表,并启用stream
规范。然后,创建一个dynameoventsource
并将其添加到lambda函数中。以下参数将影响amazon dynamodb的轮询行为:
- 批大小:确定在调用lambda函数之前缓冲了多少记录-可能会影响函数的内存使用(如果太高)和跟上传入数据速度(如果太低)的能力。
- 开始位置:将确定消费地点,可以是最近的记录("最新")或最早的记录("修剪地平线")。Trim_Horizon"将确保您处理所有可用的数据,而Latest"将忽略在附加事件源之前到达的所有REOCRD。
importdynamodb=require('@aws-cdk/aws-dynamodb');importlambda=require('@aws-cdk/aws-lambda');import{DynamoEventSource}from'@aws-cdk/aws-lambda-event-sources';consttable=newdynamodb.Table(...,{partitionKey: ...,stream: dynamodb.StreamViewType.NewImage// make sure stream is configured});constfunction=newlambda.Function(...);function.addEventSource(newDynamoEventSource(table,{startingPosition: lambda.StartingPosition.TrimHorizon}));
动觉
您可以编写lambda函数来处理amazon kinisis流中的流数据。有关amazon sqs的更多信息,请参见amazon kinisis 服务。要查看示例事件, 请参见亚马逊SQS事件
要将amazon kinisis设置为aws lambda的事件源,您可以 首先创建或更新amazon动态流,并为 事件源参数。以下参数将影响amazon kinisis的轮询 行为:
- 批大小:确定在调用lambda函数之前缓冲了多少记录-可能会影响函数的内存使用(如果太高)和跟上传入数据速度(如果太低)的能力。
- 开始位置:将确定消费地点,可以是最近的记录("最新")或最早的记录("修剪地平线")。Trim_Horizon"将确保您处理所有可用的数据,而Latest"将忽略在附加事件源之前到达的所有REOCRD。
importlambda=require('@aws-cdk/aws-lambda');importkinesis=require('@aws-cdk/aws-kinesis');import{KinesisEventSource}from'@aws-cdk/aws-lambda-event-sources';conststream=newkinesis.Stream(this,'MyStream');myFunction.addEventSource(newKinesisEventSource(queue,{batchSize: 100,// defaultstartingPosition: lambda.StartingPosition.TrimHorizon});
路线图
最后,此模块将支持下面描述的所有事件源 支持的事件 资料来源< 在AWS Lambda开发者指南中。