Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 更新Fargate TaskDefinition后,触发任务的CloudWatch事件由于非活动任务定义而失败_Amazon Web Services_Amazon Ecs - Fatal编程技术网

Amazon web services 更新Fargate TaskDefinition后,触发任务的CloudWatch事件由于非活动任务定义而失败

Amazon web services 更新Fargate TaskDefinition后,触发任务的CloudWatch事件由于非活动任务定义而失败,amazon-web-services,amazon-ecs,Amazon Web Services,Amazon Ecs,我在ECS中定义了一系列任务,这些任务按照定期计划运行。我最近在Terraform中更新了任务定义,将容器的默认环境变量从调试更改为生产: 我使用Fargate的Scheduled Tasks功能运行此任务,将其设置为每4小时一次。然而,在更新了任务定义之后,我开始发现这些任务不是由CloudWatch触发的,因为我的上一个容器日志是几天前的 我使用CloudTrail深入研究了这个问题,并注意到RunTask事件条目的一个特定部分: 在日志的后面,我注意到ECS试图运行的任务定义是 "tas

我在ECS中定义了一系列任务,这些任务按照定期计划运行。我最近在Terraform中更新了任务定义,将容器的默认环境变量从调试更改为生产:

我使用Fargate的Scheduled Tasks功能运行此任务,将其设置为每4小时一次。然而,在更新了任务定义之后,我开始发现这些任务不是由CloudWatch触发的,因为我的上一个容器日志是几天前的

我使用CloudTrail深入研究了这个问题,并注意到RunTask事件条目的一个特定部分:

在日志的后面,我注意到ECS试图运行的任务定义是

 "taskDefinition": "arn:aws:ecs:us-east-1:XXXXX:task-
definition/important-task-name:2",
但是,在我的ECS任务定义中,重要任务名称的最新版本是3。因此,事件似乎没有触发,因为我正在使用任务定义的非活动版本


我是否可以在AWS Fargate中安排任务,而不必手动通过控制台停止/重新启动/更新每个集群的计划更新?难道没有办法简单地要求CloudWatch获取最新的活动任务定义吗?

云地图似乎是解决这些问题的一种方法


您可以使用CloudWatch事件规则来控制计划任务,并且无论何时更新任务定义,都可以更新规则。假设您有两个文件:

myRule.json

{
  "Name": "run-every-minute",
  "ScheduleExpression": "cron(0/1 * * * ? *)",
  "State": "ENABLED",
  "Description": "a task that will run every minute",
  "RoleArn": "arn:aws:iam::${IAM_NUMBER}:role/ecsEventsRole",
  "EventBusName": "default"
}
myTargets.json

{
  "Rule": "run-every-minute",
  "Targets": [
      {
          "Id": "scheduled-task-example",
          "Arn": "arn:aws:ecs:${REGION}:${IAM_NUMBER}:cluster/mycluster",
          "RoleArn": "arn:aws:iam::${IAM_NUMBER}:role/ecsEventsRole",
          "Input": "{\"containerOverrides\":[{\"name\":\"myTask\",\"environment\":[{\"name\":\"ENVIRONMENT\",\"value\":\"production\"},{\"name\":\"foo\",\"value\":\"bar\"}]}]}",
          "EcsParameters": {
            "TaskDefinitionArn": "arn:aws:ecs:${REGION}:${IAM_NUMBER}:task-definition/myTaskDefinition",
            "TaskCount": 1,
            "LaunchType": "FARGATE",
            "NetworkConfiguration": {
                "awsvpcConfiguration": {
                    "Subnets": [
                        "subnet-xyz1",
                        "subnet-xyz2",
                    ],
                    "SecurityGroups": [
                        "sg-xyz"
                    ],
                    "AssignPublicIp": "ENABLED"
                }
            },
            "PlatformVersion": "LATEST"
          }
      }
  ]
}
现在,每当myTaskDefinition有新版本时,您都可以更新您的规则,例如:

aws事件放置规则-cli输入jsonfile://myRule.json -地区$地区 aws事件放置目标-cli输入jsonfile://myTargets.json -地区$地区 回音“完成”
但当然,用您的凭证替换IAM_编号和地区,

虽然这可以从理论上回答问题,但在此处包含答案的基本部分,并提供链接供参考。您找到解决方案了吗?@MatheusIanzer no我没有
{
  "Name": "run-every-minute",
  "ScheduleExpression": "cron(0/1 * * * ? *)",
  "State": "ENABLED",
  "Description": "a task that will run every minute",
  "RoleArn": "arn:aws:iam::${IAM_NUMBER}:role/ecsEventsRole",
  "EventBusName": "default"
}
{
  "Rule": "run-every-minute",
  "Targets": [
      {
          "Id": "scheduled-task-example",
          "Arn": "arn:aws:ecs:${REGION}:${IAM_NUMBER}:cluster/mycluster",
          "RoleArn": "arn:aws:iam::${IAM_NUMBER}:role/ecsEventsRole",
          "Input": "{\"containerOverrides\":[{\"name\":\"myTask\",\"environment\":[{\"name\":\"ENVIRONMENT\",\"value\":\"production\"},{\"name\":\"foo\",\"value\":\"bar\"}]}]}",
          "EcsParameters": {
            "TaskDefinitionArn": "arn:aws:ecs:${REGION}:${IAM_NUMBER}:task-definition/myTaskDefinition",
            "TaskCount": 1,
            "LaunchType": "FARGATE",
            "NetworkConfiguration": {
                "awsvpcConfiguration": {
                    "Subnets": [
                        "subnet-xyz1",
                        "subnet-xyz2",
                    ],
                    "SecurityGroups": [
                        "sg-xyz"
                    ],
                    "AssignPublicIp": "ENABLED"
                }
            },
            "PlatformVersion": "LATEST"
          }
      }
  ]
}