![如何将参数传递到 AWS Fargate 上的计划任务?](https://linux22.com/image/783793/%E5%A6%82%E4%BD%95%E5%B0%86%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E5%88%B0%20AWS%20Fargate%20%E4%B8%8A%E7%9A%84%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1%EF%BC%9F.png)
我有一个 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
数组中。