在 aws 中使用 aws ecs execute-command 不是本地的 cron 类用法

Using aws ecs execute-command in aws not local for cron like usage

我有 Fargate 容器。

现在我可以访问容器并执行诸如 , 之类的命令(在这种情况下我做了 ls -la 进行测试)

aws ecs execute-command --cluster tvn-prod-cn --container TravelDjangoContainer --interactive --command 'ls -la' --task 0e63831d80654bbb88cbcc4d002b3d4f

所以,我想做的是将此命令设置为类似 cron 的命令。

下面是我的想法

可能吗??

如何在 RunCommand 中设置此命令?


我用 serverless

制作了 lambda

我用谷歌搜索并制作了这个脚本,但它不正确,,,任何人都可以提供帮助或示例吗??

'use strict';
const AWS = require('aws-sdk')
const SSM = new AWS.SSM({region: 'ap-northeast-1'})
const REMOTE_WORKING_DIR = '/home/ec2-user'

module.exports.hello = async (event) => {
  try {
    let command = 'ls -la'

    let params = {
      DocumentName: 'AWS-RunExecScript',
      Parameters: {
        commands: [command],
        workingDirectory: [REMOTE_WORKING_DIR]
      },
      CloudWatchOutputConfig: {
        CloudWatchLogGroupName: 'SSMLogs',
        CloudWatchOutputEnabled: true
      },
      TimeoutSeconds: 3600 // 1 hour
    }

    SSM.sendCommand(params, function(err, data){
      if(err){
        console.log(err, err.stack)
      } else {
        console.log(data)
      }
    });
  } catch(e){
    console.log(e);
  };

  return {
    statusCode: 200,
    body: JSON.stringify(
      {
        message: 'Go Serverless v1.0! Your function executed successfully!',
        input: event,
      },
      null,
      2
    ),
  };

};

我不使用 SSM RunCommand,它并不是真正设计用于 运行 ECS 中的任务,而是创建一个调用 ECS execute_command() and schedule that using the EventBridge cron schedule.

的 Lambda 函数

如果你想使用 SSM RunCommand,你需要一个 EC2 服务器,它可以 运行 aws ecs execute-command CLI 命令,这肯定不是你想要的。