4

Das Szenario ist das folgende: Ich habe 3 EC2-Instanzen (A, B und C) alle laufen die ECS-optimierte AMI. Ich möchte eine CloudFormation Vorlage mit einer Aufgabendefinition schreiben, die die Aufgabe nur auf A ausführen lässt. Wie mache ich das?Wie starte ich einen Container auf einer vorhandenen EC2-Instanz mit CloudFormation?

Alle CloudFormation-Beispiele, die ich gesehen habe, erfordern die Erstellung einer neuen EC2-Instanz, was ich nicht möchte.

Antwort

1

Der einzige Weg, um eine Aufgabe zu einem Host-Pin ist es durch die AWS CLI zu tun mit Start-Aufgabe: http://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html

Wie für eine ECS Aufgabe durch Cloudformation, der einzige Weg läuft sowohl auf erstellen und starten Sie alles im Rahmen einer CFT-Vorlage ist ein Service zu erstellen. Hier ist eine nicht getestete CFT Vorlage:

{ 
 
    "AWSTemplateFormatVersion": "2010-09-09", 
 
    "Description": "Curator runner", 
 
    "Parameters": { 
 
     "CpuUnits": { 
 
      "Type": "Number", 
 
      "Default": 0, 
 
      "Description": "The number of CPU Units to allocate." 
 
     }, 
 
     "Memory": { 
 
      "Type": "Number", 
 
      "Default": 256, 
 
      "Description": "The amount of Memory (MB) to allocate." 
 
     }, 
 
     "ClusterName": { 
 
      "Type": "String", 
 
      "Description": "The cluster to run the ecs tasks on." 
 
     }, 
 
     "DockerImageUrl": { 
 
      "Type": "String", 
 
      "Description": "The URL for the docker image. Example: 354500939573.dkr.ecr.us-east-1.amazonaws.com/something:latest" 
 
     } 
 
    }, 
 
    "Resources": { 
 
     "SomeTask": { 
 
      "Type": "AWS::ECS::TaskDefinition", 
 
      "Properties": { 
 
       "ContainerDefinitions": [{ 
 
        "Memory": { 
 
         "Ref": "Memory" 
 
        }, 
 
        "Name": "something", 
 
        "Image": { 
 
         "Ref": "DockerImageUrl" 
 
        }, 
 
        "Cpu": { 
 
         "Ref": "CpuUnits" 
 
        } 
 
       }], 
 
       "Volumes": [] 
 
      } 
 
     }, 
 
     "service": { 
 
      "Type": "AWS::ECS::Service", 
 
      "Properties": { 
 
       "Cluster": { 
 
        "Ref": "ClusterName" 
 
       }, 
 
       "DesiredCount": "1", 
 
       "TaskDefinition": { 
 
        "Ref": "SomeTask" 
 
       } 
 
      } 
 
     } 
 
    } 
 
}