Aws lambda SNS订阅不是使用无服务器创建的
我有一个无服务器项目,它应该部署一个队列,将这个队列订阅到一个现有主题,并使用lambda来处理队列外的消息。这是我的yaml:Aws lambda SNS订阅不是使用无服务器创建的,aws-lambda,amazon-sns,serverless,Aws Lambda,Amazon Sns,Serverless,我有一个无服务器项目,它应该部署一个队列,将这个队列订阅到一个现有主题,并使用lambda来处理队列外的消息。这是我的yaml: service: "ssul-${opt:branch}" provider: name: aws runtime: nodejs8.10 region: eu-west-1 functions: update: reservedConcurrency: 10 handler: index.update events:
service: "ssul-${opt:branch}"
provider:
name: aws
runtime: nodejs8.10
region: eu-west-1
functions:
update:
reservedConcurrency: 10
handler: index.update
events:
- sqs:
arn: {Fn::GetAtt: [Queue, Arn]}
batchSize: 1
resources:
Resources:
Queue:
Type: "AWS::SQS::Queue"
Properties:
MessageRetentionPeriod: 10800
VisibilityTimeout: 900
QueueName: "updates-${opt:branch}"
Subscription:
Type: "AWS::SNS::Subscription"
Properties:
TopicArn: "${env:TOPIC_ARN}"
Protocol: sqs
Endpoint:
Fn::GetAtt: [Queue, Arn]
我运行sls deploy——分支主节点
返回良好结果,除订阅外,所有内容都已部署。该主题位于不同的帐户中,但我能够创建一个队列并通过控制台手动订阅它。我做错了什么?我遇到了类似的问题(在我的例子中,我使用的是SAM-Serverless应用程序模型,所以我的yml不同,但问题应该是相同的)。有时控制台会在幕后创建一些对象。在我的案例中,问题在于主题策略资源:
TopicPolicy:
Type: "AWS::SNS::TopicPolicy"
Properties:
PolicyDocument:
Version: "2012-10-17"
Id: MyTopicPolicy
Statement:
-
Effect: "Allow"
Principal:
Service: "events.amazonaws.com"
Action:
- "sns:Publish"
Resource: "*"
Topics:
- !Ref PipelineNotificationsTopic