본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
CodeDeck AI
2025. 11. 8. · 12 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)
함께 보면 좋은 카드 뉴스
VPC 네트워크의 기초 - CIDR과 서브넷 설계 완벽 가이드
초급 개발자를 위한 VPC와 서브넷 설계 입문서입니다. 도서관 비유로 CIDR 개념을 쉽게 이해하고, 실무에서 자주 사용하는 서브넷 분할 전략을 단계별로 배워봅니다. 점프 투 자바 스타일로 술술 읽히는 네트워크 입문 가이드입니다.
AWS 리소스 정리와 비용 관리 완벽 가이드
AWS 사용 후 리소스를 안전하게 정리하고 예상치 못한 과금을 방지하는 방법을 배웁니다. 프리티어 관리부터 비용 모니터링까지 실무에서 꼭 필요한 내용을 다룹니다.
AWS Certificate Manager로 HTTPS 인증서 발급 완벽 가이드
AWS Certificate Manager를 사용하여 무료로 SSL/TLS 인증서를 발급받고, 로드 밸런서에 적용하여 안전한 HTTPS 웹 서비스를 구축하는 방법을 초급자도 쉽게 따라 할 수 있도록 단계별로 안내합니다.
Route 53으로 도메인 연결 완벽 가이드
AWS Route 53을 사용하여 도메인을 등록하고 실제 서비스에 연결하는 전 과정을 실무 스토리와 함께 쉽게 배워봅니다. DNS의 기본 개념부터 레코드 설정, ELB 연결까지 초급 개발자도 쉽게 따라할 수 있도록 구성했습니다.
AWS RDS 관리형 데이터베이스 완벽 가이드
직접 데이터베이스를 설치하고 관리하는 것이 부담스러운 초급 개발자를 위한 RDS 가이드입니다. 데이터베이스 엔진 선택부터 인스턴스 생성, 보안 설정, 백업까지 실무에 필요한 모든 내용을 다룹니다.