繁体   English   中英

AWS ECS Fargate 任务时区

[英]AWS ECS Fargate task timezone

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

最好的问候,Maciej。

我希望默认情况下任务将采用 UTC,但这是我的猜测。 在 Fargate 世界中,我们不需要担心任务启动的时区,因为底层计算或主机的时区不会受到 docker 的尊重。 Docker 容器时区由主机配置独立工作。

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

RUN apt-get install -y tzdata

启动 ECS 任务时,将TZ环境变量传递给任务定义中的容器。

如果您使用计划表达式或 cron 语法通过CloudWatch Scheduled Events安排任务运行,它们将始终以 UTC 时间启动。

从文档:

您可以使用 cron 或 rate 表达式在 CloudWatch Events 中创建自动触发的规则。 所有计划的事件都使用 UTC 时区,计划的最小精度为 1 分钟。

例如,表达式cron(30 9 * * ? *)将在 9:30 UTC 启动您的 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"}' \
  ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM