BETA

Lambda Custom Runtimeでshellscriptを動かしてみた

投稿日:2018-12-07
最終更新:2018-12-07

雑ですが、メモレベルにまとめます。

Custom Runtime Document

・Lambdaは「独自のランタイムを使用する」で作成する

以下の2ファイルを用意する

・bootstrap
・function.sh


bootstrap
これはTutorialのまんま
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-walkthrough.html

#!/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  

function.sh

function handler() {  

  set -x  

  EVENT_DATA=$1  
  echo "$EVENT_DATA" 1>&2  
  VALUE=`echo $EVENT_DATA | $LAMBDA_TASK_ROOT/jq -r .key`  
  RESPONSE="get value: ${VALUE}"  

  echo $RESPONSE  
}  

jqをダウンロードする

curl -o ./jq -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64  

実行権限をつける

chmod 755 function.sh bootstrap jq  

zipして

zip -r /tmp/output.zip ./*  

uploadする

aws lambda \  
update-function-code \  
--function-name [function_name] \  
--zip-file fileb:///tmp/output.zip \  
--publish \  
--region ap-northeast-1  

Lambdaのhandlerを以下に変更する

「hello.handler」から「function.handler」に変更する。  

後は、Lambdaを実行する

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@Krjwuh1JmxFA4tb0の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!