У меня есть следующий код в лямбда-функции:
var ssmConfig = new AmazonSimpleSystemsManagementConfig
{
RegionEndpoint = RegionEndpoint.APSoutheast2
};
using (var ssmClient = new AmazonSimpleSystemsManagementClient(ssmConfig))
{
var myParameter = await ssmClient.GetParameterAsync(
new GetParameterRequest
{
Name = "myParameter",
WithDecryption = true
});
У функции Lambda есть следующая политика:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeParameters",
"ssm:GetParameters",
"ssm:GetParameter"
],
"Resource": "arn:aws:ssm:ap-southeast-2:23314131242:parameter/myParameters/*"
},
{
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:ap-southeast-2:23314131242:key/myKey"
]
}
]
}
Однако я получаю следующую ошибку:
Amazon.SimpleSystemsManagement.AmazonSimpleSystemsManagementException: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access
Используя симулятор политики IAM, я убедился, что роль Lambda имеет ожидаемые разрешения.
Мне нужно как-то указывать псевдоним CMK? Что еще могло быть не так?
Я понял, что мне также нужно добавить роль Lambda в качестве «ключевого пользователя» CMK. Видеть https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users для подробностей.
Это можно сделать через консоль, отредактировав CMK, а затем прокрутив страницу вниз до раздела «Ключевые пользователи».