AWS LambdaをPython3.6で書いてみる入門編です

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'

実行結果は以下の通りです。

AWS LambdaをPython3.6で書いてみる入門編です

eventオブジェクトを出力する

eventオブジェクトを出力してみます。

def lambda_handler(event, context):
  # TODO implement
  print (event);
  return 'Hello from Lambda'

テストイベントは以下のように設定してテストします。

{
  "key3": "value3",
  "key2": "value2",
  "key1": "value1"
}

テストを実行します。

AWS LambdaをPython3.6で書いてみる入門編です

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を作成する、というのはまた次回試したいと思います。

コメント

タイトルとURLをコピーしました