如何将参数传递到 AWS Fargate 上的计划任务?

如何将参数传递到 AWS Fargate 上的计划任务?

我有一个 docker 容器(源自 PHP-CLI),可以在本地像这样启动:

  • docker run php-cli-container php public/index.php argument1 argument2

我将容器上传到 Amazon AWS ECR 并将其实施到 ECS 计划任务中。一切都已正确设置,并且该任务现在实际上每小时都在 AWS 上运行。

输入存储在 EventBridge 中如下:

{
  "containerOverrides": [{
    "name": "php-api-cli",
    "command": ["php public/index.php argument1 argument2"]
  }]
}

不幸的是,这似乎不起作用。CloudWatch 报告以下错误:

  • /usr/local/bin/docker-php-entrypoint: 9: exec: php public/index.php argument1 argument2: not found

如何将参数正确地传递php public/index.php argument1 argument2到 AWS Fargate 任务中?

答案1

为了实现 OP 的要求,我们必须这样写:

{
  "containerOverrides": [{
    "name": "php-api-cli",
    "command": ["php", "public/index.php", "argument1", "argument2"]
  }]
}

解释:

在 OP 的情况下,AWS 传递docker run php-cli-container "php public/index.php argument1 argument2"给容器。

为了避免该问题,我们必须将所有参数分成单独的字符串值并放入command数组中。

相关内容