簡體   English   中英

Terraform 從另一個項目導入 ECS 任務定義

[英]Terraform import ECS task definition from another project

我有多個項目,每個項目都有自己的 Terraform 來管理特定於該項目的 AWS 基礎設施。 共享的基礎設施(例如 VPC):我導入到需要它的項目中。

我想使用步進函數將來自不同服務的許多不同任務粘合在一起,但其中一些是 Fargate ECS 任務。 這意味着我需要在步驟 function 中指定任務定義 ARN。

我可以導入任務定義,但如果我稍后更新管理該任務定義的項目,則修訂將更改,而步驟 function 將繼續指向舊的任務定義修訂。

在這一點上,我不妨將任務 ARN 硬編碼到步驟 function 中,並且只需要記住以后更新它。

有人知道解決這個問題的方法嗎?

您可以使用aws_ecs_task_definition數據源來查找任務定義系列的最新版本:

data "aws_ecs_task_definition" "example" {
  task_definition = "example" 
}

output "example" {
  value = data.aws_ecs_task_definition.example
}

應用它會得到以下 output(假設您的 AWS 賬戶中有example服務):

example = {
  "family" = "example"
  "id" = "arn:aws:ecs:eu-west-1:1234567890:task-definition/example:333"
  "network_mode" = "bridge"
  "revision" = 333
  "status" = "ACTIVE"
  "task_definition" = "example"
  "task_role_arn" = "arn:aws:iam::1234567890:role/example"
}

所以你可以做這樣的事情:

data "aws_ecs_task_definition" "example" {
  task_definition = "example" 
}

data "aws_ecs_cluster" "example" {
  cluster_name = "example"
}

resource "aws_sfn_state_machine" "sfn_state_machine" {
  name     = "my-state-machine"
  role_arn = aws_iam_role.iam_for_sfn.arn

  definition = <<EOF
{  
   "StartAt": "Manage ECS task",
   "States": {  
      "Manage ECS task": {  
         "Type": "Task",
         "Resource": "arn:aws:states:::ecs:runTask.waitForTaskToken",
         "Parameters": {  
            "LaunchType": "FARGATE",
            "Cluster": ${data.aws_ecs_cluster.example.arn},
            "TaskDefinition": ${data.aws_ecs_task_definition.example.id},
            "Overrides": {  
               "ContainerOverrides": [  
                  {  
                     "Name": "example",
                     "Environment": [  
                        {  
                           "Name": "TASK_TOKEN_ENV_VARIABLE",
                           "Value.$": "$$.Task.Token"
                        }
                     ]
                  }
               ]
            }
         },
         "End": true
      }
   }
}
EOF
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM