Como me conecto a um banco de dados a partir de uma tarefa do Amazon ECS no Fargate?

4 minuto de leitura
0

Quero me conectar a um banco de dados a partir de uma tarefa do Amazon Elastic Container Service (Amazon ECS) no AWS Fargate.

Resolução

Pré-requisitos:

Observação: o exemplo a seguir usa o MySQL como o tipo de mecanismo. Para obter mais informações sobre os tipos de mecanismos, consulte Introdução ao Amazon RDS.

Conectar sua tarefa ao seu banco de dados

Conclua as seguintes etapas:

  1. Crie um script Python que se conecte ao seu banco de dados MySQL. O exemplo de script rds.py a seguir envia o resultado da conexão com o banco de dados com o 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))
    Observação: substitua ENDPOINT, USER e PASS pelos valores do seu banco de dados.
  2. Para montar uma imagem, crie um Dockerfile que inclua os comandos necessários. Por exemplo:
    FROM pythonRUN pip install pymysql cryptography
    COPY rds.py /
    CMD [ "python", "/rds.py" ]
    Importante: coloque o script rds.py e o Dockerfile na mesma pasta.
  3. Crie um repositório do Amazon ECR e, em seguida, envie a imagem do Docker para esse repositório.
  4. Crie uma definição de tarefa e adicione a imagem do Docker como a imagem do contêiner. Por exemplo:
    {
      "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"
    }
    Observação: na definição da tarefa, defina os valores das variáveis de ambiente ENDPOINT, USER e PASS. Você pode passar esses valores diretamente como variáveis de ambiente ou recuperá-los de segredos no AWS Secrets Manager. Para obter mais informações, consulte Como posso passar segredos ou informações confidenciais com segurança para contêineres em uma tarefa do Amazon ECS?
  5. Abra o console do Amazon ECS.
  6. No painel de navegação, selecione Definições de tarefa.
  7. Selecione sua definição de tarefa, escolha Ações e, em seguida, escolha Executar tarefa.
  8. Em Tipo de execução, escolha FARGATE.
  9. Em Cluster, escolha o cluster para sua definição de tarefa.
  10. Em Número de tarefas, insira o número de tarefas que você deseja copiar.
  11. Na seção VPC e grupos de segurança, em VPC do cluster, escolha sua Amazon Virtual Private Cloud (Amazon VPC).
  12. Em ** Sub-redes**, escolha suas sub-redes.
  13. Em Grupos de segurança, selecione pelo menos um grupo de segurança.
  14. Escolha Executar tarefa.

O script rds.py interrompe a tarefa e retorna a seguinte mensagem:

“O contêiner essencial na tarefa foi encerrado.”

Confirme se sua tarefa está conectada ao seu banco de dados

Conclua as seguintes etapas:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters e, em seguida, escolha seu cluster.
  3. Escolha a guia Tarefas.
  4. Em Status da tarefa desejada, para ver uma lista das tarefas interrompidas escolha Interrompida.
  5. Escolha sua tarefa interrompida.
  6. Na guia Detalhes da tarefa interrompida, na seção Contêineres, expanda a seção.
  7. Escolha Exibir logs no CloudWatch.

Você vê a seguinte mensagem no console do CloudWatch:

“Conexão bem-sucedida com [Your Endpoint]”

AWS OFICIAL
AWS OFICIALAtualizada há 5 meses