我们写 Lambda Function的时候, 要实做 handler . 当事件驱动了这个 function 的时候, 相关资讯会经由 event 这个参数传进来.
def handler_name(event, context):
return some_value
接下来就探讨一下, 我们会从 event 裡看到什麽样的资讯.
以 AWS Lambda 小练习: 气温资料爬虫 为例, 我希望每当爬虫把网页抓回来丢上S3之后, S3的trigger 就能自动呼叫另一隻 Parser 用途的Lambda Function, . 所以至少我得知道来源是哪个档桉才能进行下一步.
以下是新增 trigger步骤:
对着你写好的 parser lambda function, 新增一个由 S3 发动的 trigger. 这边顺便加了一些条件. 这边只接受物件上传 Put Event (其他的event 如:物件删除、搬移的都忽略)
如此一来, 只要是爬虫爬回来的, 或是你手动上传到 S3 的资料, 都能触发 trigger .
观察 event 内容
以下是一个测试用的 lambda function. 只加了一行, 那就是 print(event) ,先全部倒出来看看.
def lambda_handler(event, context):
print(event)
return None
然后我们到 CloudWatch-Log 功能 , 看看刚才print()倒出来了什么东西
格式整理一下:
'Records': [{
'eventVersion': '2.0',
'eventTime': '2017-02-13T10:14:13.925Z',
'requestParameters': {
'sourceIPAddress': '111.111.111.111'
's3': {
'configurationId': '38f2a1d6-3899-48aa-9b76-56989c44897b',
'object': {
'eTag': '96eb4b02334c278c2827caaf24078ad2',
'sequencer': '0058A186F5D93B3962',
'key': '1486553116992.htm',
'size': 41356
'bucket': {
'arn': 'arn:aws:s3:::test.fan',
'name': 'test.fan',
'ownerIdentity': {
'principalId': 'AUMOGSY6CG5VP'
's3SchemaVersion': '1.0'
'responseElements': {
'x-amz-id-2': 'SMcbhKhR9x/R7cKMWsYwA9xl+cXLHcfDNyO2uK24L1eaaFU+Mq8To2CUowPIfkUh',
'x-amz-request-id': '7702F37D2BEF90AB'
'awsRegion': 'ap-southeast-1',
'eventName': 'ObjectCreated:Put',
'userIdentity': {
'principalId': 'AUMOGSY6CG5VP'
'eventSource': 'aws:s3'
这是 python 的 dict 资料结构格式, dict 又包着 list 又包着 dict 的结构有些複杂.. 不过我们只需目视就可以看到一些有用的资讯, 例如档名, bucket名称, size 等等.
以下是取出来的方法:
def lambda_handler(event, context):
dict_event = event['Records'][0]
s_eventName = dict_event['eventName']
s_eventTime = dict_event['eventTime']
s_object_name = dict_event['s3']['object']['key']
s_bucket = dict_event['s3']['bucket']['name']
print [s_eventName,s_eventTime,s_object_name,s_bucket]
return None
执行结果如下:
[u'ObjectCreated:Put', u'2017-02-13T10:14:13.925Z', u'1486553116992.htm', u'test.fan']
以上就是对于 event 内容的一些探索.
参考:
配合使用 AWS Lambda 和 Amazon S3
我们写 Lambda Function的时候, 要实做 handler . 当事件驱动了这个 function 的时候, 相关资讯会经由 event 这个参数传进来.def handler_name(event, context): .... return some_value 接下来就探讨一下, 我们会从 event 裡看到什麽样的资讯.准备动作以 AWS ...
(1)打开 Amazon
S3
控制台
(2)创建两个存储桶。源存储桶
lambda
-demo1-bucket,目标存储桶
lambda
-demo1-bucketresized。
(3)在源存储桶中,上传一个 .jpg 对象 sidatianwang...
AWS
Lambda
是一种无服务器计算服务,您可以使用它来在事件发生时执行代码。例如,当有人上传文件到Amazon
S3
存储桶时,您可以使用
Lambda
函数自动将该文件转换为另一种文件格式。
要使用
Lambda
函数,需要执行以下步骤:
1. 创建
Lambda
函数:登录到
AWS
控制台,然后前往
Lambda
页面。在该页面上,您可以创建新的
Lambda
函数或使用现有的函数模板。
2. 编写代码:您可以使用任何支持的编程语言来编写
Lambda
函数代码。您可以在
AWS
Lambda
控制台中直接编写代码,也可以使用
AWS
Cloud9或本地编辑器。
3. 配置函数:您需要为
Lambda
函数配置运行时、内存和超时设置。您还可以为函数指定角色,以便它可以访问其他
AWS
服务。
4. 测试函数:您可以在
AWS
Lambda
控制台中测试
Lambda
函数,并使用模拟事件来测试代码的输出。
5. 部署函数:当您准备好将
Lambda
函数用于生产环境时,您可以将其部署到
AWS
环境中。
6. 设置触发器:您可以使用
AWS
服务或外