adi*_*gar 19 amazon-web-services aws-lambda
当你打电话时aws lambda get-function --function-name FunctionName,你会看到一把CodeSha256钥匙.不过,我不知道它是什么Sha256.它不匹配shasum -a 256 FunctionName.zip,FunctionName.zip我上传的包裹在哪里.
对于现有的lambda,我希望能够做的是从我即将上传的代码中生成sha256,该代码将与亚马逊重新提供的sha256相匹配get-function.任何帮助都表示赞赏,因为我无法在任何地方找到任何信息,除了亚马逊说它是"部署包的SHA256哈希"
小智 17
如上所述,需要在base64中进行编码.这是一个bash one-liner:
openssl dgst -sha256 -binary _your_file_path_ | openssl enc -base64
adi*_*gar 15
好的,我明白了.生成sha 256哈希的所有方法都以十六进制输出,但亚马逊在base64中返回它.
所以,要完全回答我自己的问题,这里是如何(使用节点),检查你是否要上传相同的zip.
#!/usr/bin/env node
var crypto = require('crypto');
var fs = require('fs');
var path = require('path');
var AWS = require('aws-sdk');
var lambda = new AWS.Lambda({
region: 'us-west-2'
});
var lambdaName = 'CreatePost';
var filePath = path.resolve(__dirname, 'tmp/create-post.zip');
lambda.getFunction({
FunctionName: lambdaName
}, function (error, data) {
if (error) {
console.error(error);
return process.exit(1);
}
var lambdaSha256 = data.Configuration.CodeSha256;
var shasum = crypto.createHash('sha256');
fs.createReadStream(filePath)
.on("data", function (chunk) {
shasum.update(chunk);
})
.on("end", function () {
var sha256 = shasum.digest('base64');
if (sha256 === lambdaSha256) {
console.log("No need to upload, sha hashes are the same");
} else {
console.log("That needs to be uploaded again son.")
}
process.exit();
});
});
Run Code Online (Sandbox Code Playgroud)
nob*_*bar 14
以下是在 GNU/Linux 上使用基本实用程序的方法:
cat function.zip |sha256sum |cut -d' ' -f1 |xxd -r -p |base64
Run Code Online (Sandbox Code Playgroud)
这些组件可能很熟悉:
cut隔离校验和值xxd将 base16 转换为二进制(反向十六进制转储)base64将二进制转换为 base64| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |