私はそれを理解しました。 sha 256のハッシュを生成するためのすべてのメソッドは16進数で出力しますが、amazonはそれを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();
});
});