【问题标题】:How to insert items into AWS dynamoDb from external website如何从外部网站将项目插入 AWS dynamoDb
【发布时间】:2020-03-22 02:37:08
【问题描述】:

我想要一个外部网站(在我的控制下)将项目插入到我的 AWS dynamoDb 表中。

我曾考虑将 AWS API 网关与 AWS Lambda 一起使用,但我不确定如何在外部服务器和我的 AWS 托管应用程序之间实现身份验证。

这听起来是个好方法吗?您还有其他方法吗?

谢谢!

【问题讨论】:

    标签: amazon-web-services rest aws-lambda amazon-dynamodb


    【解决方案1】:

    你的方法对我来说听起来非常好。您可以使用 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...
    };
    

    希望对你有帮助

    【讨论】:

    • 非常干净,但如果你想节省时间,只需设置一个自定义标题,如 X-API-KEY=RANDOMSTRINGHERE 并验证它
    【解决方案2】:

    你也可以使用这个:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Js.03.html 添加这样的自定义标题:

    X-API-KEY: PutRandomStringHere 
    

    响应您的请求,以保护您的外部服务器免受未知流量的影响。在这种情况下,您的外部服务器是 API Gateway 和 Lambda。然后,您的外部服务器需要使用 AccessKeyId 和 SecretAccessKey 组合向 AWS 进行身份验证。看到流量了吗?

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 2019-01-23
      • 2016-02-05
      • 2015-11-02
      • 1970-01-01
      • 2016-02-13
      • 2020-10-29
      • 2018-02-28
      相关资源
      最近更新 更多