Come faccio a collegarmi a un database da un'attività Amazon ECS su Fargate?
3 minuti di lettura
0
Voglio collegarmi a un database da un'attività Amazon Elastic Container Service (Amazon ECS) su AWS Fargate.
Risoluzione
Prerequisiti:
- È necessario disporre di un cluster Amazon ECS eseguito su Fargate
- È necessario avere le connessioni al database Amazon Relational Database Service (Amazon RDS). Amazon ECS e Amazon RDS potrebbero avere problemi di comunicazione. Per ulteriori informazioni, vedi Come posso risolvere i problemi di connettività tra le attività Amazon ECS per un tipo di avvio di Amazon EC2 e un database Amazon RDS?.
Nota: l'esempio seguente utilizza MySQL come tipo di motore. Per ulteriori informazioni sui tipi di motore, consulta Getting started with Amazon RDS.
Collegamento dell’attività al database
Completa i seguenti passaggi:
- Crea uno script Python che si collega al database MySQL. Il seguente esempio di script rds.py invia come risultato la connessione al database su Amazon CloudWatch:
Nota: sostituisci ENDPOINT, USER e PASS con i valori del database.import pymysqlimport os Database_endpoint = os.environ['ENDPOINT'] Username = os.environ['USER'] Password = os.environ['PASS'] try: print("Connecting to " + Database_endpoint) db = pymysql.connect(host = Database_endpoint, user = Username, password = Password) print("Connection successful to " + Database_endpoint) db.close() except Exception as e: print("Connection unsuccessful due to " + str(e)) - Per assemblare un'immagine, crea un Dockerfile che include i comandi necessari. Ad esempio:
Importante: inserisci lo script rds.py e il Dockerfile nella stessa cartella.FROM pythonRUN pip install pymysql cryptography COPY rds.py / CMD [ "python", "/rds.py" ] - Crea un repository Amazon ECR e invia l'immagine Docker a quel repository.
- Crea una definizione di attività e aggiungi l'immagine Docker come immagine del container. Ad esempio:
Nota: nella definizione di attività, imposta i valori per le variabili di ambiente ENDPOINT, USER e PASS. Puoi passare questi valori direttamente come variabili di ambiente o recuperare i valori dai segreti in AWS Secrets Manager. Per ulteriori informazioni, consulta Come posso trasmettere informazioni segrete o sensibili in modo sicuro ai container in un'attività Amazon ECS?{ "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-app", "image": "YOUR-ECR-Repository-URL", "essential": true } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "sample-app" } - Apri la console Amazon ECS.
- Nel pannello di navigazione, seleziona Definizioni di attività.
- Seleziona la definizione di attività, scegli Azioni e quindi Esegui attività.
- In Tipo di avvio, seleziona FARGATE.
- In Cluster, seleziona il cluster per la definizione dell'attività.
- In Numero di attività, inserisci il numero di attività che desideri copiare.
- Nella sezione VPC e gruppi di sicurezza, in Cluster VPC seleziona Amazon Virtual Private Cloud (Amazon VPC).
- In Sottoreti, seleziona le sottoreti.
- In Gruppi di sicurezza, seleziona almeno un gruppo di sicurezza.
- Seleziona Esegui attività.
Lo script rds.py interrompe l'attività e restituisce il seguente messaggio:
"Essential container in task exited."
Confermare che l'attività sia collegata al database
Completa i seguenti passaggi:
- Apri la console Amazon ECS.
- Nel pannello di navigazione, scegli Cluster, quindi scegli il tuo cluster.
- Seleziona la scheda Attività.
- In Stato dell’attività desiderato, seleziona Interrotto per visualizzare un elenco delle attività interrotte.
- Seleziona l'attività interrotta.
- Nella scheda Dettagli dell'attività interrotta, nella sezione Container seleziona l'icona di espansione.
- Seleziona Visualizza log in CloudWatch.
Nella console CloudWatch viene visualizzato il seguente messaggio:
"Connection successful to [Your Endpoint]"
- Argomenti
- Containers
- Lingua
- Italiano

AWS UFFICIALEAggiornata 2 anni fa