【发布时间】:2020-03-22 02:37:08
【问题描述】:
我想要一个外部网站(在我的控制下)将项目插入到我的 AWS dynamoDb 表中。
我曾考虑将 AWS API 网关与 AWS Lambda 一起使用,但我不确定如何在外部服务器和我的 AWS 托管应用程序之间实现身份验证。
这听起来是个好方法吗?您还有其他方法吗?
谢谢!
【问题讨论】:
标签: amazon-web-services rest aws-lambda amazon-dynamodb
我想要一个外部网站(在我的控制下)将项目插入到我的 AWS dynamoDb 表中。
我曾考虑将 AWS API 网关与 AWS Lambda 一起使用,但我不确定如何在外部服务器和我的 AWS 托管应用程序之间实现身份验证。
这听起来是个好方法吗?您还有其他方法吗?
谢谢!
【问题讨论】:
标签: amazon-web-services rest aws-lambda amazon-dynamodb
你的方法对我来说听起来非常好。您可以使用 API Gateway 和 Lambda 代理在 DynamoDB 中插入记录。 我认为这是一个非常常见的架构。每当我使用我使用的 AWS 寻找有关 SW 架构的想法时,您都可以在此处查看示例 (https://www.youtube.com/watch?v=rRvy5Fbei1s):https://aws.amazon.com/this-is-my-architecture
关于身份验证也取决于您的外部调用者,例如,如果您有 JWT 或 JWK,您可以将其在标头中传递给您的网关并使用 lambda 验证它:
const AWS = require('aws-sdk');
const jwt = require('jsonwebtoken');
exports.handler = async (event) => {
let token = jwt.decode(event.headers.Authorization);
console.log("Token information: " + JSON.stringify(token));
// You can also validate the JWT signature,
// expiration time, sub etc..
// and then perform the dynamoDB inserts...
};
希望对你有帮助
【讨论】:
你也可以使用这个:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Js.03.html 添加这样的自定义标题:
X-API-KEY: PutRandomStringHere
响应您的请求,以保护您的外部服务器免受未知流量的影响。在这种情况下,您的外部服务器是 API Gateway 和 Lambda。然后,您的外部服务器需要使用 AccessKeyId 和 SecretAccessKey 组合向 AWS 进行身份验证。看到流量了吗?
【讨论】: