著者:岡本秀高
カンファレンス「AWS re:invent 2018」にて発表された新サービス「AWS Lambda Custom Runtimes」。これまではサポートをアナウンスした言語でしか「Lambda関数」を作成できませんでした。このサービスの登場により好きな言語で作成可能となりました。本特集では、AWS Lambda Custom Runtimesの使い方から、ランタイム(実行環境)を実際に作って利用するところまでを分かりやすく紹介します。
シェルスクリプトマガジン Vol.59は以下のリンク先でご購入できます。
図3 bootstrapファイルの内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/sh set -euo pipefail # Initialization - load function handler source $LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1).sh" # Processing while true do HEADERS="$(mktemp)" # Get an event EVENT_DATA=$(curl -sS -LD "$HEADERS" -X GET "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next") REQUEST_ID=$(grep -Fi Lambda-Runtime-Aws-Request-Id "$HEADERS" | tr -d '[:space:]' | cut -d: -f2) # Execute the handler function from the script RESPONSE=$($(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA") # Send the response curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "$RESPONSE" done |
図5 function.shファイルの内容
1 2 3 4 5 6 7 8 |
#!/bin/sh function handler () { EVENT_DATA=$1 echo "$EVENT_DATA" 1>&2; RESPONSE="Request: '$EVENT_DATA'" echo $RESPONSE } |
図6 template.yamlファイルの内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
AWSTemplateFormatVersion: 2010-09-09 Description: My PHP Application Transform: AWS::Serverless-2016-10-31 Resources: myRuntime: Type: AWS::Serverless::Function Properties: FunctionName: !Sub ${AWS::StackName}-myRuntime Description: My fisrt custom runtime Runtime: provided Handler: function.handler MemorySize: 3008 Timeout: 30 Layers: - !Sub 作成したランタイムのLayerVersionArn |