CCC*_*CCC 2 amazon-web-services amazon-dynamodb aws-lambda
对于我网站中的认知用户创建,逻辑如下。
注册.jsx
import { Auth } from "aws-amplify";
...
// create user in Cognito User Pool in frontend
const signUpResponse = await Auth.signUp({
username,
password,
attributes: {
email: email
}
})
// using lambda function and api gateway for this request
// in order to create user in my "User" table in Dynamodb
const createAdminResponse = await APIHandler.createAdmin(payload)
...
Run Code Online (Sandbox Code Playgroud)
用户表
-id(字符串):分区键
对于删除用户,我在想最好的方法是什么。
这是我当前用于删除数据库中用户的 lambda 函数
'use strict'
const AWS = require('aws-sdk');
exports.handler = async function (event, context, callback) {
const documentClient = new AWS.DynamoDB.DocumentClient();
let responseBody = "";
let statusCode = 0;
const { id } = event.pathParameters;
const params = {
TableName : "User",
Key: {
id: id,
}
};
try{
const data = await documentClient.delete(params).promise();
responseBody = JSON.stringify(data);
statusCode = 204
}catch(err){
responseBody = `Unabel to delete admin: ${err}`;
statusCode = 403
}
const response = {
statusCode: statusCode,
headers:{
"Content-Type": "application/json",
"access-control-allow-origin": "*"
},
body: responseBody
}
return response
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑是删除前端认知用户池中的用户还是包含在上面的 lambda 函数中,或者创建一个单独的 lambda 函数。
这是从文档中复制的。
const AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: 'access key id',
secretAccessKey: 'secret access key',
region: 'region',
});
const cognito = new AWS.CognitoIdentityServiceProvider();
await cognito.adminDeleteUser({
UserPoolId: 'pool id',
Username: 'username',
}).promise();
Run Code Online (Sandbox Code Playgroud)
如果我在 lambda 函数中使用它,我还需要在代码中包含我的 aws 配置,这不是不好的做法吗?
但我不确定应该在哪里使用该代码,有人可以给一些建议吗?
设计实际上取决于你,它取决于多种因素,但我在这里起草了一些选项
如果你只有 1 个前端客户端并且你想快速包装你的功能,那么你可以将逻辑直接放到前端
如果您有多个前端,例如 Web、应用程序等,那么您最好将后端的逻辑作为 api,以便可以在各个应用程序中重复使用
如果您打算扩展逻辑,那么最好将逻辑放在后端
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |