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

3분 분량
0

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

해결 방법

사전 요구 사항:

**참고:**다음 예에서는 MySQL을 엔진 유형으로 사용합니다. 엔진 유형에 대한 자세한 내용은 Amazon RDS 시작하기를 참조하세요.

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

다음 단계를 완료합니다.

  1. MySQL 데이터베이스에 연결하는 Python 스크립트를 생성합니다. 다음 예제 rds.py 스크립트는 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))
    **참고:**엔드포인트, 사용자, 패스를 데이터베이스 값으로 바꿉니다.
  2. 이미지를 어셈블하기 위해, 필요한 명령이 포함된 Dockerfile을 생성합니다. 예를 들면 다음과 같습니다.
    FROM pythonRUN pip install pymysql cryptography
    COPY rds.py /
    CMD [ "python", "/rds.py" ]
    중요: rds.py 스크립트와 도커파일을 동일한 폴더에 저장하세요.
  3. Amazon ECR 리포지토리를 만든 다음, 도커 이미지를 해당 리포지토리로 푸시합니다.
  4. 작업 정의를 생성한 다음, Docker 이미지를 컨테이너 이미지로 추가합니다. 예를 들면 다음과 같습니다.
    {
      "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. 작업 정의를 선택하고, 작업을 선택한 다음, 작업 실행을 선택합니다.
  8. 시작 유형에서 FARGATE를 선택합니다.
  9. 클러스터의 경우 작업 정의에 사용할 클러스터를 선택합니다.
  10. 작업 수에 복사하려는 작업 수를 입력합니다.
  11. VPC 및 보안 그룹 섹션에서, 클러스터 VPC의 경우 Amazon Virtual Private Cloud(VPC)를 선택합니다.
  12. 서브넷의 경우, 서브넷을 선택합니다.
  13. 보안 그룹의 경우, 보안 그룹을 하나 이상 선택합니다.
  14. 작업 실행을 선택합니다.

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

"Essential container in task exited."

태스크가 데이터베이스에 연결되어 있는지 확인

다음 단계를 완료합니다.

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 Clusters를 선택한 다음 클러스터를 선택합니다.
  3. 태스크 탭을 선택합니다.
  4. 원하는 작업 상태에서 중지된 작업 목록을 확인하려면 중지됨을 선택합니다.
  5. 중지된 작업을 선택합니다.
  6. 중지된 작업의 세부 정보 탭의 컨테이너 섹션에서 해당 섹션을 확장합니다.
  7. CloudWatch에서 로그 보기를 선택합니다.

CloudWatch 콘솔에 다음 메시지가 표시됩니다.

"Connection successful to [사용자의 엔드포인트]"

AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠