AWS Lambda
開発者ガイド

サンプル関数コード

サンプルコードは以下の言語で利用可能です。

トピック

Node.js

次の例では、API Gateway からメッセージを処理し、リクエストメソッドに基づいて DynamoDB ドキュメントを管理します。

例 index.js

console.log('Loading function'); var AWS = require('aws-sdk'); var dynamo = new AWS.DynamoDB.DocumentClient(); /** * Provide an event that contains the following keys: * * - operation: one of the operations in the switch statement below * - tableName: required for operations that interact with DynamoDB * - payload: a parameter to pass to the operation being performed */ exports.handler = function(event, context, callback) { //console.log('Received event:', JSON.stringify(event, null, 2)); var operation = event.operation; if (event.tableName) { event.payload.TableName = event.tableName; } switch (operation) { case 'create': dynamo.put(event.payload, callback); break; case 'read': dynamo.get(event.payload, callback); break; case 'update': dynamo.update(event.payload, callback); break; case 'delete': dynamo.delete(event.payload, callback); break; case 'list': dynamo.scan(event.payload, callback); break; case 'echo': callback(null, "Success"); break; case 'ping': callback(null, "pong"); break; default: callback('Unknown operation: ${operation}'); } };

サンプルコードを圧縮してデプロイパッケージを作成します。手順については、「Node.js の AWS Lambda デプロイパッケージ」を参照してください。

Python 3

次の例では、API Gateway からメッセージを処理し、リクエストメソッドに基づいて DynamoDB ドキュメントを管理します。

例 LambdaFunctionOverHttps.py

from __future__ import print_function import boto3 import json print('Loading function') def handler(event, context): '''Provide an event that contains the following keys: - operation: one of the operations in the operations dict below - tableName: required for operations that interact with DynamoDB - payload: a parameter to pass to the operation being performed ''' #print("Received event: " + json.dumps(event, indent=2)) operation = event['operation'] if 'tableName' in event: dynamo = boto3.resource('dynamodb').Table(event['tableName']) operations = { 'create': lambda x: dynamo.put_item(**x), 'read': lambda x: dynamo.get_item(**x), 'update': lambda x: dynamo.update_item(**x), 'delete': lambda x: dynamo.delete_item(**x), 'list': lambda x: dynamo.scan(**x), 'echo': lambda x: x, 'ping': lambda x: 'pong' } if operation in operations: return operations[operation](event.get('payload')) else: raise ValueError('Unrecognized operation "{}"'.format(operation))

サンプルコードを圧縮してデプロイパッケージを作成します。手順については、「Python の AWS Lambda デプロイパッケージ」を参照してください。

Go

次の例では、API Gateway からメッセージを処理し、リクエストに関する情報を記録します。

例 LambdaFunctionOverHttps.go

import ( "strings" "github.com/aws/aws-lambda-go/events" ) func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { fmt.Printf("Processing request data for request %s.\n", request.RequestContext.RequestId) fmt.Printf("Body size = %d.\n", len(request.Body)) fmt.Println("Headers:") for key, value := range request.Headers { fmt.Printf(" %s: %s\n", key, value) } return events.APIGatewayProxyResponse { Body: request.Body, StatusCode: 200 }, nil }

go build を使用して実行ファイルをビルドし、デプロイパッケージを作成します。手順については、「Go の AWS Lambda デプロイパッケージ」を参照してください。

このページの内容: