AWS LambdaをPython3.6で書いてみる入門編です
最近node.jsも飽きたのでPython3.6でLambdaを勉強しようと思いました。
node.jsだとindex.jsがデフォルトで作成されますが、Python3.6だとlambda_function.pyが作成されるようです。
ハンドラは、lambda_function.lambda_handlerとなっているので、lambda_handlerという関数を作成する必要があるようです。
デフォルトの関数は以下の遠おりです。
def lambda_handler(event, context): # TODO implement return 'Hello from Lambda'
実行結果は以下の通りです。
eventオブジェクトを出力する
eventオブジェクトを出力してみます。
def lambda_handler(event, context): # TODO implement print (event); return 'Hello from Lambda'
テストイベントは以下のように設定してテストします。
{
"key3": "value3",
"key2": "value2",
"key1": "value1"
}
テストを実行します。
CloudWatch Logsにテストイベントが出力されている事が確認できます。
AWSのリソースにアクセスする
node.jsでもLambdaからDynamoDBへアクセスする、など行いましたが、これをPythonのSDKを使用して実装してみます。
import boto3
上記がnode.jsでいうaws-sdkに該当します。
dynamodb = boto3.resource('dynamodb')
上記でDynamoDBとアクセスするオブジェクトが作成できました。
このオブジェクトを使用して全件検索した結果をreturnします。
import boto3
def lambda_handler(event, context):
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('users') # テーブル名
response = table.scan() # 全件検索
datas = response["Items"] # scan結果をdatasに配列として格納
return datas
結果は以下のようになります。データ2件でした。
[
{
"user-name": "user01",
"status": "CONFIRMED"
},
{
"user-name": "user02",
"status": "LOCK"
}
]
pipから便利なモジュールを入れて圧縮してLambdaを作成する、というのはまた次回試したいと思います。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^




コメント