如何设置 AWS Mobile Hub DynamoDB 以收集匿名数据
How to set up AWS Mobile Hub DynamoDB for anonymous data gathering
我的用例是我想从我的移动应用程序收集一些数据。每次使用都要写记录
主要是,我不确定是使用Public、Protected 还是Private。我不希望任何用户拥有读取权限,但他们需要写入权限才能将数据发送到我的 table。 Private 似乎有道理,但这会将主键限制为 'userId',这不会让每个最终用户在 DynamoDB 中只能有一条记录吗?
首先,考虑收集数据的原因。使用移动分析平台可能会更好。由于您使用的是 AWS,请查看 Amazon Pinpoint or AWS Mobile Hub.
如果您真的想将活动推送到云中,那么我建议实施您的移动应用程序使用 JSON blob 调用的 AWS Lambda。然后,该 blob 将由 Lambda 验证并注入到 DynamoDb 中。通过这种方式,您可以获得 "read-only" 保护(因为只有 Lambda 暴露给您的客户端)并且您还可以收集任何您需要的 JSON blob,并保护自己免受恶意行为者的侵害。
您还可以从对在 AWS Mobile Hub 中创建的 DynamoDB NoSQL table 的“public”权限开始,然后编辑授权策略以删除“读取”操作(即获取、扫描、查询)来自 auth 和 unauth 用户 NoSQL 策略。这将为您提供一个 DynamoDB table,可直接从移动应用程序访问,但处于只写模式。
要在 AWS Mobile Hub 中获取您的授权策略,请单击左侧导航面板中的“资源”按钮,然后滚动到“AWS Identity and Access Management 角色”。 ...unauth... 角色适用于未经身份验证的用户。 ...auth... 角色适用于已登录应用程序的用户。单击角色,单击 ...nosqldatabase... 策略,并将“操作”部分修改为仅包含...
"Action": [
"dynamodb:BatchWriteItem",
"dynamodb:DeleteItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem"
],
这些是 "write" 操作。
我的用例是我想从我的移动应用程序收集一些数据。每次使用都要写记录
主要是,我不确定是使用Public、Protected 还是Private。我不希望任何用户拥有读取权限,但他们需要写入权限才能将数据发送到我的 table。 Private 似乎有道理,但这会将主键限制为 'userId',这不会让每个最终用户在 DynamoDB 中只能有一条记录吗?
首先,考虑收集数据的原因。使用移动分析平台可能会更好。由于您使用的是 AWS,请查看 Amazon Pinpoint or AWS Mobile Hub.
如果您真的想将活动推送到云中,那么我建议实施您的移动应用程序使用 JSON blob 调用的 AWS Lambda。然后,该 blob 将由 Lambda 验证并注入到 DynamoDb 中。通过这种方式,您可以获得 "read-only" 保护(因为只有 Lambda 暴露给您的客户端)并且您还可以收集任何您需要的 JSON blob,并保护自己免受恶意行为者的侵害。
您还可以从对在 AWS Mobile Hub 中创建的 DynamoDB NoSQL table 的“public”权限开始,然后编辑授权策略以删除“读取”操作(即获取、扫描、查询)来自 auth 和 unauth 用户 NoSQL 策略。这将为您提供一个 DynamoDB table,可直接从移动应用程序访问,但处于只写模式。
要在 AWS Mobile Hub 中获取您的授权策略,请单击左侧导航面板中的“资源”按钮,然后滚动到“AWS Identity and Access Management 角色”。 ...unauth... 角色适用于未经身份验证的用户。 ...auth... 角色适用于已登录应用程序的用户。单击角色,单击 ...nosqldatabase... 策略,并将“操作”部分修改为仅包含...
"Action": [ "dynamodb:BatchWriteItem", "dynamodb:DeleteItem", "dynamodb:PutItem", "dynamodb:UpdateItem" ],
这些是 "write" 操作。