使用AWS Lambda在无服务器环境中触发两次Cron作业

使用AWS Lambda在无服务器环境中触发两次Cron作业,cron,aws-lambda,serverless,Cron,Aws Lambda,Serverless,我正在运行一个Cron作业,该作业在UTC每周日上午10:00运行 它将文本消息推送到电报组 这是我的 以下有关部分— serverless.yml handler.js 代码中没有任何地方会向电报发送两次请求,即,axios只写入一次 我得到的日志说cronjob在10:00:09 am&在10:01:08 am 我正在使用AWS Lambda的无服务器框架 如何确保它只运行一次?因为人们在电报组中收到了两条消息:(在那个链接上读评论哦,我在发布之前读过。但是解决方案是什么?如果有的话?因为我

我正在运行一个Cron作业,该作业在UTC每周日上午10:00运行

它将文本消息推送到电报组

这是我的

以下有关部分—

serverless.yml handler.js 代码中没有任何地方会向电报发送两次请求,即,
axios
只写入一次

我得到的日志说cronjob在
10:00:09 am
&在
10:01:08 am

我正在使用AWS Lambda的无服务器框架


如何确保它只运行一次?因为人们在电报组中收到了两条消息:(

在那个链接上读评论哦,我在发布之前读过。但是解决方案是什么?如果有的话?因为我们无法维持这种状态,所以我想如果有更有经验的人有答案的话。这就是我发布它的原因:)而且,你在回答中说,如果失败一次,然后它可能会再次呼叫。对我来说,它根本没有失败,因为它只有一个get请求&cron作业在一分钟内再次运行,因此没有失败的情况。您是否也检查了aws lambda控制台中的触发器。有一次,我发现它们是两个相同的触发器,在使用ServerLesI部署之后,我不知道如何在AWS Lambda控制台中进行检查,但我使用
sls logs-f cron-t
检查了来自Serverless的日志,它提供了所有日志。在无服务器仪表板中,我只有一个应用程序,这意味着它是唯一可以运行的应用程序。我的代码也只有一个请求,这意味着没有误报。感到悲哀的是,它无缘无故被执行了两次:(
service: lessons-of-hn-telegram-bot

provider:
  name: aws
  runtime: nodejs8.10
  environment:
    BOT_API_KEY: ${file(./env.json):BOT_API_KEY}
    CHANNEL_ID: ${file(./env.json):CHANNEL_ID}

functions:
  cron:
    handler: handler.run
    description: Cron job that runs every Sunday at 10 am UTC
    events:
      - schedule: cron(0 10 ? * SUN *)
const axios = require("axios");

const { lessonsOfHN } = require("./src/lessonsOfHN");

exports.run = async (event, context, callback) => {
  const time = new Date();
  console.log(`Your cron function "${context.functionName}" ran at ${time}`);

  const lesson = await lessonsOfHN();
  const ENDPOINT = `https://api.telegram.org/bot${
    process.env.BOT_API_KEY
  }/sendMessage`;

  await axios({
    method: "get",
    url: ENDPOINT,
    data: {
      chat_id: process.env.CHANNEL_ID,
      parse_mode: "markdown",
      disable_web_page_preview: true,
      text: lesson
    }
  });

  callback(null, { lesson, success: true });
};