2

我的用例是我想从我的移动应用程序中收集一些数据。每次使用应用程序时都应写入记录。

主要是,我不确定是使用 Public、Protected 还是 Private。我不希望任何用户拥有读取权限,但他们需要写入权限才能将数据发送到我的表。Private 似乎是有道理的,但是这会将主键限制为“userId”,这是否会导致每个最终用户在 DynamoDB 中只能有一条记录?

4

2 回答 2

2

您还可以从 AWS Mobile Hub 中创建的 DynamoDB NoSQL 表的“公共”权限开始,然后编辑授权策略以从 auth 和 unauth 用户 NoSQL 策略中删除“读取”操作(即获取、扫描、查询) . 这将为您提供一个 DynamoDB 表,可从移动应用程序直接访问,但处于只写模式。

要在 AWS Mobile Hub 中访问您的授权策略,请单击左侧导航面板中的“资源”按钮,然后滚动到“AWS 身份和访问管理角色”。... unauth ... 角色适用于未经身份验证的用户。... auth ... 角色适用于登录到应用程序的用户。点击角色,点击... nosqldatabase ...policy,修改“action”

      “行动”: [
        "dynamodb:BatchWriteItem",
        "dynamodb:DeleteItem",
        "dynamodb:PutItem",
        “dynamodb:更新项目”
      ],

这些是“写”操作。

于 2017-05-17T01:03:46.533 回答
1

首先,考虑为什么要收集数据。使用移动分析平台可能会更好。由于您在 AWS 上,请查看Amazon PinpointAWS Mobile Hub

如果您确实想将活动推送到云中,那么我建议您实施一个 AWS Lambda,您的移动应用程序使用 JSON blob 调用该 Lambda。然后,该 blob 将由 Lambda 验证并注入到 DynamoDb 中。通过这种方式,您可以获得“只读”保护(因为只有 Lambda 会暴露给您的客户端),并且您还可以收集所需的任何 JSON blob,并保护自己免受恶意攻击者的侵害。

于 2017-05-16T21:28:36.643 回答