SDK 및 CLI 실습
1. SDK (Software Development Kit)란?
SDK는 Software Development Kit의 약자로, 특정 소프트웨어를 개발하기 위한 도구와 라이브러리의 집합입니다. AWS SDK는 AWS 클라우드 서비스와 통합하기 위해 필요한 도구들을 제공합니다.
1.1 SDK의 역할- 다양한 프로그래밍 언어 (자바스크립트, 파이썬, Java 등)에 맞춰 AWS 서비스를 제어하는 라이브러리를 제공합니다.
- 예를 들어, AWS S3에 파일을 업로드하거나 EC2 인스턴스를 생성하는 등의 작업을 SDK를 사용하여 수행할 수 있습니다.
2. AWS CLI란?
CLI는 Command Line Interface의 약자로, 텍스트 기반 명령어를 통해 AWS 리소스를 관리하는 도구입니다. 이를 사용하면 터미널에서 직접 AWS 서비스를 제어할 수 있습니다.
2.1 AWS CLI 설치 및 설정-
- 공식 웹사이트에서 AWS CLI를 다운로드하고 설치합니다.
- Windows에서 aws configure 명령어를 실행하여 자격 증명 설정합니다.CLI 설치:
aws configure
AWS Access Key ID [None]: <액세스 키>
AWS Secret Access Key [None]: <비밀 키>
Default region name [None]: ap-northeast-2
Default output format [None]: json
- CLI 사용:
- CLI 명령어 예시:
aws s3 cp hello.txt s3://my-bucket/hello.txt
실습 과정
1. Node.js 및 npm 설치
- Node.js 설치:
- Node.js는 서버 애플리케이션을 개발하는 자바스크립트 런타임 환경입니다.
- Node.js 공식 웹사이트에서 LTS 버전을 다운로드하여 설치합니다.
- npm 설치:
- Node.js를 설치하면 자동으로 npm도 함께 설치됩니다.
npm -v
node -v
2. AWS SDK 설치 및 사용
- 프로젝트 폴더 만들기:
mkdir aws-sdk-example
cd aws-sdk-example
- npm init 명령어로 프로젝트 초기화:
npm init -y
- AWS SDK 설치:
npm install @aws-sdk/client-s3
3. AWS S3 클라이언트 코드 작성
import { S3Client, CreateBucketCommand, PutObjectCommand } from "@aws-sdk/client-s3";
const s3Client = new S3Client({
region: "ap-northeast-2",
credentials: {
accessKeyId: "YOUR_ACCESS_KEY_ID",
secretAccessKey: "YOUR_SECRET_ACCESS_KEY"
}
});
async function main() {
const bucketName = "my-new-bucket-20250410";
try {
// S3 버킷 생성
await s3Client.send(
new CreateBucketCommand({
Bucket: bucketName
})
);
console.log(`Bucket ${bucketName} created successfully`);
// 파일 업로드
await s3Client.send(
new PutObjectCommand({
Bucket: bucketName,
Key: "hello.txt",
Body: "Hello, AWS SDK!"
})
);
console.log("File uploaded successfully");
} catch (error) {
console.error("Error:", error);
}
}
main();
4. 코드 실행
- node index.js 명령어로 실행:
node index.js
- S3 콘솔에서 확인:
- AWS S3 콘솔에 접속하여 생성된 버킷과 업로드된 파일을 확인합니다.
5. 실습 요약
- DynamoDB 실습: 테이블을 생성하고 데이터를 입력하며 쿼리 및 스캔 방식으로 조회하는 방법을 배움.
- Lambda 실습: 서버리스 컴퓨팅 개념을 이해하고, AWS Lambda를 사용하여 서버리스 환경에서 함수 실행을 실습함.
- AWS SDK 실습: Node.js 환경에서 AWS SDK를 설치하고, S3 클라이언트를 통해 버킷 생성 및 파일 업로드를 실습함.
시각적 자료 추가
1. DynamoDB 테이블 생성 예시
- 테이블 설정 화면:
- 테이블 이름: student-score
- Partition Key: ID (학번)
- Sort Key: subject (과목명)
- 글로벌 보조 인덱스 예시:
- Partition Key: subject
- Sort Key: score
2. S3 클라이언트 코드 예시
import { S3Client, CreateBucketCommand, PutObjectCommand } from "@aws-sdk/client-s3";
- S3 클라이언트 설정: region과 credentials 설정
- 버킷 생성: CreateBucketCommand
- 파일 업로드: PutObjectCommand
2. 프로젝트 폴더 만들기
AWS SDK를 사용하는 프로젝트를 위한 폴더를 만들고, 해당 폴더로 이동합니다.
2.1. 프로젝트 폴더 생성
터미널을 열고, 아래 명령어를 입력하여 새 폴더를 만듭니다.
mkdir aws-sdk-example
cd aws-sdk-example
3. Node.js 프로젝트 초기화
Node.js 프로젝트를 시작하려면, npm init 명령어로 프로젝트를 초기화해야 합니다.
3.1. 프로젝트 초기화
npm init 명령어로 package.json 파일을 생성합니다. -y 옵션을 사용하면 기본 설정값으로 자동으로 package.json 파일이 생성됩니다.
npm init -y
4. AWS SDK 설치
AWS SDK는 npm을 사용하여 설치할 수 있습니다.
4.1. AWS SDK 설치
다음 명령어를 입력하여 AWS SDK for JavaScript를 설치합니다.
npm install @aws-sdk/client-s3
5. 코드 작성
이제 AWS SDK를 사용하여 S3 클라이언트를 만들고 버킷을 생성하고 파일을 업로드하는 코드를 작성합니다.
5.1. index.js 파일 생성
프로젝트 폴더 내에 index.js 파일을 만들고, 아래와 같이 코드를 작성합니다.
import { S3Client, CreateBucketCommand, PutObjectCommand } from "@aws-sdk/client-s3";
// S3 클라이언트 생성
const s3Client = new S3Client({
region: "ap-northeast-2", // 서울 리전
credentials: {
accessKeyId: "YOUR_ACCESS_KEY_ID", // 액세스 키
secretAccessKey: "YOUR_SECRET_ACCESS_KEY" // 비밀 액세스 키
}
});
// S3 버킷 생성 및 파일 업로드 함수
async function main() {
const bucketName = "my-unique-bucket-name"; // 고유한 버킷 이름 설정
try {
// 1. S3 버킷 생성
await s3Client.send(
new CreateBucketCommand({
Bucket: bucketName,
})
);
console.log(`Bucket ${bucketName} created successfully`);
// 2. S3 버킷에 파일 업로드
await s3Client.send(
new PutObjectCommand({
Bucket: bucketName,
Key: "hello.txt", // 업로드할 파일 이름
Body: "Hello, AWS SDK!" // 파일 내용
})
);
console.log("File uploaded successfully");
} catch (error) {
console.error("Error:", error);
}
}
// 함수 실행
main();
5.2. 코드 설명
- S3 클라이언트 생성:
- region: S3 리전 설정 (서울 리전 ap-northeast-2)
- credentials: AWS 액세스 키와 비밀 액세스 키 설정
- CreateBucketCommand: S3 버킷을 생성하는 명령어
- Bucket: 생성할 버킷 이름을 지정
- PutObjectCommand: S3 버킷에 파일을 업로드하는 명령어
- Bucket: 파일을 업로드할 버킷 이름
- Key: 업로드할 파일의 이름
- Body: 파일의 내용
6. 코드 실행
이제 작성한 코드를 실행하여 S3 버킷을 생성하고, 파일을 업로드합니다.
6.1. 실행
터미널에서 아래 명령어를 입력하여 index.js 파일을 실행합니다.
node index.js
6.2. 실행 결과
- 버킷 생성: 버킷이 생성되면 콘솔에 "Bucket <버킷 이름> created successfully" 메시지가 출력됩니다.
- 파일 업로드: 파일이 정상적으로 업로드되면 "File uploaded successfully" 메시지가 출력됩니다.
7. S3 콘솔에서 확인
AWS 콘솔에 접속하여 S3 서비스를 선택하고, 생성된 버킷과 업로드된 파일을 확인합니다.
- S3 콘솔 접속: AWS 관리 콘솔에서 S3 서비스로 이동합니다.
- 버킷 확인: 생성된 버킷 이름이 목록에 나타나는지 확인합니다.
- 파일 확인: 해당 버킷 안에 hello.txt 파일이 업로드되어 있는지 확인합니다.
8. 실습 요약
- SDK 및 CLI: SDK는 AWS 서비스를 코드에서 제어하는 데 사용되며, CLI는 명령행에서 AWS 리소스를 관리하는 도구입니다.
- Node.js 프로젝트 초기화 및 AWS SDK 설치: npm init과 npm install을 통해 프로젝트를 설정하고 AWS SDK를 설치합니다.
- S3 클라이언트 사용: AWS SDK의 S3Client를 사용하여 버킷을 생성하고 파일을 업로드하는 방법을 배웠습니다.
시각적 자료 추가
1. 프로젝트 폴더 구조
aws-sdk-example/
├── node_modules/
├── package.json
└── index.js
2. index.js 코드 실행
- S3 버킷 생성: 아래 명령어로 버킷 생성
await s3Client.send(new CreateBucketCommand({ Bucket: "my-unique-bucket-name" }));
- 파일 업로드: 아래 명령어로 파일 업로드
await s3Client.send(new PutObjectCommand({ Bucket: "my-unique-bucket-name", Key: "hello.txt", Body: "Hello, AWS SDK!" }));
3. S3 콘솔에서 확인
- S3 대시보드에서 버킷 목록 확인
- 해당 버킷에 hello.txt 파일이 업로드된 것을 확인
결론
이번 실습을 통해 AWS SDK를 활용하여 S3 클라이언트를 만들고, 버킷을 생성하고 파일을 업로드하는 방법을 배웠습니다. 이 과정은 AWS 환경에서 애플리케이션을 개발할 때 필수적인 기술로, 실무에서 자주 사용됩니다.