眠気.jl

投稿=不定期

JuliaでAWS Lambda動かすやつのメモ(RIEでlambdaのテストも)

最初に

この動画見て www.youtube.com このレポ github.com 走らせた時のメモです、特にオリジナリティないです
LambdaでもJulia使いたいけど上の動画みるの面倒な人に良いかもしれません
動画だとecr認証の箇所などわからなかったので追記しました

概要

  1. lambdaのコンテナ立ててローカルでcurlで叩いてローカルで動作確認
  2. ECRにそれをpushしてlambdaにそのURIを登録

必要だったもの

  1. aws configureすませたaws cli
  2. awsのaccount_idとregion (aws ecrコマンドで使う)

ローカルでテスト実行

buildとrun

docker build -t julia-lambda:latest . && docker run -it --rm -p 9000:8080 julia-lambda:latest

curlで叩く、別ウインドウを起動して

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '100000'

動いた f:id:julialangisthebestlang:20210127204353p:plain

ECRにプッシュ

(※ [region], [account_id]は使っている値を入れてください)
account_idと使うregionを指定して認証する

aws ecr get-login-password --region [region] | docker login --username AWS --password-stdin [account_id].dkr.ecr.[region].amazonaws.com

ECRにレポジトリ作成

aws ecr create-repository \
    --repository-name julia-lambda \
    --image-scanning-configuration scanOnPush=true \
    --region [region]

タグ付け

docker tag julia-lambda:latest [account_id].dkr.ecr.[region].amazonaws.com/julia-lambda:latest

ECRにプッシュ

docker push [account_id].dkr.ecr.[region].amazonaws.com/julia-lambda:latest

Lambdaの作成

Lambdaのコンソールにログイン>コンテナーメージにチェック>関数名を適当に埋める>イメージを参照、からさっきプッシュしたECRのURIを選ぶ
テストイベントの中身を10000のみにしてテストを実行

┌ Info: Got response from handler
└   response = "3.1224"

動いた
ここCLIでやろうとしたんですが、やり方わかりませんでした
ECRのimage URI指定してコマンドラインからLambda作る方法ご存知の方は私にTwitterでこっそり教えてください

補足

Lambdaの設定

デフォルトのメモリだと足りなかったので増やしたら通りました

Memory Size: 1024 MB Max Memory Used: 357 MB Init Duration: 4718.01 ms

RIEとは

R.I.Pに似てますね
lambdaをローカルテストできる便利機能っぽいです, これで動くかどうか祈りながらzipを作る必要ないですね(?)
AWS Lambda の新機能 – コンテナイメージのサポート | Amazon Web Services ブログ
より引用します
「Lambda Runtime Interface Emulator をオープンソースとしてリリースします。これにより、コンテナイメージのローカルテストを実行して、Lambda にデプロイした際に実行されることを確認することができます。Lambda Runtime Interface Emulator は、AWS が提供するすべてのベースイメージに含まれており、任意のイメージでも使用できます。」

リンクとか

Runtime APIのドキュメント AWS Lambda runtime API - AWS Lambda
ECRをCLIでやるドキュメント Using Amazon ECR with the AWS CLI - Amazon ECR