Python 3.x AWS SAM计划Lambda未按照计划触发

Python 3.x AWS SAM计划Lambda未按照计划触发,python-3.x,aws-sam,aws-sam-cli,Python 3.x,Aws Sam,Aws Sam Cli,我有一个用例,我需要每2分钟调用一个API来检查更新并将结果存储到数据库中。同样,我正在尝试使用AWS SAM CLI和Python实现AWS Schedule lambda函数,但是我的lambda函数没有被触发。下面是我的代码: app.py def lambda_schedule(event, context): print("Lambda Schedule event started Successfully......") print("L

我有一个用例,我需要每2分钟调用一个API来检查更新并将结果存储到数据库中。同样,我正在尝试使用AWS SAM CLI和Python实现AWS Schedule lambda函数,但是我的lambda函数没有被触发。下面是我的代码:

app.py

def lambda_schedule(event, context):
    print("Lambda Schedule event started Successfully......")
    print("Lambda function ARN:", context.invoked_function_arn)
    print("CloudWatch log stream name:", context.log_stream_name)
    print("CloudWatch log group name:", context.log_group_name)
    print("Lambda Request ID:", context.aws_request_id)
    print("Lambda Schedule event ended Successfully......")
def lambda_schedule(event, context):
    print("Lambda Schedule event started Successfully......")
    print("Lambda function ARN:", context.invoked_function_arn)
    print("CloudWatch log stream name:", context.log_stream_name)
    print("CloudWatch log group name:", context.log_group_name)
    print("Lambda Request ID:", context.aws_request_id)
    print("Lambda Schedule event ended Successfully......")
模板yaml

CronLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_schedule
      Runtime: python3.8
    Events:
      PullBalanceScheduleRule:
        Type: AWS::Events::Rule
        Properties:
          EventPattern:
            source:
              - "aws.events"

PullBalanceScheduleRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "PullBalanceScheduleRule"
      ScheduleExpression: "rate(2 minutes)"
      State: "ENABLED"
      Targets:
        -
          Arn: !GetAtt CronLambdaFunction.Arn
          Id: "CronLambdaFunction"
  PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref "PullBalanceScheduleRule"
      Action: "lambda:InvokeFunction"
      Principal: "events.amazonaws.com"
      SourceArn:
        -
          Arn: !GetAtt PullBalanceScheduleRule.Arn
          Id: "PullBalanceScheduleRule"
CronLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_schedule
      Runtime: python3.8
    Events:
      PullBalanceScheduleRule:
        Type: AWS::Events::Rule
        Properties:
          EventPattern:
            source:
              - "aws.events"

PullBalanceScheduleRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "PullBalanceScheduleRule"
      ScheduleExpression: "rate(2 minutes)"
      State: "ENABLED"
      Targets:
        -
          Arn: !GetAtt CronLambdaFunction.Arn
          Id: "CronLambdaFunction"
PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref "CronLambdaFunction"
      Action: "lambda:InvokeFunction"
      Principal: "events.amazonaws.com"
      SourceArn:
        Fn::GetAtt:
          - "PullBalanceScheduleRule"
          - "Arn"

有谁能告诉我,我的代码中有什么错误或缺少什么吗?

我犯了错误。许可部分有错误。我在这里发布了正确的yaml配置,以便对AWS SAM CLI新手有所帮助

app.py

def lambda_schedule(event, context):
    print("Lambda Schedule event started Successfully......")
    print("Lambda function ARN:", context.invoked_function_arn)
    print("CloudWatch log stream name:", context.log_stream_name)
    print("CloudWatch log group name:", context.log_group_name)
    print("Lambda Request ID:", context.aws_request_id)
    print("Lambda Schedule event ended Successfully......")
def lambda_schedule(event, context):
    print("Lambda Schedule event started Successfully......")
    print("Lambda function ARN:", context.invoked_function_arn)
    print("CloudWatch log stream name:", context.log_stream_name)
    print("CloudWatch log group name:", context.log_group_name)
    print("Lambda Request ID:", context.aws_request_id)
    print("Lambda Schedule event ended Successfully......")
模板yaml

CronLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_schedule
      Runtime: python3.8
    Events:
      PullBalanceScheduleRule:
        Type: AWS::Events::Rule
        Properties:
          EventPattern:
            source:
              - "aws.events"

PullBalanceScheduleRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "PullBalanceScheduleRule"
      ScheduleExpression: "rate(2 minutes)"
      State: "ENABLED"
      Targets:
        -
          Arn: !GetAtt CronLambdaFunction.Arn
          Id: "CronLambdaFunction"
  PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref "PullBalanceScheduleRule"
      Action: "lambda:InvokeFunction"
      Principal: "events.amazonaws.com"
      SourceArn:
        -
          Arn: !GetAtt PullBalanceScheduleRule.Arn
          Id: "PullBalanceScheduleRule"
CronLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_schedule
      Runtime: python3.8
    Events:
      PullBalanceScheduleRule:
        Type: AWS::Events::Rule
        Properties:
          EventPattern:
            source:
              - "aws.events"

PullBalanceScheduleRule:
    Type: AWS::Events::Rule
    Properties:
      Description: "PullBalanceScheduleRule"
      ScheduleExpression: "rate(2 minutes)"
      State: "ENABLED"
      Targets:
        -
          Arn: !GetAtt CronLambdaFunction.Arn
          Id: "CronLambdaFunction"
PermissionForEventsToInvokeLambda:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !Ref "CronLambdaFunction"
      Action: "lambda:InvokeFunction"
      Principal: "events.amazonaws.com"
      SourceArn:
        Fn::GetAtt:
          - "PullBalanceScheduleRule"
          - "Arn"