我正在将我的云解决方案迁移到 cdk。我可以看到如何通过 TableProps 在构造函数中将流添加到新的 DynamoDB:
const newTable = new dynamodb.Table(this, 'new Table', {
tableName: 'streaming',
partitionKey: { name : 'id', type: dynamodb.AttributeType.NUMBER },
stream: StreamViewType.NEW_AND_OLD_IMAGES,
})
Run Code Online (Sandbox Code Playgroud)
但没有明显的方法可以在现有 DynamoDB 上启用流。我似乎无法访问现有项目上的 TableProps。
const sandpitTable = dynamodb.Table.fromTableArn(this, 'sandpitTable', 'arn:aws:dynamodb:ap-southeast-2:xxxxxxxxxxxxxx:table/Sandpit');
sandpitTable.grantStreamRead(streamLambda);
// sandpitTable. ??? what to do?
Run Code Online (Sandbox Code Playgroud)
如何才能实现这一目标?该解决方案如何考虑灾难恢复并防止使用控制台时不可能发生的 Dynamo DB 意外删除。
我目前有一个 dynamodb 表,已经使用了几年,最初是在控制台中创建的。它包含大量有价值的数据。它使用流通过表的 lambda 触发器定期将快照发送到 s3 进行分析。最终用户大量使用该表本身来访问其数据。
我想将我的解决方案迁移到 CDK 中。我想探索的选项:
我正在努力实现我认为非常标准的东西,但我已经碰壁了。我有一堆数据要存储在 DynamoDB 中
const putDataParams = {
TableName: "sensorNodeData2",
Item: {
"deviceId": {"S": event.deviceId},
"timeStamp": {"N": event.time},
"rssi": {"S": event.rssi},
"seq": {"S": event.seqNum},
"payload": {"L": payloadArrayInt16.map(x => x.N)}
}
};
console.log('Data PutItem Params = ' + JSON.stringify(putDataParams));
dynamodb.putItem(putDataParams, function(err, data) {
if (err) {
console.log(err);
context.fail('ERROR: Dynamo failed: ' + err);
}
else {
console.log(data);
context.succeed('SUCCESS');
}
});Run Code Online (Sandbox Code Playgroud)
问题是我一生都无法弄清楚如何让列表部分起作用。我首先将其定义为:
var payloadArrayInt16= new Uint16Array(dataArrayMaxIndex);
Run Code Online (Sandbox Code Playgroud)
错误是:
"errorMessage": "ERROR: Dynamo failed: InvalidParameterType: Expected params.Item[payload].L to be an Array"
Run Code Online (Sandbox Code Playgroud)
然后我试过:
var payloadArrayInt16= [dataArrayMaxIndex];
Run Code Online (Sandbox Code Playgroud)
它通过了,但显然没有做我想要的......当我打印出参数时,它没有取出数组的内容。它看到: …
当我尝试运行特定函数时:出现以下错误:
\n> wrangled_devices <- wrangle_devices(params$filtered_devices)\nError in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : \n namespace \xe2\x80\x98rlang\xe2\x80\x99 0.4.12 is already loaded, but >= 1.0.1 is required\nRun Code Online (Sandbox Code Playgroud)\n所以我想我会按照指示更新软件包。但这不起作用:
\ninstall.packages("rlang")\nInstalling package into \xe2\x80\x98C:/Users/thebi/Documents/R/win-library/4.1\xe2\x80\x99\n(as \xe2\x80\x98lib\xe2\x80\x99 is unspecified)\ntrying URL \'https://cran.rstudio.com/bin/windows/contrib/4.1/rlang_1.0.2.zip\'\nContent type \'application/zip\' length 1721024 bytes (1.6 MB)\ndownloaded 1.6 MB\n\npackage \xe2\x80\x98rlang\xe2\x80\x99 successfully unpacked and MD5 sums checked\nWarning in install.packages :\n cannot remove prior installation of package \xe2\x80\x98rlang\xe2\x80\x99\nWarning in install.packages :\n problem copying C:\\Users\\thebi\\Documents\\R\\win-library\\4.1\\00LOCK\\rlang\\libs\\x64\\rlang.dll to C:\\Users\\thebi\\Documents\\R\\win-library\\4.1\\rlang\\libs\\x64\\rlang.dll: Permission denied\nWarning in install.packages :\n restored \xe2\x80\x98rlang\xe2\x80\x99\n\nThe downloaded …Run Code Online (Sandbox Code Playgroud) 刚刚尝试在我的计算机上运行最新版本的 ESP-IDF。都好。
当前版本 = 4.3.2 最新版本 = 5.0.1
我在 Visual Studio 中工作,但直接使用 ESP cmd 终端来构建等。尚未设法正确找出 Visual Studio 插件。
但是当我尝试返回旧版本时,遇到了错误。该错误已在 github 中发现: https: //github.com/espressif/esp-idf/issues/9837。因此,我可以通过删除~/.espressif/idf-env.json文件并重新运行来修复我的工作版本$IDF_PATH/install.sh。
我的问题是 - 是否可以在同一台机器上同时运行 2 个版本的 ESP-IDF?需要什么设置才能实现此目的?
干杯。
我无法使用 Crypto-JS 成功加密二进制消息。我的数据在数组缓冲区中。我正在 Angular 中工作,我进行了一个简短的测试,效果很好。我正在与 WiFi 设备通信。下面的测试工作正常,使用简单的字符串,这证明加密和传输都有效。
var iv_hexString = this.buf2hex([146, 66, 191, 151, 23, 3, 113, 119, 231, 131, 133, 112, 79, 32, 114, 136]);
var key_hexString = this.buf2hex([123, 217, 20, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 115, 222, 209, 241, 24, 175, 144, 175, 53, 196, 29, 24, 23, 17, 218, 131, 226, 53, 209]);
var key = CryptoJS.enc.Hex.parse(key_hexString);
var iv = CryptoJS.enc.Hex.parse(iv_hexString);
console.log('iv = ' + iv);
console.log('key = ' + key);
let …Run Code Online (Sandbox Code Playgroud)