从Fargate容器中运行AWS Log Agent

时间:2019-08-08 18:08:57

标签: amazon-cloudwatch amazon-ecs aws-fargate

尝试在AWS ECS Fargate上运行的docker容器内运行AWS Logs Agent。

这在EC2下运行良好已有数年了。在Fargate上下文中,它似乎无法解析传递给它的任务角色。

对“任务角色”的权限应该不错。我什至尝试为其提供完整的CloudWatch权限以消除这种情况。

我设法破解了基于python的启动器脚本,添加了一个--debug标志,该标志在日志中给了我:

Caught retryable HTTP exception while making metadata service request to
 http://169.254.169.254/latest/meta-data/iam/security-credentials

似乎无法正确解析作为“任务角色”传递给任务的凭据

1 个答案:

答案 0 :(得分:0)

我设法找到了一种解决方法,这也许可以说明我认为是代理中的错误或功能不足的原因。我必须使用sed来破解启动器脚本,如下所示:

sed -i "s|HTTPS_PROXY|AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI HTTPS_PROXY|" 
/var/awslogs/bin/awslogs-agent-launcher.sh

这实际上是取消引用包含URI的ENV变量以检索任务角色,并将其传递给代理的启动器。

结果如下:

/usr/bin/env -i AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/f4ca7e30-b73f-4919-ae14-567b1262b27b (etc...)

安装此组件后,我将重新启动日志代理,它会按预期工作。

请注意,您可以执行类似的操作将--debug标志添加到启动器中,这对于试图弄清楚误入歧途非常有帮助。

相关问题