Salta al contenuto

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:

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:

  1. 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:
    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))
    Nota: sostituisci ENDPOINT, USER e PASS con i valori del database.
  2. Per assemblare un'immagine, crea un Dockerfile che include i comandi necessari. Ad esempio:
    FROM pythonRUN pip install pymysql cryptography
    COPY rds.py /
    CMD [ "python", "/rds.py" ]
    Importante: inserisci lo script rds.py e il Dockerfile nella stessa cartella.
  3. Crea un repository Amazon ECR e invia l'immagine Docker a quel repository.
  4. Crea una definizione di attività e aggiungi l'immagine Docker come immagine del container. Ad esempio:
    {
      "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"
    }
    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?
  5. Apri la console Amazon ECS.
  6. Nel pannello di navigazione, seleziona Definizioni di attività.
  7. Seleziona la definizione di attività, scegli Azioni e quindi Esegui attività.
  8. In Tipo di avvio, seleziona FARGATE.
  9. In Cluster, seleziona il cluster per la definizione dell'attività.
  10. In Numero di attività, inserisci il numero di attività che desideri copiare.
  11. Nella sezione VPC e gruppi di sicurezza, in Cluster VPC seleziona Amazon Virtual Private Cloud (Amazon VPC).
  12. In Sottoreti, seleziona le sottoreti.
  13. In Gruppi di sicurezza, seleziona almeno un gruppo di sicurezza.
  14. 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:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, scegli Cluster, quindi scegli il tuo cluster.
  3. Seleziona la scheda Attività.
  4. In Stato dell’attività desiderato, seleziona Interrotto per visualizzare un elenco delle attività interrotte.
  5. Seleziona l'attività interrotta.
  6. Nella scheda Dettagli dell'attività interrotta, nella sezione Container seleziona l'icona di espansione.
  7. Seleziona Visualizza log in CloudWatch.

Nella console CloudWatch viene visualizzato il seguente messaggio:

"Connection successful to [Your Endpoint]"

AWS UFFICIALEAggiornata 2 anni fa