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 如何为使用CloudFormation模板创建的AWS Lambda函数添加触发器?_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Amazon web services 如何为使用CloudFormation模板创建的AWS Lambda函数添加触发器?

Amazon web services 如何为使用CloudFormation模板创建的AWS Lambda函数添加触发器?,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我正在尝试根据以下示例从CloudFormation模板创建lambda函数: 从这个链接可以看出: 无法为lambda函数添加触发器(如S3上载触发器) 在编写模板时是否有指定触发器的变通方法?您需要在S3存储桶定义中添加一个触发器。但是,这将导致循环依赖,其中S3 bucket引用Lambda函数,Lambda函数引用S3 bucket 为了避免这种循环依赖,创建所有资源(包括S3 bucket和Lambda函数),而不指定通知配置。然后,在创建堆栈后,使用更新模板,然后更新堆栈。您可以

我正在尝试根据以下示例从CloudFormation模板创建lambda函数:

从这个链接可以看出:

无法为lambda函数添加触发器(如S3上载触发器)

在编写模板时是否有指定触发器的变通方法?

您需要在S3存储桶定义中添加一个触发器。但是,这将导致循环依赖,其中S3 bucket引用Lambda函数,Lambda函数引用S3 bucket


为了避免这种循环依赖,创建所有资源(包括S3 bucket和Lambda函数),而不指定通知配置。然后,在创建堆栈后,使用更新模板,然后更新堆栈。

您可以使用cloudwatch规则触发lambda函数:

    AWSTemplateFormatVersion: '2010-09-09'
    Resources:
      MyCloudWatchRule:
        Type: "AWS::Events::Rule"
        Properties:
          Description: "Rule to trigger lambda"
          Name: "MyCloudWatchRule"
          EventPattern: <Provide Valid JSON Event pattern>
          State: "ENABLED"
          Targets:
            - Arn: "arn:aws:lambda:us-west-2:12345678:function:MyLambdaFunction"
              Id: "1234567-acvd-awse-kllpk-123456789"
AWSTemplateFormatVersion:'2010-09-09'
资源:
MyCloudWatchRule:
类型:“AWS::Events::Rule”
特性:
描述:“触发lambda的规则”
名称:“MyCloudWatchRule”
事件模式:
状态:“已启用”
目标:
-Arn:“Arn:aws:lambda:us-west-2:12345678:函数:MyLambdaFunction”
Id:“1234567-acvd-awse-kllpk-123456789”
参考:


    • 已经有一段时间了,所以我想你已经解决了这个问题,但我会投入我的2美分来帮助别人

      对于这类事情,最好使用SAM(无服务器应用程序模型)。因此,请使用
      AWS::Serverless::Function
      而不是
      AWS::Lambda::Function

      在其中,您可以指定一个接受以下可能值的
      EventSource

      • S3
      • 社交网站
      • 运动
      • 发电机
      • SQS
      • 原料药
      • 时间表
      • CloudWatchEvent
      • CloudWatchLogs
      • 物联网规则
      • 亚历克斯基尔
      • 白兰地
      • HttpApi
      剩下的工作是萨姆做的。有关其余详细信息,请遵循本指南:

      如今,亚马逊解决了这个问题:


      只需像示例中那样创建Lambda权限。

      Lambda函数可以由多个AWS资源触发,如S3、SNS、SQS、API等。在


      我建议您使用,它可以让您超级快速地创建和配置Lambda函数,还可以选择触发它的方式。

      或者可以使用
      DependsOn
      或者添加等待时间。添加链接被删除时的示例总是很好:)