Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Lambda不会触发SNS_Amazon Web Services_Amazon Sqs_Amazon Sns - Fatal编程技术网

Amazon web services Lambda不会触发SNS

Amazon web services Lambda不会触发SNS,amazon-web-services,amazon-sqs,amazon-sns,Amazon Web Services,Amazon Sqs,Amazon Sns,我使用的是lambda积分 我的流程是: SQS->labmda->SNS(异步失败/suc)。 问题是,在lambda函数之后,SNS并没有被触发。怎么了?SQS绝对是异步执行 如何调试 有什么提示吗 我的SNS访问策略如下: { "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ {

我使用的是lambda积分

我的流程是:

SQS->labmda->SNS(异步失败/suc)。

问题是,在lambda函数之后,SNS并没有被触发。怎么了?SQS绝对是异步执行

如何调试

有什么提示吗

我的SNS访问策略如下:

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:us-east-2:044739556748:LambdaNotification",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "044739556748"
        }
      }
    }
  ]
}

看起来您已经配置了一个从SQS触发的Lambda函数

第一次调试: 当我们混合使用异步和同步方法时,就会出现这些问题。您能否验证SQS的生命周期,从将消息发送到队列、消息处于飞行状态到删除消息

第二次调试: 请检查您的Lambda执行角色是否具有执行SQS和SNS请求所需的权限

第三次调试: 请检查您的Lambda代码是否有任何错误

第四次调试: 请不要在Lambda中使用异步函数。而是使记录循环异步

例如


请分享代码snipper和您如何设置资源,任何云信息?您是否给lambda发布到sns的正确权限?如果是代码snipper,我只需单击AWS GUI中的服务,lambda没有代码(仅用于测试),我将完全访问权放在SQS上,SNSI添加了sns访问策略从SQS发送可以同步?我认为每次都是异步的,还是不异步的?是的,两者都可以。对于同步,必须由消费者确认,否则应删除消息。否则它将从一个队列移动到另一个航班,然后再返回。我看不到我的SQS中的任何设置如何设置异步,我正在从AWS GUI发送演示消息。如果您不使用FIFO,那么它是异步的。如果您转到队列列表,实际上可以看到队列中和飞行中的消息数。继续刷新页面,您将看到计数。直到消息未被任何接收方使用并确认它将按照配置的保留时间保留在队列中。是否可以通过api网关触发异步作业?
export.handler = function(event, context)
if(event.Records){
   event.Records.forEach(async(record))=>{
     await ProcessQueue(record)
   }
}

const ProcessQueue=(record)=>{
  // Put your logic here
}