如何在 docker 镜像中设置 aws cloudwatch 日志代理的不同目标(“区域”)?

如何在 docker 镜像中设置 aws cloudwatch 日志代理的不同目标(“区域”)?

这是我的dockerfile。

FROM 796678920264.dkr.ecr.us-west-1.amazonaws.com/myproject/base:latest

COPY /* /


RUN python awslogs-agent-setup.py --non-interactive -c /aws-log.myservice.cfg --region us-west-2


CMD ["/start.sh"]

我使用 dockerfile 来构建将在开发和生产环境中使用的镜像。行为由环境变量决定。即我将执行类似以下操作来启动 docker 容器:docker run -e ENV=dev -ti myservice

这个dockerfile的一个问题是:dev和prod中的日志都被发送到区域中的同一个cloudwatch日志us-west-2

当启动docker容器时,我可以做些什么来将开发环境的区域更改为不同的值?最好由相同的环境变量控制。

答案1

我在主 CMD 脚本中添加并调用以下脚本

if [ "$ENV"  != "prod" ]; then
    AWSLOG_CONF=/var/awslogs/etc/aws.conf
    sed -i -e 's/region = us-west-2/region = ap-southeast-1/g' $AWSLOG_CONF
    echo 'Set the awslog region to ap-southeast-1'
fi

必须在启动 aws 日志服务之前调用该脚本。

相关内容