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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント