Fargate의 Amazon ECS 작업에서 데이터베이스에 연결하려면 어떻게 해야 하나요?

3분 분량
0

AWS Fargate의 Amazon Elastic Container Service(Amazon ECS) 작업에서 데이터베이스에 연결하고 싶습니다.

해결 방법

다음 단계를 완료하기 전에, Fargate와 Amazon Relational Database Service(RDS) 데이터베이스에서 Amazon ECS 클러스터를 실행하고 있는지 확인하세요. Amazon ECS와 Amazon RDS에는 통신 문제가 있을 수 있습니다. 자세한 내용은 Amazon EC2 시작 유형에 대한 Amazon ECS 작업과 Amazon RDS 데이터베이스 간의 연결 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.

참고: 다음 해결 방법은 MySQL을 엔진 유형으로 사용합니다.

태스크를 데이터베이스에 연결

1.    MySQL 데이터베이스에 연결하는 Python 스크립트를 생성합니다.

다음 예제 rds.py 스크립트는 Amazon CloudWatch에 대한 데이터베이스 연결 결과를 출력합니다.

import pymysql
import 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))

**참고:**엔드포인트, 사용자, 패스를 데이터베이스 값으로 바꿉니다.

2.    이미지를 어셈블하는 데 필요한 명령이 포함된 Dockerfile을 생성합니다. 예를 들면, 다음과 같습니다.

FROM python
RUN pip install pymysql cryptography
COPY rds.py /
CMD [ "python", "/rds.py" ]

중요: 반드시 rds.py 스크립트와 도커파일을 동일한 폴더에 저장하세요.

3.    Amazon ECR 리포지토리를 만든 다음, 도커 이미지를 해당 리포지토리로 푸시합니다.

4.    작업 정의를 생성한 다음, 2단계의 도커 이미지를 컨테이너 이미지로 추가합니다. 예를 들면, 다음과 같습니다.

{
  "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"
}

참고: 작업 정의에서 엔드포인트, 사용자패스 환경 변수의 값을 설정합니다. 이러한 값을 환경 변수로 직접 전달하거나 AWS Secrets Manager의 보안 정보에서 검색할 수 있습니다. 자세한 내용은 Amazon ECS 작업에서 비밀 또는 민감한 정보를 컨테이너에 안전하게 전달하려면 어떻게 해야 하나요?를 참조하세요.

5.    Amazon ECS 콘솔을 열고 탐색 창에서 작업 정의를 선택합니다.

6.    작업 정의를 선택하고, 작업을 선택한 다음, 작업 실행을 선택합니다.

7.    시작 유형에서 FARGATE를 선택합니다.

8.    클러스터의 경우 작업 정의에 사용할 클러스터를 선택합니다.

9.    작업 수에 복사하려는 작업 수를 입력합니다.

10.    VPC 및 보안 그룹 섹션에서, 클러스터 VPC의 경우 Amazon Virtual Private Cloud(VPC)를 선택합니다.

11.    서브넷의 경우, 서브넷을 선택합니다.

12.    보안 그룹의 경우, 보안 그룹을 하나 이상 선택합니다.

13.    작업 실행을 선택합니다.

rds.py 스크립트는 작업을 중지하고 다음 메시지를 반환합니다.

Essential container in task exited.

작업이 데이터베이스에 연결되어 있는지 확인

  1. Amazon ECS 콘솔을 엽니다.

2.    탐색 메뉴에서 클러스터를 선택한 다음, 클러스터를 선택합니다.

3.    태스크 탭을 선택합니다.

4.    원하는 작업 상태에서 중지됨을 선택하여 중지된 작업 목록을 확인합니다.

5.    중지된 작업을 선택합니다.

6.    중지된 작업의 세부 정보 탭의 컨테이너 섹션에서 확장 아이콘을 선택합니다.

7.    CloudWatch에서 로그 보기를 선택합니다.

Amazon CloudWatch 콘솔에 다음 메시지가 표시되어야 합니다.

Connection successful to [Your Endpoint]
AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠