Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 无服务器-无法使用cloudwatch事件触发aws lambda_Amazon Web Services_Serverless Framework_Serverless - Fatal编程技术网

Amazon web services 无服务器-无法使用cloudwatch事件触发aws lambda

Amazon web services 无服务器-无法使用cloudwatch事件触发aws lambda,amazon-web-services,serverless-framework,serverless,Amazon Web Services,Serverless Framework,Serverless,当前我的serverless.yml文件如下所示: service: bbb provider: name: aws runtime: go1.x stage: dev package: exclude: - ./** include: - ./bin/** functions: ccc: handler: bin/executable name: my1minutelambda role: 'Fn::G

当前我的serverless.yml文件如下所示:

service: bbb

provider:
  name: aws
  runtime: go1.x
  stage: dev

package:
  exclude:
    - ./**
  include:
    - ./bin/**
    
functions:
  ccc:
    handler: bin/executable
    name: my1minutelambda
    role: 
      'Fn::GetAtt':
        - mylambdaexecutionrole
        - Arn
            
resources:
  Resources:
    mylambdaexecutionrole:
      Type: AWS::IAM::Role
      Properties:
         RoleName: my-basiclambdaexec-role
         Description: This is my basiclambdaexecution role
         AssumeRolePolicyDocument:
           Version: "2012-10-17"
           Statement:
             -
               Effect: Allow
               Principal:
                 Service:
                     - "lambda.amazonaws.com"
               Action:
                 - "sts:AssumeRole"
         ManagedPolicyArns:
           - "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
    myminschedulerevent: 
      Type: AWS::Events::Rule
      Properties:
        Description: This is my 1 minute rate scheduler.
        Name: my-1-min-trigger-event-scheduler
        ScheduleExpression: rate(1 hour) 
        Targets: 
          - 
            Arn: "arn:aws:lambda:us-east-1:111111111111:function:my1minutelambda" #update your a/c Id
            Id: "TargetFunctionV1"
用于部署的命令:sls deploy

部署完成后,我可以在aws管理控制台上看到所有资源都已创建

但是我无法看到我的lambda函数的cloudwatch触发器扩展

请参见下面的屏幕截图:

  • 已成功创建CloudWatch事件规则。(目标部分指向我的lambda函数)
  • 未为我的lambda建立触发器链接:
  • 请让我知道我错过了什么。多谢各位

    更新#1:

    在添加以下行(如Marcin所建议的)之后,我能够看到“CloudWatch事件”

    但是,我看不到CloudWatch日志!!因此,我无法确定lambda函数是否正在执行。请参见下图:


    我尝试使用
    serverless
    框架复制该问题

    为此,我在模板末尾添加了以下内容:

        EventsPermission:
          Type: AWS::Lambda::Permission
          Properties:
            FunctionName: dsfgsdfg # <-- REPLACE this with your function name my1minutelambda
            Action: lambda:InvokeFunction
            Principal: events.amazonaws.com
            SourceArn: !GetAtt myminschedulrevent.Arn
    
    events任务:
    类型:AWS::Lambda::权限
    特性:
    
    FunctionName:dsfgsdfg#如果您只想让Lambda函数按计划执行,那么无服务器框架已经包含了一个专门用于此目的的事件类型:

    functions:
      crawl:
        handler: crawl
        events:
          - schedule: rate(2 hours)
          - schedule: cron(0 12 * * ? *)
    

    它将为您设置一切,而无需添加额外的云信息。您可以在这里找到文档:

    但是它能工作吗?Lambda console有时不显示触发器,即使它们可以工作。您是否为cloudwatch事件定义了aws权限:
    类型:aws::Lambda::permission
    ,以调用serverless.yaml文件中的Lambda@Marcin-我点击“监控”->“在CloudWatch中查看日志”。但是我没有看到lambda函数的任何“日志流”。@salazarin:我已经附加了serverless.yml文件。我想,我还没有定义任何这样的许可。您能帮我更新serverless.yml文件或丢失的yml部分吗?我对aws非常陌生。通过您的更改,我可以看到“EventBridge(CloudWatch事件)”链接。但是,CloudWatch日志没有显示lambda函数的日志流。@Jatin您将规则设置为每小时触发一次。可能要等一个小时,或者你修改了它?我修改为1min@Marcin--我删除了我的cloudformation堆栈并重新部署。在sls部署之前,我还从“AWS::Lambda::Permission”中删除了“SourceAccount”。现在,lambda工作正常。日志流使用打印语句进行更新。您好,Gareth,感谢您的快速解决方案。但是,我特别尝试我自己的方式来完成我的任务。您的解决方案会起作用,但我更感兴趣的是使用cloudformation语法提供资源信息。您可能会发现使用SAM更有用,因为SAM是AWS在无服务器框架上的尝试,但只使用云形成。这样,您就避免了无服务器框架所做的可能会阻碍您的工作的额外工作。
    functions:
      crawl:
        handler: crawl
        events:
          - schedule: rate(2 hours)
          - schedule: cron(0 12 * * ? *)