【问题标题】:How to create an EventSourceMapping with serverless 1.0?如何使用无服务器 1.0 创建 EventSourceMapping?
【发布时间】:2016-09-01 18:48:26
【问题描述】:

我正在尝试设置事件源映射,以便每次将记录提交到我的 dynamodb 表时调用 Lambda 函数。我正在尝试按照

的说明进行操作

https://github.com/serverless/serverless/blob/master/docs/guide/overview-of-event-sources.md

我当前的serverless.yml 正在使用:

service: sl-pipeline

provider:
  name: aws
  runtime: python2.7
  memorySize: ${memoryVar}
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "dynamodb:*"
      Resource: "arn:aws:dynamodb:*:*:table/MyTable*"
    - Effect: "Allow"
      Action:
        - "dynamodb:GetRecords"
        - "dynamodb:GetShardIterator"
        - "dynamodb:DescribeStream"
        - "dynamodb:ListStreams"
      Resource: "arn:aws:dynamodb:*:*:table/MyTable*/stream/*"

# you can overwrite defaults here
defaults:
  stage: dev
  region: us-east-1

functions:
  main:
    handler: handler.main

# Add event trigger from dynamodb Stream Table
resources:
  Resources:
    mapping:
      Type: AWS::Lambda::EventSourceMapping
      Properties:
        BatchSize: 10
        EventSourceArn: "arn:aws:dynamodb:us-east-1:XXXXXXXXX:table/MyTable/stream"
        FunctionName: "sl-pipeline-dev-main"
        StartingPosition: LATEST

每次我打电话给serverless deploy,我都会收到:

 Serverless Error ---------------------------------------

 An error occurred while provisioning your cloudformation:
 The following resource(s) failed to create: [IamRoleLambda,
 mapping]. 

我猜这与 IAM 角色权限有关,但不知道如何解决。对于我用于无服务器本身的角色,我尝试只使用:

Action: "*"
Resource: "*"

所以它应该可以做任何事情。

请注意,如果我从serverless.yml 中删除resources 部分,我可以正确部署。我什至可以去 dynamodb 表,手动将触发器添加到 lambda 函数中,一切正常。

提前致谢

【问题讨论】:

    标签: lambda serverless-framework


    【解决方案1】:

    首先;查看为什么无法创建 IamRoleLambda。转到 AWS Web 控制台并转到 CloudFormation。单击您的堆栈(可能它说它失败了)。滚动到失败的步骤并查看原因。它通常会准确说明失败的原因。

    第二;您不需要您的 lambda 执行角色来获得对流的权限。尝试从有关流的 iam 策略中删除部分。所以它看起来像这样:

    provider:
        name: aws
        runtime: python2.7
        memorySize: ${memoryVar}
        iamRoleStatements:
        - Effect: "Allow"
          Action:
             - "dynamodb:*"
          Resource: "arn:aws:dynamodb:*:*:table/MyTable*"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 2015-02-05
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      相关资源
      最近更新 更多