AWS Lambda 函式

Vibe Prompt

「幫我用 Python 寫一個 AWS Lambda 函式:接收 API Gateway 的 POST 請求,解析 JSON body,存入 DynamoDB,回傳 201 Created。」

Lambda 函式

import json
import boto3
from datetime import datetime

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Visitors')

def lambda_handler(event, context):
    body = json.loads(event['body'])
    
    item = {
        'id': str(int(datetime.now().timestamp())),
        'name': body.get('name', 'anonymous'),
        'message': body.get('message', ''),
        'created_at': datetime.now().isoformat()
    }
    
    table.put_item(Item=item)
    
    return {
        'statusCode': 201,
        'headers': {'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*'},
        'body': json.dumps({'id': item['id'], 'message': 'Created successfully'})
    }

CDK 部署

import * as lambda_ from 'aws-cdk-lib/aws-lambda';
import * as apigw from 'aws-cdk-lib/aws-apigateway';
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

const table = new dynamodb.Table(this, 'Visitors', {
  partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
  billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
});

const fn = new lambda_.Function(this, 'VisitorFunc', {
  runtime: lambda_.Runtime.PYTHON_3_11,
  handler: 'index.lambda_handler',
  code: lambda_.Code.fromAsset('lambda'),
  environment: { TABLE_NAME: table.tableName },
});

table.grantWriteData(fn);

new apigw.LambdaRestApi(this, 'VisitorApi', { handler: fn });

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊