×
全部 > AI技术 > AI编程 > AI代码生成 > 生成AWS Lambda用户注册函数模板

生成AWS Lambda用户注册函数模板

gpt-4o(OpenAI)

```markdown # Function Scenario Overview 此函数用于处理用户注册请求。它接收用户输入,验证相关数据,然后将用户信息存储到 DynamoDB 表中,并使用 Amazon SES 发送欢迎邮件给注册成功的用户。 # Handler Function Description 这是一个使用 Node.js 的 AWS Lambda 函数,触发器为 HTTP API。当用户发出注册请求时,该函数将处理请求数据,执行验证操作,并依据业务逻辑与数据库和邮件服务进行交互。 # Function Source Code ```javascript const AWS = require('aws-sdk'); const dynamoDB = new AWS.DynamoDB.DocumentClient(); const ses = new AWS.SES({region: process.env.SES_REGION}); exports.handler = async (event) => { const requestData = JSON.parse(event.body); // Validate user input if (!requestData.email || !requestData.name) { return { statusCode: 400, body: JSON.stringify({message: 'Invalid input: Email and Name are required.'}), }; } // Prepare DynamoDB save parameters const dbParams = { TableName: process.env.DB_TABLE_NAME, Item: { email: requestData.email, name: requestData.name, registrationDate: new Date().toISOString(), } }; // Save user data to DynamoDB try { await dynamoDB.put(dbParams).promise(); } catch (error) { return { statusCode: 500, body: JSON.stringify({message: 'Failed to save user information.'}), }; } // Send welcome email using Amazon SES const emailParams = { Source: process.env.EMAIL_SENDER, Destination: { ToAddresses: [requestData.email], }, Message: { Subject: { Data: "Welcome to our service!" }, Body: { Text: { Data: `Hello ${requestData.name}, welcome to our platform!` } } } }; try { await ses.sendEmail(emailParams).promise(); } catch (error) { return { statusCode: 500, body: JSON.stringify({message: 'Failed to send welcome email.'}), }; } return { statusCode: 200, body: JSON.stringify({message: 'User registered successfully!'}), }; }; ``` # Optional Deployment Tips - **Environment Variables Configuration**: Ensure you have set the appropriate environment variables (`DB_TABLE_NAME`, `EMAIL_SENDER`, `SES_REGION`) in the AWS Lambda console or through infrastructure as code templates. - **DynamoDB Access Permissions**: Verify that the Lambda execution role has sufficient permissions to perform `dynamodb:PutItem` on the specified table. - **SES Sending Authorization**: Make sure that the SES service is verified to send emails from the specified sender address. - **Timeout and Memory**: Set the function timeout to 30 seconds and allocate 128 MB of memory in the AWS Lambda settings. - **API Gateway Integration**: When using HTTP API as a trigger, configure an AWS API Gateway to route incoming HTTP requests to this Lambda function. ``` This template provides a clear starting point for implementing a user registration handler on AWS using Node.js, with detailed dependency and permission considerations for successful deployment. Adjust the resources and configurations as necessary to suit your specific application requirements and AWS account settings.

claude3.5 sonnet 20241022(Anthropic)

# Function Scenario Overview 该函数旨在处理用户注册请求,验证用户输入,存储用户信息到 DynamoDB 表,并使用 Amazon SES 发送欢迎邮件。 # Handler Function Description 该函数的入口点为 `handler`,接收 HTTP 请求,解析用户输入,进行验证,并将有效的用户信息存储到指定的 DynamoDB 表中。成功存储后,函数将使用 Amazon SES 发送一封欢迎邮件给新用户。 # Function Source Code ```javascript const AWS = require('aws-sdk'); const dynamoDB = new AWS.DynamoDB.DocumentClient(); const ses = new AWS.SES({ region: process.env.SES_REGION }); exports.handler = async (event) => { const { username, email } = JSON.parse(event.body); // 验证用户输入 if (!username || !email) { return { statusCode: 400, body: JSON.stringify({ message: '用户名和邮箱为必填项' }), }; } // 存储用户信息到 DynamoDB const params = { TableName: process.env.DB_TABLE_NAME, Item: { username, email, }, }; try { await dynamoDB.put(params).promise(); // 发送欢迎邮件 const emailParams = { Source: process.env.EMAIL_SENDER, Destination: { ToAddresses: [email], }, Message: { Subject: { Data: '欢迎注册', }, Body: { Text: { Data: `亲爱的 ${username}, 欢迎注册我们的服务!`, }, }, }, }; await ses.sendEmail(emailParams).promise(); return { statusCode: 200, body: JSON.stringify({ message: '注册成功,欢迎邮件已发送!' }), }; } catch (error) { console.error(error); return { statusCode: 500, body: JSON.stringify({ message: '注册失败,请稍后再试。' }), }; } }; ``` # Optional Deployment Tips - 确保在 AWS Lambda 中配置环境变量 `DB_TABLE_NAME`, `EMAIL_SENDER`, 和 `SES_REGION`。 - 在 AWS IAM 中为 Lambda 函数分配适当的权限,以便访问 DynamoDB 和 SES。 - 设置适当的超时和内存配置,以确保函数能够顺利执行。

通义千问2.5-Coder-7B(阿里云百炼)

```markdown # Function Scenario Overview This function is designed to handle user registration requests. It validates user input, stores user information in a DynamoDB table, and sends a welcome email using Amazon SES. # Handler Function Description The handler function for this AWS Lambda function is named `handler`. It accepts an HTTP event object as input and processes the request accordingly. # Function Source Code ```javascript const AWS = require('aws-sdk'); const ses = new AWS.SES({ region: process.env.SES_REGION }); const dynamoDb = new AWS.DynamoDB.DocumentClient(); exports.handler = async (event) => { let response; try { // Parse the event body const { username, email } = JSON.parse(event.body); // Validate input if (!username || !email) { throw new Error('Username and email are required.'); } // Store user information in DynamoDB await dynamoDb.put({ TableName: process.env.DB_TABLE_NAME, Item: { username, email, registeredAt: new Date().toISOString() } }).promise(); // Send welcome email await ses.sendEmail({ Destination: { ToAddresses: [email] }, Message: { Body: { Text: { Charset: 'UTF-8', Data: `Welcome, ${username}! Your account has been successfully created.` } }, Subject: { Charset: 'UTF-8', Data: 'Welcome to Our Service' } }, Source: process.env.EMAIL_SENDER }).promise(); response = { statusCode: 200, body: JSON.stringify({ message: 'User registered successfully.' }) }; } catch (error) { console.error(error); response = { statusCode: 500, body: JSON.stringify({ error: error.message }) }; } return response; }; ``` # Optional Deployment Tips 1. **Environment Variables**: Ensure that the environment variables (`DB_TABLE_NAME`, `EMAIL_SENDER`, `SES_REGION`) are set in your AWS Lambda function configuration. 2. **DynamoDB Table**: Create a DynamoDB table with the name specified in `DB_TABLE_NAME`. 3. **Amazon SES**: Configure Amazon SES to send emails from the address specified in `EMAIL_SENDER`. By following these steps, you can deploy and run this serverless function on AWS Lambda. ```

gpt-4.1(OpenAI)

# AWS Lambda Serverless 函数模板:用户注册处理(Node.js,HTTP API 触发) ## 1. 函数场景概述(Function Scenario Overview) 本函数通过 AWS Lambda 实现一个用户注册接口,作为 HTTP API 的后端。主要实现以下功能: - 接收并解析用户注册请求(如邮箱、用户名、密码)。 - 校验用户输入(合法性与完整性)。 - 将用户信息存储到 DynamoDB 表(表名通过环境变量 DB_TABLE_NAME 传递)。 - 调用 Amazon SES(区域由环境变量 SES_REGION 指定)发送欢迎邮件给新注册用户,发件人地址由 EMAIL_SENDER 环境变量配置。 - 返回操作结果至 HTTP 客户端。 --- ## 2. 函数入口说明(Handler Function Description) - 入口函数:handler - 事件类型:AWS API Gateway HTTP Event(v2 格式,event.body 为 JSON 字符串) - 环境依赖: - AWS SDK v3 (nodejs) - 需要通过环境变量配置以下信息: - DB_TABLE_NAME:DynamoDB 表名 - EMAIL_SENDER:SES 发件人邮箱 - SES_REGION:SES 区域 --- ## 3. 函数完整源代码(Function Source Code) ```javascript // 用户注册处理 Lambda 函数 // 运行环境:Node.js 18.x import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb"; import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; // 环境变量 const { DB_TABLE_NAME, EMAIL_SENDER, SES_REGION } = process.env; // 初始化 AWS SDK 客户端 const dynamoDb = new DynamoDBClient({}); const ses = new SESClient({ region: SES_REGION }); /** * 校验输入参数 * @param {Object} body * @returns {{valid: boolean, message?: string}} */ function validateInput(body) { if (!body.email || !/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/.test(body.email)) { return { valid: false, message: "Invalid or missing email" }; } if (!body.username || typeof body.username !== "string" || body.username.length < 3) { return { valid: false, message: "Invalid or missing username" }; } if (!body.password || typeof body.password !== "string" || body.password.length < 6) { return { valid: false, message: "Invalid or missing password" }; } return { valid: true }; } /** * Lambda 入口 */ export const handler = async (event, context) => { try { // 解析请求体 const body = typeof event.body === "string" ? JSON.parse(event.body) : event.body; // 输入校验 const { valid, message } = validateInput(body); if (!valid) { return { statusCode: 400, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ error: message }) }; } const { email, username, password } = body; // 保存用户数据到 DynamoDB await dynamoDb.send(new PutItemCommand({ TableName: DB_TABLE_NAME, Item: { userId: { S: email }, username: { S: username }, passwordHash: { S: password }, // 提示:生产环境建议进行加密存储 createdAt: { S: new Date().toISOString() } }, ConditionExpression: "attribute_not_exists(userId)" })); // 发送欢迎邮件 const welcomeSubject = "欢迎加入我们的平台!"; const welcomeBody = ` <h1>欢迎, ${username}!</h1> <p>感谢您注册我们的服务。</p> `; await ses.send(new SendEmailCommand({ Source: EMAIL_SENDER, Destination: { ToAddresses: [email] }, Message: { Subject: { Data: welcomeSubject, Charset: "UTF-8" }, Body: { Html: { Data: welcomeBody, Charset: "UTF-8" } } } })); // 返回成功响应 return { statusCode: 201, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: "User registered successfully" }) }; } catch (err) { // 处理重复注册等错误 let errorMessage = "Internal Server Error"; if (err.name === 'ConditionalCheckFailedException') { errorMessage = "Email already registered"; return { statusCode: 409, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ error: errorMessage }) }; } return { statusCode: 500, headers: { "Content-Type": "application/json" }, body: JSON.stringify({ error: errorMessage }) }; } }; ``` --- ## 4. 简要部署建议(Optional Deployment Tips) 1. 必须在 Lambda 环境变量中配置: - DB_TABLE_NAME:DynamoDB 表名(如 usersTable) - EMAIL_SENDER:SES 已验证发件人邮箱 - SES_REGION:SES 区域代码(如 us-east-1) 2. 需为 Lambda 角色授权以下权限: - dynamodb:PutItem(针对目标表) - ses:SendEmail(针对 SES) 3. 建议配置如下 Lambda 基本参数: - 超时时间(Timeout):30 秒 - 内存配置(Memory):128 MB 4. 依赖包要求,在项目根目录下添加 package.json 并安装 AWS SDK v3 相关依赖: ```json { "dependencies": { "@aws-sdk/client-dynamodb": "^3.500.0", "@aws-sdk/client-ses": "^3.500.0" } } ``` 执行安装: ```bash npm install ``` 5. 使用 AWS SAM、Serverless Framework 或直接在 AWS 控制台部署,确保绑定正确 API Gateway HTTP 触发器。 ---

模型名称 模型提供商 响应总时长(s) 生成 token 数 首 token 延迟(s) 生成速率(tokens/s)
14.72
711
1.27
48.3
11.49
响应最快
0
3.11
0
15.7
513
0.46
延迟最小
32.68
22.03
1471
内容最多
2.5
66.77
速度最快
AI文本生成
38家服务商提供服务
AI深度推理
11家服务商提供服务
AI代码生成
11家服务商提供服务
AI数学模型
10家服务商提供服务