Amazon web services 从KMS加密SNS中的lambda函数发布
我试图将Python3.8lambda函数发布到KMS加密的SNS主题中。 我的lambda的代码是:Amazon web services 从KMS加密SNS中的lambda函数发布,amazon-web-services,aws-lambda,boto3,amazon-sns,Amazon Web Services,Aws Lambda,Boto3,Amazon Sns,我试图将Python3.8lambda函数发布到KMS加密的SNS主题中。 我的lambda的代码是: import os import boto3 sns = boto3.client('sns') def handler(event, context): message = 'Hello world' response = sns.publish( TopicArn='<My topic ARN>', Message=mes
import os
import boto3
sns = boto3.client('sns')
def handler(event, context):
message = 'Hello world'
response = sns.publish(
TopicArn='<My topic ARN>',
Message=message,
)
导入操作系统
进口boto3
sns=boto3.客户端(“sns”)
def处理程序(事件、上下文):
message='Hello world'
响应=sns.publish(
TopicArn=“”,
消息=消息,
)
如果SNS没有加密,代码就可以正常工作
。。。但当我通过以下选项加密SNS主题时:
执行lambda时,我得到以下错误:
{
“errorMessage”:“调用发布操作时发生错误(KmsNotFind):无效的密钥ID aws/sns(服务:AWSKMS;状态代码:400;错误代码:NotFoundException;请求ID:d81234100-9cb4-4af2-0032-c4a568a955f4)”,
“errorType”:“KMSNotFoundException”,
“stackTrace”:[
“文件\”/var/task/lambda.py\”,第10行,在handler\n boto3.client('sns').publish(\n)中,
“File\”/var/runtime/botocore/client.py\”,第316行,在\u api\u调用中\n返回self.\u make\u api\u调用(操作名称,kwargs)\n”,
“文件\“/var/runtime/botocore/client.py\”,第626行,在\u make\u api\u调用\n raise error\u类(解析的\u响应,操作\u名称)\n”
]
}
我的代码中缺少了什么?AWS支持人员善意地指出,我在lambda执行角色中缺少KMS权限 Lambda函数执行角色必须具有以下内容才能在SNS加密主题中发布:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "<the-key-with-which-the-topic-is-encrypted>"
}
}
{
“版本”:“2012-10-17”,
“声明”:{
“效果”:“允许”,
“行动”:[
“kms:GenerateDakey”,
“kms:解密”
],
“资源”:”
}
}
您在整个脚本中的那部分代码发布在哪里?您好@marcin2x4,我没有完全理解您的问题,代码与问题中的代码相同,但只需更改角色策略(因此此JSON不应在python中,而应在AWS策略定义中)