【问题标题】:Is it possible to set EventBridge ScheduleExpression value from SSM in Serverless是否可以在无服务器中从 SSM 设置 EventBridge ScheduleExpression 值
【发布时间】:2021-11-05 18:54:09
【问题描述】:

我想通过 AWS EventBridge 安排一个 lambda。问题是我想从 SSM 变量 GCHeartbeatInterval

中读取 ScheduledExpression 中使用的数值

我使用的代码如下

heartbeat-check:
      handler: groupconsultation/heartbeatcheck.handler
      description: ${self:custom.gitVersion}
      timeout: 15
      memorySize: 1536
      package:
        include:
          - groupconsultation/heartbeatcheck.js
          - shared/*
          - newrelic-lambda-wrapper.js
      events:
        - eventBridge:
           enabled: true
           schedule: rate(2 minutes)
resources:
 Resources:
    GCHeartbeatInterval:
      Type: AWS::SSM::Parameter
      Properties:
        Name: /${file(vars.js):values.environmentName}/lambda/HeartbeatInterval
        Type: String
        Value: 1  
        Description: value in minute. need to convert it to seconds/milliseconds

这可以在 serverless.yml 中实现吗?

从 SSM 读取它的原因是,它是一个心跳服务,FE 将使用相同的值在设定的间隔内发送一个心跳。 BE lambda 需要在 2x 心跳间隔后触发

【问题讨论】:

    标签: aws-lambda serverless


    【解决方案1】:

    事实证明这是不可能的。唯一的解决方案是将变量作为命令行参数传递。如下所示。

    custom:
      mySchedule: ${opt:mySchedule, 1}  # Allow overrides from CLI
    
    ...
    schedule: ${self:custom.mySchedule}
    ...
    
    resources:
      Resources:
        GCHeartbeatInterval:
          Type: AWS::SSM::Parameter
          Properties:
            Name: /${file(vars.js):values.environmentName}/lambda/HeartbeatInterval
            Type: String
            Value: ${self:custom.mySchedule}
    

    使用另一种方法,如果我们让它工作,我们仍然需要重新部署应用程序,因为在这种情况下我们也需要重新部署。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多