aws

AWS SDK Node.js

옴악핫세 2023. 12. 26. 11:41

SDK (Software Development Kit)

특정 서비스를 프로그래밍적으로 제어하기 편리하도록 제공되는 개발에 필요한 도구들을 의미

라이브러리, 프레임워크, 모듈 같은 용어를 내포하는 상위권 용어라고 볼 수 있음

 

 

AWS SDK  모듈 설치

npm install aws-sdk

 

 

 

AWS Credentials 세팅

aws 홈페이지에서 aws 세팅을 하려면 계정 정보가 필요함

이와 같이

SDK를 이용하여 서버단 코드에서 aws 서비스와 연동하기 위해선 자격증명(Credentials) Acces Key (아이디) 와 Secret Access Key (비밀번호)가 필요함

 

공식 가이드에서 서버단에서 aws 서비스와 연동하기 위한 자격증명 얻는 5가지 방법

더보기

1. 서버(EC2)로부터 IAM  Roles를 얻어 연동

2. 서버의 ~/.aws/credentials 경로의 파일에 자격증명 입력하여 연동

3. 환경변수에 자격증명을 저장하고 연동

4. config.json 파일에 자격증명을 입력하여 연동 - 비추 보안 위험

5. 그냥 소스 코드에 직접 입력하여 연동 - 비추 보안 위험

가장 이상적인건 보안적인 측면에서 우수한 임시자격증명 (AssumeRole)을 얻어 사용하는 1번!

두번째로는 2번의 AWS CLI를 이용해 서버 OS에 자격증명이 저장된 파일을 사용

회사에서 사용하는 예시

 

AWS SDK 사용법

만일 개별 aws 서비스만 필요하다면, 아래와 같이 전체 aws 모듈을 import하는 것이 아닌 개별 모듈만 로드하는 것이 로드 시간과 메모리 사용량이 줄어들어 좋음

(1) aws sdk 모듈 로드

//import AWS from 'aws-sdk';//비추천하는 aws sdk 사용 방법
import S3 from 'aws-sdk/clients/s3' //필요한 S3 모듈만 불러오는 aws sdk 사용 방법 - 추천

 

 

(2) aws sdk 사용하기 - S3 버킷 리스트와 EC2 인스턴스 리스트 출력

dovenv 에다가 호나경변수로 저장했던 자격증명 데이터를 불러와 AWS config를 통해 등록해줌

본래 AWS API들은 콜백기반의 메소드이지만 뒤에 .promise()를 붙이면 프로미스 기반 메서드로 사용가능

const AWS = require('aws-sdk');
const dotenv = require('dotenv');
dotenv.config();

// (1-1) aws region 및 자격증명 설정
AWS.config.update({
   accessKeyId: process.env.S3_ACCESS_KEY_ID,
   secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
   region: 'ap-northeast-2',
});
// (1-2) 자격증명 데이터를 따로 파일로 관리한다면 다음으로 호출할수 있다.
// AWS.config.loadFromPath('./config.json');
// 1-1과 1-2중 하나의 방법을 선택해서 자격증명을 설정

/* S3에 있는 버킷 리스트 출력 */
const s3 = new AWS.S3();
s3.listBuckets().promise().then((data) => {
  console.log('S3 : ', JSON.stringify(data, null, 2));
});

/* EC2에 있는 인스턴스 리스트 출력 */
const ec2 = new AWS.EC2();
ec2.describeInstanceStatus().promise()
.then((data) => {
  console.log('EC2 : ', JSON.stringify(data, null, 2));
});

 

버킷 리스트 출력 - 왼쪽은 코드에서 오른쪽은 aws 콘솔 (웹사이트)

 

 

나머지 모듈에 대한 사용법은 AWS SDK JavaScript V2 공식 문서를 참고하자