【问题标题】:How can I access an AWS DynamoDB as a guest user?如何以访客用户身份访问 AWS DynamoDB?
【发布时间】:2018-11-25 13:33:31
【问题描述】:

我在 Angular JS/Typescript 中使用 aws-amplify 和 aws-sdk。 我可以作为经过身份验证的用户成功访问我的 AWS DynamoDB。

我还尝试为 Dynamo 中的某个表添加来宾用户访问权限,但我很难理解如何在没有任何凭据的情况下获得对 DynamoDB 的引用。

我的代码现在是这样的

   getDocumentClient() {
    return Auth.currentCredentials()
     .then(credentials => new AWS.DynamoDB.DocumentClient({ credentials: credentials }))
     .catch(err => logger.debug('error getting document client', err));

我将如何做类似的事情来以未经身份验证的来宾用户身份访问 DynamoDB?

干杯

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb aws-amplify


    【解决方案1】:

    我想你可以参考下面博文中提到的内容。

    https://aws.amazon.com/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/

    基本思想是使用 API Gateway 作为 DynamoDB API 的代理。通过执行角色授予 API Gateway 访问 DynamoDB 的权限,并将 API Gateway 配置为向公众开放。这样做的流程如下:

    Web Browser <----- HTTPS -----> API Gateway <----- AWS Service Proxy integration -----> DynamoDB
    

    【讨论】:

      【解决方案2】:

      试试makeUnauthenticatedRequest

      这是 S3 的一个示例 - 我展示了这个,因为我知道您可以作为未经身份验证的用户从 AWS 开发工具包向 S3 发出请求。我假设这也适用于 DynamoDB,但尚未测试。

      var s3 = new AWS.S3();
      
      var params = {
          Bucket: 'mybucket'
      };
      
      s3.makeUnauthenticatedRequest('listObjects', params, callback);
      

      更具战略意义的方法是支持未经身份验证/访客身份的 Amazon Cognito 身份池。 Cognito 提供身份和 AWS 凭证,您可以配置 IAM 角色,允许 DynamoDB 对未经身份验证的身份类型进行读取访问。

      【讨论】:

      • 嗨 jarred,感谢您的信息。我尝试了与上述 s3 示例类似的方法,但出现以下错误。 MissingAuthenticationTokenException:请求缺少身份验证令牌。也许我错过了其他东西,因为 makeUnauthenticatedRequest 肯定不需要身份验证令牌。代码如下。 let con = new AWS.DynamoDB(); var params = {TableName: "tasks"}; con.makeUnauthenticatedRequest("describeTable", params, function (err, data) { if (err) { ... });
      • 抱歉,我想得越多……我认为没有任何方法可以将“公共访问”策略应用于 DynamoDB 表。您可以使用 S3 存储桶策略对 S3 存储桶/对象执行此操作,但 DynamoDB 没有类似物。这意味着请求者需要由 IAM 角色支持的 IAM 凭证,该角色本身允许对该表执行必要的 DynamoDB 操作。请求者仍然可以未经身份验证,但未经身份验证的访问需要与适当的 IAM 角色相关联,我知道这样做的唯一方法是通过 Cognito。这比使用 S3 的工作量更大,但可能并不大。
      猜你喜欢
      • 2018-11-01
      • 2019-02-11
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多