Publi sh из лямбда-функции в зашифрованном KMS SNS - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь опубликовать sh из функции Python 3.8 Lambda в зашифрованном KMS SNS topi c. Код моей лямбды:

import os
import boto3

sns = boto3.client('sns')


def handler(event, context):
    message = 'Hello world'

    response = sns.publish(
        TopicArn='<My topic ARN>',
        Message=message,
    )

Если SNS не зашифрован, код работает отлично ...

... но когда я шифрую SNS topi c через следующая опция:

enter image description here

Я получаю следующую ошибку при выполнении лямбды:

{"errorMessage": " Произошла ошибка (KMSNotFound) при вызове операции Publi sh: неверный идентификатор ключа aws / sns (Сервис: AWSKMS; Код состояния: 400; Код ошибки: NotFoundException; Идентификатор запроса: d81234100-9cb4-4af2-0032-c4a568a955f4) ", "errorType": "KMSNotFoundException", "stackTrace": ["File \" / var / task / lambda.py \ ", строка 10, в обработчике \ n boto3.client ('sns'). publi sh (\ n "," Файл \ "/ var / runtime / botocore / client.py \", строка 316, в _api_call \ n, возвращает self._make_api_call (имя_операции, kwargs) \ n "," Файл \ "/ var / runtime / botocore /client.py \ ", строка 626, в _make_api_call \ n поднять error_class (parsed_response, имя_операции) \ n"]}

Чего мне не хватает в моем коде?

1 Ответ

0 голосов
/ 12 апреля 2020
Поддержка

AWS любезно указала, что мне не хватает разрешений KMS в моей роли выполнения лямбда-выражений.

Для выполнения роли лямбда-функции должно быть следующее, чтобы иметь возможность публиковать sh в зашифрованных топиках SNS. c:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": "<the-key-with-which-the-topic-is-encrypted>"
  }
}
...