相关文章推荐
重情义的自行车  ·  在AWS ...·  1 周前    · 
想表白的荒野  ·  dataframe 某列字段 ...·  2 月前    · 
年轻有为的回锅肉  ·  JS - ...·  1 年前    · 

我们写 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 服务或外