AWS ECS Fargate任务的时区

5

我在亚马逊文档中没有找到ECS Fargate任务启动使用的时区。 你有任何建议吗? 我想在任何地方都使用协调世界时。

最好的问候, Maciej。

2个回答

3

我希望任务默认使用 UTC 时区,但这只是我的猜测。在 Fargate 环境中,我们不需要担心任务启动的时区,因为基础计算或主机机器的时区将不会被 Docker 所采用。Docker 容器所采用的时区是独立于主机机器配置的。

要在容器中设置所需的时区,可以在 Dockerfile 中使用 tzdata 设置时区并创建新的镜像。

RUN apt-get install -y tzdata

在启动ECS任务时,需要在任务定义中向容器传递TZ环境变量。


2
如果您安排任务通过CloudWatch Scheduled Events以计划表达式或cron语法运行,它们始终以UTC时间启动。
引自文档:
您可以使用cron或速率表达式在CloudWatch事件中创建自触发的自动化调度规则。所有定时事件都使用UTC时区,最小精度为1分钟。
例如,表达式将在UTC时间9:30启动您的fargate任务。
速率表达式类似rate(1 minute)rate(1 hour) 使用以下命令在CloudWatch中创建规则:
SCHEDULE_EXPRESSION='cron(30 9 * * ? *)'
 aws events put-rule \
   --name events-rule-tasks-name\
   --schedule-expression "${SCHEDULE_EXPRESSION}" \
   --description "Run every day at 09:30 UTC" \
   --state "ENABLED" \
 ;

为此规则创建一个目标,即定义当时间与规则的速率/时间值匹配时,该规则应调用什么。将TaskDefinitionArn值设置为调用fargate任务,并指定启动类型(FARGATE)以及其他网络配置设置。
  aws events put-targets \
    --rule events-rule-tasks-${TASK_NAME} \
    --targets '{"Arn":"arn:aws:ecs:'${AWS_REGION}':'${AWS_ACCOUNT_ID}':cluster/'${CLUSTER_NAME}'","EcsParameters":{"LaunchType":"FARGATE","NetworkConfiguration":'${NETWORK_CONFIGURATION}',"TaskCount": 1,"TaskDefinitionArn": "arn:aws:ecs:'${AWS_REGION}':'${AWS_ACCOUNT_ID}':task-definition/ecs-task-'${TASK_NAME}'"},"Id": "ecs-targets-'${TASK_NAME}'","RoleArn": "arn:aws:iam::'${AWS_ACCOUNT_ID}':role/ecsEventsRole"}' \
  ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接