【问题标题】:Serverless / AWS Lambda - Create the triggers for the published lambda versions无服务器/AWS Lambda - 为已发布的 lambda 版本创建触发器
【发布时间】:2020-11-23 22:28:09
【问题描述】:

我正在使用Serverless 框架在AWS Lambda 上部署我的功能

我正在尝试为我发布的每个 Lambda 函数版本自动创建一个触发器。

当我部署无服务器应用程序时,会创建 Lambda 函数和触发器(在本例中是我的 AWS IOT 触发器),如下图所示:

但是对于我发布的 lambda 函数版本,触发器不存在,只有资源:

我不想每次发布新的 lambda 版本时都创建新的触发器。

那么,还有什么方法可以为我的版本化 lambda 创建触发器吗?如果可能的话,使用无服务器框架禁用旧的?

我的serverless.yml 文件:

service: serverless-lambdas
provider:
  name: aws
  runtime: nodejs6.10
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "ses:*"
        - "iot:*"
      Resource:
        - "*"

functions:
   function1:
    name: "function1"
    handler: function1/handler.function1
    events:
      - iot:
          name: "iotEvent1"
          sql: "SELECT EXAMPLE"
          sqlVersion: "2016-03-23"
          enabled: true

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework serverless


    【解决方案1】:

    更新

    当我尝试使用自己的 AWS Lambda 以编程方式创建触发器时遇到了类似的问题。

    当我看到问题在于我的触发器无权调用已发布的 Lambda 函数时,我陷入了困境。所以我需要先用add-permission方法为触发器添加权限。 (这在 AWS 文档中没有明确写:/)。

    所以,在我在 Lambda 上添加触发器之前,我使用了以下方法(在 node.js 中):

    const addPermission = (ruleName) => {
      const thingArn = `arn:aws:iot:${IOT_REGION}:${SOURCE_ACCOUNT}:rule/${ruleName}`;
      const params = {
        Action: "lambda:InvokeFunction",
        FunctionName: LAMBDA_NAME,
        Principal: "iot.amazonaws.com",
        SourceAccount: SOURCE_ACCOUNT,
        SourceArn: thingArn,
        StatementId: `iot-sd-${Math.random().toString(36).substring(2) + Date.now().toString(36)}`
      };
    
      return new Promise((resolve, reject) => {
        lambda.addPermission(params).promise().then(result => {
          resolve(result)
        }).catch(err => reject(err))
      });
    };
    

    我为无服务器框架和 Shazam 测试了相同的功能!我的触发器已发布!在 Serverless 代码没有更新的情况下,我们现在可以做这样的事情。

    这样,这个问题需要在Serverless源代码上解决,我会尽快解决。


    根据我的检查,这是 AWS Lambda 函数的默认行为,因此 Serverless 框架没有问题。

    每次发布​​ Lambda 函数时,都无法自动创建触发事件。

    更多信息,我们可以阅读Versioning aliases的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-16
      • 2018-03-10
      • 2019-01-11
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 2018-03-11
      • 2020-05-17
      相关资源
      最近更新 更多