首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无服务器部署不集成AWS Lambda与SQS事件

无服务器部署不集成AWS Lambda与SQS事件
EN

Stack Overflow用户
提问于 2019-05-19 23:51:30
回答 1查看 343关注 0票数 1

我正在尝试使用无服务器框架创建一个与名为'sendExportJob‘的AWS Lambda函数相关联的AWS SQS事件,但在部署之后,我在AWS控制台中看不到SQS触发器。显然,我可以通过控制台手动添加此事件,它可以按预期工作。

下面是serverless.yml中的Lambda函数配置:

代码语言:javascript
复制
sendExportJob:
  handler: src/sendExportJob.handler
  role: sendExportJobIAM
  memorySize: ${self:custom.config.send-exportjob-lambda-settings.memorySize}
  timeout: ${self:custom.config.send-exportjob-lambda-settings.timeout} 
  environment:
    lambdaName: ${self:custom.config.send-exportjob-lambda-settings.name}
    pendingqueueUrl: https://sqs.${self:custom.config.region}.amazonaws.com/${self:custom.config.account-id}/${self:custom.config.sqs-pending-exports-queue-name}
    region: ${self:custom.config.region} 
  events:
    - schedule: rate(${self:custom.config.send-exportjob-lambda-settings.schedule-rate-minutes} minutes)
    - pendingsqs:
      arn:  arn:aws:sqs:${self:custom.config.region}:${self:custom.config.account-id}:${self:custom.config.sqs-pending-exports-queue-name}
      batchSize: 1

以下是此特定函数的IAM配置:

代码语言:javascript
复制
 sendExportJobIAM:
    Type: AWS::IAM::Role
    Properties:
      RoleName: sendExportJobRole
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lambda.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: sendExportJobIAMAll
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - logs:CreateLogStream
                  - logs:PutLogEvents
                  - logs:CreateLogGroup
                Resource: '*'
              - Effect: Allow
                Action:
                  - sqs:ChangeMessageVisibility
                  - sqs:ChangeMessageVisibilityBatch
                  - sqs:DeleteMessage
                  - sqs:DeleteMessageBatch
                  - sqs:GetQueueAttributes
                  - sqs:ReceiveMessage
                Resource:   arn:aws:sqs:${self:custom.config.region}:${self:custom.config.account-id}:${self:custom.config.sqs-pending-exports-queue-name}
              - Effect: Allow
                Action:
                  - lambda:InvokeFunction
                Resource: '*'

我使用的是最新版本的无服务器框架,并且我已经检查了配置文件中的缩进。

之前已经部署了SQS资源,因此在将其添加为事件之前它已经存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 01:04:09

您的events节下缺少sqs属性。我不太清楚你说的pendingsqs是什么意思,因为它不是一个有效的无服务器框架的关键字

代码语言:javascript
复制
sendExportJob:
  handler: src/sendExportJob.handler
  role: sendExportJobIAM
  memorySize: ${self:custom.config.send-exportjob-lambda-settings.memorySize}
  timeout: ${self:custom.config.send-exportjob-lambda-settings.timeout} 
  environment:
    lambdaName: ${self:custom.config.send-exportjob-lambda-settings.name}
    pendingqueueUrl: https://sqs.${self:custom.config.region}.amazonaws.com/${self:custom.config.account-id}/${self:custom.config.sqs-pending-exports-queue-name}
    region: ${self:custom.config.region} 
  events:
    - schedule: rate(${self:custom.config.send-exportjob-lambda-settings.schedule-rate-minutes} minutes)
    - sqs: arn:aws:sqs:${self:custom.config.region}:${self:custom.config.account-id}:${self:custom.config.sqs-pending-exports-queue-name}

如果您想像上面那样配置批处理大小,只需将其放在events列表中的sqs项下,如下所示:

代码语言:javascript
复制
sendExportJob:
      handler: src/sendExportJob.handler
      role: sendExportJobIAM
      memorySize: ${self:custom.config.send-exportjob-lambda-settings.memorySize}
      timeout: ${self:custom.config.send-exportjob-lambda-settings.timeout} 
      environment:
        lambdaName: ${self:custom.config.send-exportjob-lambda-settings.name}
        pendingqueueUrl: https://sqs.${self:custom.config.region}.amazonaws.com/${self:custom.config.account-id}/${self:custom.config.sqs-pending-exports-queue-name}
        region: ${self:custom.config.region} 
      events:
        - schedule: rate(${self:custom.config.send-exportjob-lambda-settings.schedule-rate-minutes} minutes)
        - sqs: 
            arn: aws:sqs:${self:custom.config.region}:${self:custom.config.account-id}:${self:custom.config.sqs-pending-exports-queue-name}
            batchSize: 1

这都是有文档记录的here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56209473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档