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:
- Você deve ter um cluster do Amazon ECS executado no Fargate
- Você deve ter um banco de dados do Amazon Relational Database Service (Amazon RDS). O Amazon ECS e o Amazon RDS podem ter problemas de comunicação. Para obter mais informações, consulte Como soluciono problemas de conectividade entre minhas tarefas do Amazon ECS para um tipo de execução do Amazon EC2 e um banco de dados do Amazon RDS?.
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:
- 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:
Observação: substitua ENDPOINT, USER e PASS pelos valores do seu banco de dados.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))
- Para montar uma imagem, crie um Dockerfile que inclua os comandos necessários. Por exemplo:
Importante: coloque o script rds.py e o Dockerfile na mesma pasta.FROM pythonRUN pip install pymysql cryptography COPY rds.py / CMD [ "python", "/rds.py" ]
- Crie um repositório do Amazon ECR e, em seguida, envie a imagem do Docker para esse repositório.
- Crie uma definição de tarefa e adicione a imagem do Docker como a imagem do contêiner. Por exemplo:
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?{ "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" }
- Abra o console do Amazon ECS.
- No painel de navegação, selecione Definições de tarefa.
- Selecione sua definição de tarefa, escolha Ações e, em seguida, escolha Executar tarefa.
- Em Tipo de execução, escolha FARGATE.
- Em Cluster, escolha o cluster para sua definição de tarefa.
- Em Número de tarefas, insira o número de tarefas que você deseja copiar.
- Na seção VPC e grupos de segurança, em VPC do cluster, escolha sua Amazon Virtual Private Cloud (Amazon VPC).
- Em ** Sub-redes**, escolha suas sub-redes.
- Em Grupos de segurança, selecione pelo menos um grupo de segurança.
- 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:
- Abra o console do Amazon ECS.
- No painel de navegação, escolha Clusters e, em seguida, escolha seu cluster.
- Escolha a guia Tarefas.
- Em Status da tarefa desejada, para ver uma lista das tarefas interrompidas escolha Interrompida.
- Escolha sua tarefa interrompida.
- Na guia Detalhes da tarefa interrompida, na seção Contêineres, expanda a seção.
- Escolha Exibir logs no CloudWatch.
Você vê a seguinte mensagem no console do CloudWatch:
“Conexão bem-sucedida com [Your Endpoint]”
AWS OFICIALAtualizada há 5 meses
Conteúdo relevante
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há 4 anos
- AWS OFICIALAtualizada há um ano