我使用CodeBuild步骤构建了CodePipeline,该步骤生成带有单行标记信息的文件“build.json”。此文件是Codepipeline中下一个Lambda步骤的输入。 Lambda函数想要读取标记信息,然后对其执行某些操作。因此,我使用s3 :: getobject读取S3对象,并获得响应:
{
"AcceptRanges": "bytes",
"LastModified": "2017-08-07T00:25:22.000Z",
"ContentLength": 158,
"ETag": "\"4444a193ad79ffe0ec0bd51ce7cf297c\"",
"ContentType": "",
"ServerSideEncryption": "aws:kms",
"Metadata": {
"codebuild-content-sha256": "fa85881e29d5b68464b078243ac23754189741e244bbf2d3748c02d97885ff51",
"codebuild-content-md5": "44444449e8f4b830a487b86e1e94c0"
},
"SSEKMSKeyId": "arn:aws:kms:eu-central-1:813287844011:key/4444444-0db2-4c3c-b24e-20ff7bbe206a",
"Body": {
"type": "Buffer",
"data": [
80,
75,
3,...]}}
当我使用内容并将其发送到kms解密时:
kms.decrypt({ CiphertextBlob: mydata.Metadata["codebuild-content-sha256"] }, function (err, kmsData) {
if (err) {
console.log("ERROR " + err);
} else {
console.log("SUCCESS");
}
我只得到:ERROR InvalidCiphertextException:null。
我还尝试提供一些其他值作为Encryptioncontext,但没有运气。
感谢。
答案 0 :(得分:0)
对象是否使用除S3服务器端加密以外的其他KMS密钥加密?根据我的理解,S3:GetObject返回的数据已被解密,请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html