タイトル : AWS lambda 初めの一歩 lambdaを登録して呼び出す localstackを試そう 2024
更新日 : 2024-11-22
カテゴリ : プログラミング
タグ :
aws   
awscli   
python   

AWS localstackを試そう 2024

初めの一歩 lambdaを登録して呼び出す

  • pythonソースを書いてzipにする
$ cat test1.py 
def handler(event, context):
    return 'Welcome to LocalStack'
$ zip src.zip test1.py 
  adding: test1.py (stored 0%)
$
  • lambdaを作成

    • --function-name : 関数名
    • --runtime : pythonの3.9のランタイム
    • --role : ロールの割り当て。localstackだと何でも良いけど形式チェックがかかるので、arnのそれらしい文字列で書く
    • --handler : test1.pyのメソッド handlerを呼び出すので test1.handler
    • --zip-file : ソースファイルをzipにしたもの
$ aws lambda create-function --function-name lambda_test1 --runtime python3.9 --role arn:aws:iam::000000000000:role/lambda-role-dummy --handler test1.handler  --zip-file fileb://src.zip
{
    "FunctionName": "lambda_test1",
    "FunctionArn": "arn:aws:lambda:ap-northeast-1:000000000000:function:lambda_test1",
    "Runtime": "python3.9",
    "Role": "arn:aws:iam::000000000000:role/lambda-role-dummy",
    "Handler": "test1.handler",
    "CodeSize": 230,
...
$
  • 作成されているか確認

関数名のみ表示する。整形は jqを使った方が良いのかな~

$ aws lambda list-functions | jq -r .Functions[].FunctionName
lambda_test1
$ aws lambda list-functions  --query 'Functions[*].[FunctionName]' 
[
    [
        "lambda_test1"
    ]
]
$
  • 呼び出し

invoke を使って --function-name でlambda関数名を指定し、result.logに結果を格納する。

$ aws lambda invoke --function-name lambda_test1 result.log
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}
$ cat result.log 
"Welcome to LocalStack"$

動いているみたいですね。やったー!

以下で削除できるので、ソース書き換えて何度かやり直しましょう。

$ aws lambda delete-function --function-name lambda_test1
$