public async Task<string> EncryptText(string textToEncrypt, string keyID)
{
if (string.IsNullOrWhiteSpace(textToEncrypt))
{
return "";
}
else
{
var result = "";
var client = new AmazonKeyManagementServiceClient();
var encryptRequest = new Amazon.KeyManagementService.Model.EncryptRequest();
encryptRequest.KeyId = keyID;
var textBytes = Encoding.UTF8.GetBytes(textToEncrypt);
encryptRequest.Plaintext = new MemoryStream(textBytes, 0, textBytes.Length);
var response = await client.EncryptAsync(encryptRequest);
if (response != null)
{
result = Convert.ToBase64String(response.CiphertextBlob.ToArray());
}
return result;
}
}
以下代码完全适用于本地系统,但具有弹性。我无法找出出现此错误的原因
您得到的错误是什么?这很可能是IAM问题。本地框上的IAM用户权限与EC2实例上的实例配置文件不同。
-
导航到Elastic Beanstalk>环境>您的环境>配置
-
在安全性下查找正在使用的IAM实例配置文件。
-
转到IAM并查找角色。它应该有一个允许使用该密钥加密操作的策略声明。类似于:
{
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"Resource": "arn:aws:kms:{my region}:{my account id}:key/{my key id}",
"Effect": "Allow"
}
- 同时转到KMS检查密钥策略。它可能看起来像:
{
"Effect": "Allow",
"Principal": {
"AWS": "{my iam instance profile arn}"
},
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
我们需要更多关于错误的细节来正确评估问题。但也许这就是问题所在。