因此,当我在工厂中构建我的超级传感器时,它将通过MQTT每隔30秒向AWS IoT发送其指标,我必须在设备中烘焙传感器将要连接的DNS域名.
AWS IoT建议在表单中使用端点<random-string>.iot.eu-west-1.amazonaws.com,对我而言A26PKG2U6WRS2I.iot.eu-west-1.amazonaws.com
这是稍微格式化的dig A26PKG2U6WRS2I.iot.eu-west-1.amazonaws.com命令输出,显示在少数重定向后,此域名解析为6个IP地址,这似乎是负载平衡器.
DOMAIN DETAILS:
A26PKG2U6WRS2I.iot.eu-west-1.amazonaws.com. 290
POINTS TO CNAME
iotmoonraker.eu-west-1.prod.iot.eu-west-1.amazonaws.com.
iotmoonraker.eu-west-1.prod.iot.eu-west-1.amazonaws.com. 254
POINTS TO CNAME
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com.
RESOLVES TO IPs:
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 54.229.34.249
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 52.19.106.35
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 52.18.139.53
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 52.48.96.41
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 52.19.155.13
dualstack.iotmoonraker-e-elb-9q2vvmxp3rir-1271985754.eu-west-1.elb.amazonaws.com. 50 IN A 54.76.47.209
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
当我在C中为我的PIC单片机实现MQTT通信时,我的DNS解析器会被单个域可以解析的许多IP混淆.目前我不知道我是否可以解决这个问题.目前我的解决方案是 - 创建自己的域名iot-ingestion.domain-i-own.com 并将其指向其中一个IP地址.有更好的选择吗?
将A26PKG2U6WRS2I.iot.eu-west-1.amazonaws.com主机名烘焙到我的设备中是多么可靠?如果我想在2 - 3年内切换更改IoT堆栈并切换到不同的技术/提供商,该怎么办?
创建使用 POST/PUT 的 REST API 很简单。它们是非幂等的,因此默认情况下不会被浏览器缓存。
但是,在创建 GET 端点时,事情变得更棘手了。我担心浏览器(或特定浏览器)在默认情况下会尝试缓存 GET 请求,而我最终会得到陈旧的数据。
让我们以端点为例GET /articles/123/comments。
尽管这个端点是一个 GET 端点,但每个请求都可以返回不同的内容,因为文章的评论被提交。
假设没有与响应提供的缓存相关的标头。
content-length: 2518
content-type: application/json
date: Thu, 17 Oct 2019 07:51:59 GMT
status: 200
Run Code Online (Sandbox Code Playgroud)
似乎有不同的策略来解决这个问题,但最好的方法是什么?
通过唯一的查询字符串缓存破坏我的 GET 调用?
例如。 GET /articles/123/comments?nonce=12312310980923409
添加Cache-Control: no-cache(这会一直受到尊重吗?)
添加ETag: xyz_HASH_OF_MY_LIST_OF_COMMENTS?
添加Cache-Control: max-age=0(禁用缓存)
添加Cache-Control: max-age=60(以减少缓存的最大持续时间)
只是不要担心并假设没有像ETag, Last-ModifiedGET 请求这样的标头不会被任何浏览器缓存?
我正在尝试将网络测验的答案保存到 DynamoDB 表中。每次提交答案时,最终都会调用下面的代码。例如。对于 3 个答案,它将被调用 3 次。
每次添加答案时,字段UpdatedAt都会更新为当前时间戳。这让我知道上次提交的答案是什么时候。但是我也想知道第一个答案是什么时候提交的,因此我也需要CreatedAt字段。我想知道如何实现?
(我正在检查ConditionalCheckExpression,但它似乎适用于整个更新操作。而我需要找到一种CreatedAt仅在第一次插入项目时进行更新的方法)。
const now = new Date();
let updateParams = {
TableName: process.env.TABLE_RESULTS,
Key: {
QuizId: '' + quiz_id,
SessionId: '' + session_key,
},
UpdateExpression: `SET #QQ_ID = :answer, #updatedAt = :updatedAt`,
ExpressionAttributeNames: {
'#QQ_ID' : `QQ_${question_id}`,
'#updatedAt': 'UpdatedAt',
},
ExpressionAttributeValues: {
':answer': answer,
':updatedAt' : now.toISOString(),
}
};
let result = await doc.update(updateParams).promise();
Run Code Online (Sandbox Code Playgroud)