この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS Lambdaでは、json形式でLambda関数に入力できます。
Python3で試してみました。
Lambdaへの入力と受け取り
Lambda実行時に、PayloadとしてJSON形式のデータを渡せます。{"key":value}
といった形です。
Lambda関数では、event['key']
でvalueを取得できます。
Payloadの階層が深い場合、keyを繋げます。
Payloadが{"name": "koki", "like": {"aws": "s3", "sports": "soccer"}}
の場合、Lambda関数ではevent['like']['aws']
で"s3"を取得できます。
サンプルアプリ
サンプルアプリを作ってみました。 引数に数字を与えて実行すると、3と5の公倍数の時に"Fizz Buzz!"、3の倍数の時に"Fizz!"、5の倍数の時に"Buzz!"と表示します。
$ python3 InvokeLambda.py 6
"Fizz!"
$ python3 InvokeLambda.py 10
"Buzz!"
$ python3 InvokeLambda.py 30
"Fizz Buzz!"
InvokeLambda.py
Lambdaの起動(Invoke)は、AWS SDK for Python (Boto3) を使いました。
Lambda関数testLambda
を起動します。
Payloadとして、JSON形式のデータを入力します。{"number":30}
といった形です。
結果は、response['Payload'].read().decode('utf-8')
で表示します。
# -*- coding: utf-8 -*-
import boto3
import sys
args = sys.argv
num = args[1]
client = boto3.client('lambda')
response = client.invoke(
FunctionName='testLambda',
InvocationType='RequestResponse',
Payload='{\"number\":' + num + '}'
)
output = response['Payload'].read().decode('utf-8')
print(output)
FizzBuzz関数
testLambdaという名前でLambda関数を作成します。
event['number']
に数字が入ります。
数字に応じてメッセージを返します。
# -*- coding: utf-8
import boto3
import json
def lambda_handler(event, context):
# Lambdaが返す値
message=""
# Payloadにnumberが指定されているか確認する
if 'number' in event:
# 指定されている場合、続行
num = int(event['number'])
if num % 15 == 0:
message = "Fizz Buzz!"
elif num % 3 == 0:
message = "Fizz!"
elif num % 5 == 0:
message = "Buzz!"
else:
message = num
else:
# numberが指定されていない場合、指定するように返す
message = 'Please set the number. {"number":"xx"}'
return message
おわりに
AWS Lambdaでは、json形式でLambda関数に入力できます。{"key":value}
といった形です。
Lambda関数では、event['key']でvalueを取得できます。
Lambdaにデータを渡したい時はお試しください。