我试图从一个Python 3.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=message,
)
如果SNS没有加密,代码可以完美地工作······
...但是当我通过以下选项加密SNS主题时:
在执行lambda时,我得到以下错误:
{“errorMessage”:“调用发布操作时发生错误(KMSNotFound):无效键号AWS/SNS(服务:AWSKMS;状态代码:400;错误代码:NotFoundException;请求ID:d81234100-9cb4-4af2-0032-c4a568a955f4)”,“errorType”:“KmsnotFoundException”,“StackTrace”:[“File\”/var/task/lambda.py\“,第10行,在处理程序中\n boto3.client('sns').Publish(\n”,“File\”._make_api_call(operation_name,kwargs)\n“,”File“/var/runtime/botocore/client.py”,第626行,在_make_api_call\n引发error_class(parsed_response,operation_name)\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>"
}
}
我无法解决问题,而且文件也没有什么帮助。 我有一个lambda需要使用KMS解密一个值。我正在使用sam部署我的lambda。最初我尝试添加策略声明
我正在使用Amazon AWS开发一个应用程序,我试图实现的是将lambda函数附加到DynamoDB表,因此在添加新行后,触发lambda函数。在上面提到的lambda函数中,我想添加使用Amazon SNS服务发送消息推送的功能,但我在他们的留档中找不到任何信息,如果可以的话,如果可以的话,到底需要做些什么才能让它工作?我在他们的留档中发现的是,您可以将lambda函数触发器附加到SNS主题,
我是AWS Lambda函数的新手。我需要在AWS Lambeda上完成一些工作 众所周知,如果AWS Cloudwatch违反阈值,它会触发一个特定的警报,但它会一次性发出SNS通知,但假设如果cpu利用率在1小时内保持在70%以上,我们不会在Cloud watch警报中收到任何通知,下次我们将只有在cpu利用率回到低于阈值状态时才会收到通知。 所以被放在帮手,所以如果有人可以帮助我写一个lam
我是AWS KMS(钥匙管理服务)的新手。 目前,我想创建一个启用服务器端加密(SSE)并将消息发布到订阅Amazon SQS队列的SNS。 Cloudformation的资源部分如下:(未显示CMK密钥和SNS Arn) 如您所见,只有SNS主题启用了SSE,但SQS只是订阅SNS主题。 当我试图将消息发布到SNS主题时。SQS队列(MySQS)可以成功接收消息,但其主体似乎未加密(仍为人类可读
我正在使用Lambda函数将消息推送到SQS队列。消息放入SQS队列后,我需要触发其他Lambda函数来处理队列中的消息。 我认为我们可以使用SNS实现这一点。我是AWS服务新手,请建议在SNS的帮助下基于SQS队列消息触发Lambda函数的解决方案。
所有服务都在欧盟西部1区。我知道发布到SNS的代码是正确的,因为它在非VPC环境中运行时可以工作。我要发布到的ARN保持不变:。 我知道可以设置NAT服务器来避免这个问题,但如果可能的话,我更愿意使用VPCendpoint来降低成本。