gpt4 book ai didi

node.js - 如何使用 KMS 在 nodejs 中获取/放置 S3 加密对象?

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:32 25 4
gpt4 key购买 nike

我有一些问题。我有几个 lambda 函数,如果我在本地创建脚本并运行它,一切正常,但如果我的代码在远程 lambda 上工作,我有错误:访问被拒绝

S3Service.prototype.PutFile = function (bucket, key, body, type, callback) {

var s3 = new this.AWS.S3({region: awsConfig.region,"signatureVersion":"v4"});

var params = {
Bucket: bucket,
Key: key,
Body: body,
ContentType: type,
ACL: 'public-read-write',
ServerSideEncryption: 'aws:kms',
SSEKMSKeyId: awsConfig.kmsKeyId
};

s3.putObject(params, function (err, res) {

if (err) {
callback(new InternalServerError(err));
} else {
callback(null);
}
});
};

S3Service.prototype.GetFile = function (params, callback) {
var s3 = new this.AWS.S3({ region: awsConfig.region,"signatureVersion":"v4"});

s3.getObject(params, function (err, data) {

if (err) {
callback(new InternalServerError(err));
} else {

callback(null, data.Body, data.ContentType);
}
});
};

桶政策:

var policy = {
"Version": "2012-10-17",

"Statement":[{
"Sid":"DenyUnEncryptedObjectUploads",
"Effect":"Deny",
"Principal": "*",
"Action":["s3:PutObject"],
"Resource": "arn:aws:s3:::" + name + "/*",
"Condition":{
"StringNotEquals":{
"s3:x-amz-server-side-encryption":"aws:kms"
}
}
}
]
};

生成 kms key :

 kms.createKey({ Description: 'qwe', KeyUsage: 'ENCRYPT_DECRYPT' }, function (err, data) {
//var keyId = data.KeyMetadata.KeyId
});

如何使用 ServerSideEncryption: 'aws:kms' 正确地将加密对象放入和获取到 S3?

最佳答案

这是解决方案:

  1. 转到 S3 控制台,打开存储桶并查看 KMS key 用于服务器端加密的内容。

  2. 转到 Lambda 控制台,打开您的 lambda 函数并查看什么是执行角色

  3. 转到 KMS 控制台,打开 1. 中的 key ,向下滚动到 Key Users 部分并添加 2. 中的执行角色。

Add Key User

那么您只需要PutObject 权限即可。

关于node.js - 如何使用 KMS 在 nodejs 中获取/放置 S3 加密对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36858390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com