Home » Posts tagged "lambda" (Page 3)

Amazon Kinesis Firehole 可以先轉換再進 S3 了...

前陣子 Amazon Kinesis Firehole 推出來的新功能,可以轉完後再寫進 Amazon S3 (或是其他地方):「Amazon Kinesis Firehose can now prepare and transform streaming data before loading it to data stores」。

文件是「Amazon Kinesis Firehose Data Transformation」這份,開頭有說明是透過 Lambda 做到的:

When you enable Firehose data transformation, Firehose buffers incoming data up to 3 MB or the buffering size you specified for the delivery stream, whichever is smaller. Firehose then invokes the specified Lambda function with each buffered batch asynchronously. The transformed data is sent from Lambda to Firehose for buffering. Transformed data is delivered to the destination when the specified buffering size or buffering interval is reached, whichever happens first.

而文件下方可以看到有些現成寫好的 Lambda 可以用,而且是還蠻常見的 case,像是 apache log 的處理,或是 syslog 的處理:

Lambda Blueprints

Firehose provides the following Lambda blueprints that you can use to create a Lambda function for data transformation.

General Firehose Processing — Contains the data transformation and status model described in the previous section. Use this blueprint for any custom transformation logic.

  • Apache Log to JSON — Parses and converts Apache log lines to JSON objects, using predefined JSON field names.
  • Apache Log to CSV — Parses and converts Apache log lines to CSV format.
  • Syslog to JSON — Parses and converts Syslog lines to JSON objects, using predefined JSON field names.
  • Syslog to CSV — Parses and converts Syslog lines to CSV format.

這樣配合 Amazon Athena 就是一包 serverless 架構了...

在 CloudFront 的 edge 上跑 Lambda

所以 Amazon CloudFront 讓使用者在 edge 上跑程式了 (雖然目前是 limited preview):「Lambda@Edge – Preview」。

分成 Viewer Request、Origin Request、Origin Response 以及 Viewer Response 四個階段可以插入修改。另外有些限制:

Because your JavaScript code will be part of the request/response path, it must be lean, mean, and self-contained. It cannot make calls to other web services and it cannot access other AWS resources. It must run within 128 MB of memory, and complete within 50 ms.

要在 128MB 內搞定,而且不能呼叫其他資源。不過這樣已經可以做很多事了... 基本上就是一台 turing machine 了 :o

用 Lambda 做 DynamoDB 的 Auto Scaling

AWS Lambda 可以跑 cron job 後應該就不怎麼意外出現了:「Autoscale DynamoDB provisioned capacity using Lambda」。

不像 EC2Auto Scaling,或是 ELB 自己會成長或縮小,DynamoDB 跟其他 AWS 服務不同,雖然可以 scale,但需要自己手動設定 capacity 伸縮。

於是就有人寫了程式 (也就是這個專案),判斷目前的 r/w 用量來決定策略... 有點像是我在處理自家 bandwidth 的搞法,達到某個警戒值就自動增加導去 CDN 的量,或是降低回來 :o

AWS 的 scheduled events 可以設定為一分鐘一次了

Twitter 上看到 AWS 的 scheduled events 可以設定為一分鐘一次了:

在 AWS 的相關文件上也發現相關的限制都拿掉了:「Using AWS Lambda with Scheduled Events」。

實際測試也發現沒問題了,之前用 */1 會被擋下來,現在是 ok 的:

aws events put-rule --schedule-expression 'cron(*/1 * * * ? *)' --name test

Amazon API Gateway 在東京也可以用了...

算是 AWS re:Invent 2015 上比較小的消息。Amazon API Gateway 在東京啟用:「Amazon API Gateway now available in the Asia Pacific (Tokyo) AWS Region」。

由於 API Gateway 可以接 Lambda,而這次 re:Invent 又發表了許多對 Lambda 的新功能 (參考先前的「AWS Lambda 大躍進」),這使得 API Gateway 的用途多出不少...

由於可以存取 VPC 內部資源,這表示 Lambda 可以去 RDS 或是 memcached 上抓資料,或是存取內部的 Elastic (Elasticsearch)...

多開了東京的點代表很多現有的服務也可以改接 Lambda + API Gateway...

AWS Lambda 大躍進

AWS Lambda 丟出了一卡車超級基本的功能 (所以超級實用):「AWS Lambda Update – Python, VPC, Increased Function Duration, Scheduling, and More」。

首先是 AWS Lambda 可以跑在 VPC 裡了,這使得 Lambda 可以呼叫內部的 HTTP API 而不需要對 internet 打洞再用其他方式保護。

再來是 AWS Lambda 支援 Python 2.7 了,什麼?你問為什麼不是支援 Python 3?(頭轉過去)

然後可以跑 Cron 了!可以跑 Cron 了!可以跑 Cron 了!(很重要所以要說三次)

Archives