본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
CodeDeck AI
2025. 11. 8. · 32 Views
AWS 실전 프로젝트 인프라 구축
AWS를 활용한 실전 프로젝트 구축 방법을 학습합니다. EC2, S3, RDS, Lambda 등 핵심 서비스를 활용하여 확장 가능한 웹 애플리케이션을 만드는 방법을 단계별로 소개합니다.
들어가며
이 글에서는 AWS 실전 프로젝트 인프라 구축에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- EC2_인스턴스_생성_및_연결
- S3_버킷_파일_업로드
- Lambda_함수_생성
- DynamoDB_데이터_저장
- RDS_MySQL_연결
- CloudWatch_로그_기록
- SQS_메시지_큐
- API_Gateway_REST_API
- Secrets_Manager_비밀_관리
- CloudFront_CDN_배포
1. EC2 인스턴스 생성 및 연결
개요
AWS SDK를 사용하여 EC2 인스턴스를 프로그래밍 방식으로 생성하고 관리하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const ec2 = new AWS.EC2({ region: 'ap-northeast-2' });
const params = {
ImageId: 'ami-0c55b159cbfafe1f0',
InstanceType: 't2.micro',
MinCount: 1,
MaxCount: 1
};
ec2.runInstances(params, (err, data) => {
if (err) console.error(err);
else console.log('Instance ID:', data.Instances[0].InstanceId);
});
설명
AWS SDK를 사용하여 t2.micro 타입의 EC2 인스턴스를 생성합니다. runInstances 메서드로 인스턴스를 시작하고 생성된 인스턴스 ID를 반환받습니다.
2. S3 버킷 파일 업로드
개요
S3 버킷에 파일을 업로드하여 정적 파일을 저장하고 관리하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const fs = require('fs');
const s3 = new AWS.S3();
const uploadParams = {
Bucket: 'my-app-bucket',
Key: 'uploads/image.jpg',
Body: fs.createReadStream('./image.jpg'),
ContentType: 'image/jpeg'
};
s3.upload(uploadParams, (err, data) => {
if (err) console.error(err);
else console.log('Upload URL:', data.Location);
});
설명
fs 모듈로 로컬 파일을 읽어 S3 버킷에 업로드합니다. 업로드 완료 후 파일의 공개 URL을 받아 웹에서 접근할 수 있습니다.
3. Lambda 함수 생성
개요
서버리스 Lambda 함수를 작성하여 이벤트 기반으로 코드를 실행하는 방법입니다.
코드 예제
exports.handler = async (event) => {
const name = event.queryStringParameters?.name || 'Guest';
return {
statusCode: 200,
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: `Hello, ${name}!`,
timestamp: new Date().toISOString()
})
};
};
설명
API Gateway와 연동되는 Lambda 함수로, 쿼리 파라미터에서 이름을 받아 인사 메시지를 JSON으로 반환합니다. 서버 없이 코드를 실행할 수 있습니다.
4. DynamoDB 데이터 저장
개요
NoSQL 데이터베이스인 DynamoDB에 데이터를 저장하고 조회하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB.DocumentClient();
const params = {
TableName: 'Users',
Item: {
userId: '12345',
name: 'John Doe',
email: 'john@example.com',
createdAt: Date.now()
}
};
await dynamodb.put(params).promise();
console.log('User saved successfully');
설명
DocumentClient를 사용하여 DynamoDB 테이블에 사용자 정보를 저장합니다. put 메서드로 JSON 형태의 데이터를 간편하게 저장할 수 있습니다.
5. RDS MySQL 연결
개요
RDS MySQL 데이터베이스에 연결하여 쿼리를 실행하는 방법입니다.
코드 예제
const mysql = require('mysql2/promise');
const connection = await mysql.createConnection({
host: 'mydb.c9akgnd.ap-northeast-2.rds.amazonaws.com',
user: 'admin',
password: process.env.DB_PASSWORD,
database: 'myapp'
});
const [rows] = await connection.execute(
'SELECT * FROM users WHERE email = ?',
['john@example.com']
);
console.log(rows);
설명
RDS MySQL 엔드포인트에 연결하고 prepared statement를 사용하여 안전하게 쿼리를 실행합니다. 환경변수로 비밀번호를 관리합니다.
6. CloudWatch 로그 기록
개요
CloudWatch Logs를 사용하여 애플리케이션 로그를 중앙에서 관리하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const logs = new AWS.CloudWatchLogs();
const params = {
logGroupName: '/aws/lambda/my-function',
logStreamName: '2025/01/02/stream',
logEvents: [{
message: JSON.stringify({ level: 'INFO', msg: 'User login' }),
timestamp: Date.now()
}]
};
await logs.putLogEvents(params).promise();
console.log('Log sent to CloudWatch');
설명
CloudWatch Logs에 구조화된 로그를 전송합니다. 로그 그룹과 스트림을 지정하여 애플리케이션의 모든 로그를 중앙에서 모니터링할 수 있습니다.
7. SQS 메시지 큐
개요
SQS를 사용하여 비동기 메시지 처리 시스템을 구축하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const sqs = new AWS.SQS();
const sendParams = {
QueueUrl: 'https://sqs.ap-northeast-2.amazonaws.com/123/my-queue',
MessageBody: JSON.stringify({
orderId: '67890',
action: 'process_payment'
})
};
await sqs.sendMessage(sendParams).promise();
console.log('Message sent to queue');
설명
SQS 큐에 메시지를 전송하여 비동기 작업을 처리합니다. 주문 처리나 이메일 발송 같은 시간이 걸리는 작업을 백그라운드에서 처리할 수 있습니다.
8. API Gateway REST API
개요
API Gateway를 통해 RESTful API 엔드포인트를 생성하고 Lambda와 통합하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const apigateway = new AWS.APIGateway();
const params = {
name: 'MyAPI',
description: 'RESTful API for my app',
endpointConfiguration: {
types: ['REGIONAL']
}
};
const api = await apigateway.createRestApi(params).promise();
console.log('API ID:', api.id);
console.log('API Endpoint:', `https://${api.id}.execute-api.ap-northeast-2.amazonaws.com`);
설명
API Gateway로 RESTful API를 생성합니다. 생성된 API는 Lambda 함수와 연동하여 서버리스 백엔드를 구축할 수 있습니다.
9. Secrets Manager 비밀 관리
개요
AWS Secrets Manager를 사용하여 데이터베이스 비밀번호와 API 키를 안전하게 관리하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const secretsManager = new AWS.SecretsManager();
const params = {
SecretId: 'prod/db/credentials'
};
const data = await secretsManager.getSecretValue(params).promise();
const secrets = JSON.parse(data.SecretString);
console.log('DB User:', secrets.username);
// DB 연결에 secrets.password 사용
설명
Secrets Manager에서 암호화된 비밀 정보를 가져옵니다. 코드에 하드코딩하지 않고 안전하게 자격 증명을 관리하고 자동 로테이션도 가능합니다.
10. CloudFront CDN 배포
개요
CloudFront를 사용하여 정적 파일을 전 세계에 빠르게 배포하는 방법입니다.
코드 예제
const AWS = require('aws-sdk');
const cloudfront = new AWS.CloudFront();
const params = {
DistributionConfig: {
CallerReference: Date.now().toString(),
Origins: {
Quantity: 1,
Items: [{
Id: 'S3-my-bucket',
DomainName: 'my-bucket.s3.amazonaws.com',
S3OriginConfig: { OriginAccessIdentity: '' }
}]
},
Enabled: true,
Comment: 'CDN for my app'
}
};
const dist = await cloudfront.createDistribution(params).promise();
console.log('Distribution URL:', dist.Distribution.DomainName);
설명
S3 버킷을 오리진으로 하는 CloudFront 배포를 생성합니다. 전 세계 엣지 로케이션에서 콘텐츠를 캐싱하여 사용자에게 빠르게 제공합니다.
마치며
이번 글에서는 AWS 실전 프로젝트 인프라 구축에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#AWS #EC2 #S3 #Lambda #RDS
댓글 (0)
함께 보면 좋은 카드 뉴스
Cron과 Webhooks 완벽 가이드
Node.js 환경에서 자동화의 핵심인 Cron 작업과 Webhooks를 활용하는 방법을 다룹니다. 정기적인 작업 스케줄링부터 외부 서비스 연동까지, 실무에서 바로 적용할 수 있는 자동화 기법을 배워봅니다.
보안 모델 및 DM Pairing 완벽 가이드
Discord 봇의 DM 보안 정책과 페어링 시스템을 체계적으로 학습합니다. dmPolicy 설정부터 allowlist 관리, 페어링 코드 구현까지 안전한 봇 운영의 모든 것을 다룹니다.
Media Pipeline 완벽 가이드
실무에서 자주 사용하는 미디어 파일 처리 파이프라인을 처음부터 끝까지 배웁니다. 이미지 리사이징, 오디오 변환, 임시 파일 관리까지 Node.js로 구현하는 방법을 초급 개발자도 이해할 수 있도록 쉽게 설명합니다.
Slack 통합 완벽 가이드 Bolt로 시작하는 기업용 메신저 봇 개발
Slack Bolt 프레임워크를 활용하여 기업용 메신저 봇을 개발하는 방법을 초급자도 이해할 수 있도록 단계별로 설명합니다. 이벤트 구독, 모달 인터랙션, 실전 배포까지 실무 활용 사례와 함께 다룹니다.
Discord 봇 개발 완벽 가이드
discord.js로 Discord 봇을 만들어봅시다. 실시간 채팅 연동부터 슬래시 커맨드까지, 실무 코드로 배우는 Discord 통합 가이드입니다.