Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di un servizio Amazon ECS che utilizza il rilevamento servizi.
Maggiori informazioni su come creare un servizio contenente un'attività Fargate che usa il rilevamento servizi con la AWS CLI.
Per un elenco delle scoperte di Regioni AWS tali servizi di supporto, consulta. Usare il rilevamento servizi per connettere i servizi Amazon ECS con nomi DNS
Per informazioni sulle regioni che supportano Fargate, consulta Regioni supportate per Amazon ECS su AWS Fargate.
Nota
Puoi utilizzare gli endpoint del servizio dual-stack per interagire con Amazon ECS da AWS CLI, SDKs e l'API Amazon ECS su entrambi e. IPv4 IPv6 Per ulteriori informazioni, consulta Utilizzo degli endpoint dual-stack Amazon ECS.
Prerequisiti
Prima di iniziare questo tutorial, verifica che siano soddisfatti i seguenti requisiti preliminari:
-
La versione più recente di è installata e configurata. AWS CLI Per ulteriori informazioni, consultare Installing or updating to the latest version of the AWS CLI.
-
Le fasi descritte in Configurazione per l'uso di Amazon ECS sono complete.
-
L'utente IAM dispone delle autorizzazioni necessarie specificate nell'esempio di policy IAM Amazon ECS_ FullAccess.
-
Hai creato almeno un VPC e un gruppo di sicurezza. Per ulteriori informazioni, consulta Crea un cloud privato virtuale.
Passaggio 1: creare le risorse di Service Discovery in AWS Cloud Map
Utilizza la procedura seguente per creare il namespace di individuazione dei servizi e il servizio di individuazione dei servizi.
-
Crea un namespace privato di individuazione dei servizi Cloud Map. In questo esempio viene creato un namespace denominato
tutorial. Sostituiscivpc-abcd1234con l'ID di uno dei tuoi esistenti VPCs.aws servicediscovery create-private-dns-namespace \ --nametutorial\ --vpcvpc-abcd1234L'output di questo comando è il seguente:
{ "OperationId": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e" } -
Usando
OperationIddall'output della fase precedente, verificare che il namespace privato sia stato creato correttamente. Annotare l'ID del namespace perché verrà utilizzato nei comandi successivi.aws servicediscovery get-operation \ --operation-idh2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2eL'output è il seguente.
{ "Operation": { "Id": "
h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e", "Type": "CREATE_NAMESPACE", "Status": "SUCCESS", "CreateDate": 1519777852.502, "UpdateDate": 1519777856.086, "Targets": { "NAMESPACE": "ns-uejictsjen2i4eeg" } } } -
Usando l'ID
NAMESPACEdall'output nella fase precedente, crea un servizio di individuazione dei servizi. Questo esempio crea un servizio denominatomyapplication. Prendi nota dell'ID del servizio e dell'ARN perché li utilizzerai nei comandi successivi.aws servicediscovery create-service \ --namemyapplication\ --dns-config "NamespaceId="ns-uejictsjen2i4eeg",DnsRecords=[{Type="A",TTL="300"}]" \ --health-check-custom-config FailureThreshold=1L'output è il seguente.
{ "Service": { "Id": "
srv-utcrh6wavdkggqtk", "Arn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk", "Name": "myapplication", "DnsConfig": { "NamespaceId": "ns-uejictsjen2i4eeg", "DnsRecords": [ { "Type": "A", "TTL":300} ] }, "HealthCheckCustomConfig": { "FailureThreshold":1}, "CreatorRequestId": "e49a8797-b735-481b-a657-b74d1d6734eb" } }
Fase 2: Creazione delle risorse Amazon ECS
Utilizza la procedura seguente per creare il cluster Amazon ECS, la definizione di attività e il servizio.
-
Crea un cluster Amazon ECS. In questo esempio viene creato un cluster denominato
tutorial.aws ecs create-cluster \ --cluster-nametutorial -
Registra una definizione di attività che sia compatibile con Fargate e utilizzi la modalità di rete
awsvpc. Completare la procedura riportata di seguito.-
Crea un file denominato
fargate-task.jsoncon il contenuto della seguente definizione di attività.{ "family": "tutorial-task-def", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "sample-app", "image": "public.ecr.aws/docker/library/httpd:2.4", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ], "essential": true, "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512" } -
Registrazione della definizione dell'attività tramite
fargate-task.json.aws ecs register-task-definition \ --cli-input-json file://fargate-task.json
-
-
Crea un servizio ECS completando la seguente procedura:
-
Creazione di un file denominato
ecs-service-discovery.jsoncon il contenuto del servizio ECS che stai per creare. Questo esempio usa la definizione di attività creata nella fase precedente. È obbligatorio l'uso di un parametroawsvpcConfigurationperché la definizione di attività di esempio usa la modalità di reteawsvpc.Quando si crea il servizio ECS, specificare Fargate e la versione della piattaforma
LATESTche supporta il rilevamento servizi. Quando viene creato il servizio di individuazione dei servizi in AWS Cloud Map , l'ARN restituito èregistryArn.securityGroupsesubnetsdevono appartenere al VPC utilizzato per creare il namespace Cloud Map. Puoi ottenere il gruppo di sicurezza e la sottorete IDs dalla console Amazon VPC.{ "cluster": "tutorial", "serviceName": "ecs-service-discovery", "taskDefinition": "tutorial-task-def", "serviceRegistries": [ { "registryArn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk" } ], "launchType": "FARGATE", "platformVersion": "LATEST", "networkConfiguration": { "awsvpcConfiguration": { "assignPublicIp": "ENABLED", "securityGroups": [ "sg-abcd1234" ], "subnets": [ "subnet-abcd1234" ] } }, "desiredCount":1} -
Crea il tuo servizio ECS utilizzando
ecs-service-discovery.json.aws ecs create-service \ --cli-input-json file://ecs-service-discovery.json
-
Fase 3: Verifica Service Discovery in AWS Cloud Map
Puoi verificare che sia stato creato tutto correttamente eseguendo una query sulle informazioni di individuazione dei servizi. Dopo aver configurato l'individuazione del servizio, puoi utilizzare le operazioni AWS Cloud Map API o effettuare una chiamata dig da un'istanza all'interno del tuo VPC. Completare la procedura riportata di seguito.
-
Usando l'ID servizio di individuazione dei servizi, elenca le istanze di individuazione dei servizi. Prendi nota dell'ID istanza (contrassegnato in grassetto) per la pulizia delle risorse.
aws servicediscovery list-instances \ --service-idsrv-utcrh6wavdkggqtkL'output è il seguente.
{ "Instances": [ { "Id": "16becc26-8558-4af1-9fbd-f81be062a266", "Attributes": { "AWS_INSTANCE_IPV4": "172.31.87.2" "AWS_INSTANCE_PORT": "80", "AVAILABILITY_ZONE": "us-east-1a", "REGION": "us-east-1", "ECS_SERVICE_NAME": "ecs-service-discovery", "ECS_CLUSTER_NAME": "tutorial", "ECS_TASK_DEFINITION_FAMILY": "tutorial-task-def" } } ] }
-
Utilizza il namespace, il servizio di individuazione dei servizi e parametri aggiuntivi quali il nome del cluster ECS per ottenere i dettagli sulle istanze di individuazione dei servizi.
aws servicediscovery discover-instances \ --namespace-name tutorial \ --service-name myapplication \ --query-parameters ECS_CLUSTER_NAME=tutorial -
Puoi eseguire query sui record DNS creati nella zona ospitata di Route 53 per il servizio di individuazione dei servizi con i seguenti comandi AWS CLI :
-
Con l'ID del namespace, ottenere le informazioni sul namespace che includono l'ID della zona ospitata di Route 53.
aws servicediscovery \ get-namespace --idns-uejictsjen2i4eegL'output è il seguente.
{ "Namespace": { "Id": "
ns-uejictsjen2i4eeg", "Arn": "arn:aws:servicediscovery:region:aws_account_id:namespace/ns-uejictsjen2i4eeg", "Name": "tutorial", "Type": "DNS_PRIVATE", "Properties": { "DnsProperties": { "HostedZoneId": "Z35JQ4ZFDRYPLV" } }, "CreateDate": 1519777852.502, "CreatorRequestId": "9049a1d5-25e4-4115-8625-96dbda9a6093" } } -
Utilizzando l'ID della zona ospitata di Route 53 dalla fase precedente (visualizza il testo in grassetto), ottieni il set di record delle risorse per la zona ospitata.
aws route53 list-resource-record-sets \ --hosted-zone-idZ35JQ4ZFDRYPLV
-
-
Puoi eseguire query sul DNS anche da un'istanza all'interno tramite
dig.dig +short myapplication.tutorial
Fase 4: pulizia
Una volta terminato questo tutorial, elimina le risorse associate in modo da evitare costi aggiuntivi per le risorse non utilizzate. Completare la procedura riportata di seguito.
-
Annulla la registrazione delle istanze del servizio di individuazione dei servizi utilizzando l'ID servizio e l'ID istanza annotati in precedenza.
aws servicediscovery deregister-instance \ --service-idsrv-utcrh6wavdkggqtk\ --instance-id16becc26-8558-4af1-9fbd-f81be062a266L'output è il seguente.
{ "OperationId": "
xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv" } -
Utilizzando l'
OperationIddall'output della fase precedente, verifica che la registrazione delle istanze del servizio di individuazione dei servizi sia stata annullata correttamente.aws servicediscovery get-operation \ --operation-idxhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv{ "Operation": { "Id": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv", "Type": "DEREGISTER_INSTANCE", "Status": "SUCCESS", "CreateDate": 1525984073.707, "UpdateDate": 1525984076.426, "Targets": { "INSTANCE": "16becc26-8558-4af1-9fbd-f81be062a266", "ROUTE_53_CHANGE_ID": "C5NSRG1J4I1FH", "SERVICE": "srv-utcrh6wavdkggqtk" } } }
-
Eliminazione del servizio di individuazione dei servizi utilizzando l'ID servizio.
aws servicediscovery delete-service \ --idsrv-utcrh6wavdkggqtk -
Eliminazione del namespace di rilevamento servizi utilizzando l'ID del namespace.
aws servicediscovery delete-namespace \ --idns-uejictsjen2i4eegL'output è il seguente.
{ "OperationId": "
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj" } -
Usando l'
OperationIddall'output della fase precedente, verificare che il namespace di rilevamento servizi sia stato eliminato correttamente.aws servicediscovery get-operation \ --operation-idc3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysjL'output è il seguente.
{ "Operation": { "Id": "
c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj", "Type": "DELETE_NAMESPACE", "Status": "SUCCESS", "CreateDate": 1525984602.211, "UpdateDate": 1525984602.558, "Targets": { "NAMESPACE": "ns-rymlehshst7hhukh", "ROUTE_53_CHANGE_ID": "CJP2A2M86XW3O" } } } -
Aggiorna il conteggio desiderato per il servizio Amazon ECS a
0. Questa operazione deve essere eseguita per eliminare il servizio nella fase successiva.aws ecs update-service \ --cluster tutorial \ --service ecs-service-discovery \ --desired-count 0 -
Elimina il servizio Amazon ECS.
aws ecs delete-service \ --cluster tutorial \ --service ecs-service-discovery -
Elimina il cluster Amazon ECS.
aws ecs delete-cluster \ --cluster tutorial