[typescript] 타입스크립트를 사용하여 AWS SDK로 Fargate 컨테이너 관리하기

AWS SDK를 사용하여 Fargate에서 컨테이너를 생성, 삭제 및 관리하는 방법에 대해 알아보겠습니다. 우리는 이를 타입스크립트로 구현할 것이며, AWS SDK의 타입 정의를 활용해 타입 안정성을 확보할 것입니다.

필수 패키지 설치

먼저, AWS SDK의 Fargate 서비스를 사용하기 위해 aws-sdk 패키지를 설치해야 합니다. 이제 프로젝트 디렉토리에서 다음 명령어를 실행합니다:

npm install aws-sdk

또한, 타입스크립트에서 AWS SDK를 사용할 때 타입 정의를 위해 @types/aws-sdk 패키지도 함께 설치해야 합니다. 아래 명령어를 실행하여 설치합니다:

npm install @types/aws-sdk --save-dev

AWS SDK를 사용한 Fargate 컨테이너 관리

인증 설정

먼저, AWS SDK의 Fargate 서비스를 사용하기 위해 적절한 인증 정보를 제공해야 합니다. 이를 위해 AWS의 인증 정보를 사용하여 SDK 인스턴스를 생성합니다. 예를 들어, 다음과 같이 설정할 수 있습니다:

import AWS from 'aws-sdk';

const credentials = {
  accessKeyId: 'YOUR_ACCESS_KEY_ID',
  secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
  region: 'YOUR_PREFERRED_REGION'
};

const fargate = new AWS.Fargate(credentials);

위 코드에서 YOUR_ACCESS_KEY_ID, YOUR_SECRET_ACCESS_KEY, YOUR_PREFERRED_REGION은 사용자의 AWS 인증 정보와 기본 지역에 해당하는 값으로 대체되어야 합니다.

Fargate 태스크 생성

이제 Fargate에 새로운 태스크(컨테이너)를 생성할 수 있습니다. 예를 들어, 다음 코드를 사용하여 새로운 태스크를 생성할 수 있습니다:

const params = {
  cluster: 'YOUR_CLUSTER_NAME',
  taskDefinition: 'YOUR_TASK_DEFINITION_ARN',
  launchType: 'FARGATE',
  networkConfiguration: {
    awsvpcConfiguration: {
      subnets: ['YOUR_SUBNET_ID'],
      securityGroups: ['YOUR_SECURITY_GROUP_ID']
    }
  }
};

fargate.runTask(params, (err, data) => {
  if (err) {
    console.error('태스크를 실행할 수 없습니다:', err);
  } else {
    console.log('태스크가 성공적으로 실행되었습니다:', data);
  }
});

위 코드에서 YOUR_CLUSTER_NAME, YOUR_TASK_DEFINITION_ARN, YOUR_SUBNET_ID, YOUR_SECURITY_GROUP_ID는 사용자의 환경에 맞게 대체되어야 합니다.

Fargate 태스크 삭제

또한, 더 이상 필요하지 않은 Fargate 태스크(컨테이너)를 삭제할 수도 있습니다. 아래의 코드를 사용하여 태스크를 삭제할 수 있습니다:

const params = {
  cluster: 'YOUR_CLUSTER_NAME',
  task: 'YOUR_TASK_ID'
};

fargate.stopTask(params, (err, data) => {
  if (err) {
    console.error('태스크를 중지할 수 없습니다:', err);
  } else {
    console.log('태스크가 성공적으로 중지되었습니다:', data);
  }
});

결론

이제 타입스크립트와 AWS SDK를 사용하여 Fargate에서 컨테이너를 생성, 삭제 및 관리하는 기본적인 방법을 알아봤습니다. 타입스크립트의 타입 안정성을 활용하여 AWS SDK를 더욱 안전하게 활용할 수 있습니다.

본 포스트는 AWS SDK의 공식문서를 참조하여 작성되었습니다.

참고문헌:

관련 자료: