Amazon EC2는 확장성과 유연성을 갖춘 클라우드 컴퓨팅 서비스입니다.

 

Amazon EC2를 이용하는 이유에는 여러 장점이 있습니다. 첫째로, EC2는 확장성과 유연성을 제공하여 애플리케이션의 확장과 축소를 용이하게 할 수 있습니다. 두 번째로, 다양한 인스턴스 유형을 선택할 수 있어서 자신의 요구에 맞는 최적의 성능과 구성을 선택할 수 있습니다. 세 번째로, EC2는 사용자가 운영체제, 애플리케이션, 데이터베이스 등을 직접 구성할 수 있어서 유연한 구성이 가능합니다. 마지막으로, EC2는 고 가용성과 내구성을 제공하여 장애 발생 시 다른 가용 영역에서 서비스를 계속할 수 있습니다.

하지만 EC2를 사용하는 것에는 일부 단점도 있습니다. 첫째로, 초기 설정이 복잡할 수 있어서 네트워크 구성, 보안 그룹 설정 등에 대한 이해와 경험이 필요합니다. 둘째로, 서버 인스턴스의 유지 보수와 업데이트, 보안 패치 등을 직접 관리해야 하기 때문에 추가적인 시간과 노력이 필요합니다. 셋째로, 사용한 리소스에 따라 비용이 청구되므로 정확한 비용 관리가 필요합니다.

이러한 장점과 단점을 고려하여 Amazon EC2를 선택하게 됩니다.

 

 

 

 

Amazon EC2의 인스턴스란?

 

Amazon EC2의 인스턴스는 Amazon Elastic Compute Cloud의 가상 서버입니다. 즉, 가상 환경에서 실행되는 가상 컴퓨터라고 할 수 있습니다. EC2 인스턴스는 여러 가지 운영 체제(OS)와 소프트웨어를 호스팅할 수 있으며, 사용자가 필요에 따라 구성할 수 있습니다.

인스턴스는 가상 머신(VM)으로 실행되며, 필요한 CPU, 메모리, 스토리지 등의 리소스를 할당받습니다. EC2 인스턴스는 웹 서버, 데이터베이스 서버, 애플리케이션 서버 등 다양한 용도로 사용될 수 있습니다. 인스턴스를 시작하면 필요에 따라 인스턴스 유형, 용량, 보안 설정 등을 구성할 수 있으며, 필요에 따라 확장이나 축소할 수도 있습니다.

EC2 인스턴스는 클라우드 컴퓨팅의 핵심 요소로, 탄력적인 확장성과 유연성을 제공하여 사용자가 필요한 만큼의 컴퓨팅 리소스를 얻을 수 있도록 합니다. 이를 통해 사용자는 필요한 시간 동안 컴퓨팅 리소스를 이용하고, 비용을 효율적으로 관리할 수 있습니다.

 

 

Amazon EC2 작성 방법

 

AWS 콘솔에 로그인하고 EC2 대시보드로 이동합니다.

 

Instances > Launch instances로 이동합니다.

 

 

Name and tags설정 (임의)

"Name"은 인스턴스의 이름을 나타내는 키(Key)입니다. 이를 통해 인스턴스를 쉽게 식별하고 구분할 수 있습니다. 일반적으로 인스턴스의 역할이나 용도를 명시하여 가독성을 높이는 데 사용됩니다. 예를 들어, "웹 서버", "데이터베이스 서버", "개발 서버" 등으로 인스턴스의 이름을 설정할 수 있습니다.

태그(Tags)는 추가적인 메타데이터로서, 인스턴스에 사용자 정의된 키와 값을 할당할 수 있습니다. 이를 통해 인스턴스를 그룹화하거나, 비용 추적 및 보안 그룹 구성 등의 관리 작업을 수행할 수 있습니다. 예를 들어, "환경" 태그에 "테스트" 값을 할당하여 개발 환경을 구분하거나, "부서" 태그에 "영업팀" 값을 할당하여 팀 단위로 인스턴스를 구분할 수 있습니다.

 

 

Application and OS Images (Amazon Machine Images, AMI)

Application and OS Images (Amazon Machine Images, AMI)는 Amazon EC2 인스턴스를 시작하기 위한 템플릿이라고 생각할 수 있습니다. 이 템플릿은 미리 구성된 운영 체제(OS)와 소프트웨어 설정이 저장된 이미지로, 새로운 인스턴스를 만들 때 사용됩니다.

AMI를 사용하면 사용자는 인스턴스를 시작할 때 필요한 모든 정보를 한 번에 제공받을 수 있습니다. 운영 체제, 필요한 소프트웨어, 설정 등이 이미 포함되어 있어 사용자는 처음부터 모든 것을 구성할 필요가 없습니다. 대신, 미리 구성된 이미지를 선택하여 빠르고 편리하게 인스턴스를 시작할 수 있습니다.

 

 

 

Instance type

Instance type은 Amazon EC2 인스턴스의 가상 하드웨어 구성을 나타내는 것입니다. 이는 인스턴스의 CPU, 메모리, 스토리지, 네트워크 용량 등과 같은 리소스를 결정합니다.

각 인스턴스 타입은 고유한 성능 특성을 가지고 있으며, 특정 작업 부하와 요구사항에 최적화된 형태로 설계되었습니다. 예를 들어, 컴퓨팅 집약적인 작업을 수행해야 하는 경우에는 CPU 성능이 중요한 인스턴스 타입을 선택할 수 있고, 메모리 집약적인 작업을 수행해야 하는 경우에는 메모리 용량이 큰 인스턴스 타입을 선택할 수 있습니다.

 

Instance type은 Amazon EC2 인스턴스의 성능과 비용에 직접적인 영향을 미치므로, 작업의 특성과 요구사항을 고려하여 적절한 인스턴스 타입을 선택하는 것이 중요합니다.

 

Key pair (login)

Key pair는 Amazon EC2 인스턴스에 접속하기 위해 사용되는 인증 방법입니다. Key pair는 공개키와 개인키의 쌍으로 구성되어 있습니다.

인스턴스를 생성할 때, 사용자는 Key pair를 생성하거나 기존에 생성한 Key pair를 선택할 수 있습니다. 인스턴스에 접속할 때, 개인키를 사용하여 인증하고 접속할 수 있습니다. 이러한 방식은 안전한 인스턴스 접속을 보장하며, 외부에서의 무단 접근을 방지할 수 있습니다.

Key pair를 사용하여 인스턴스에 접속하려면, 개인키 파일을 안전하게 보관하고, SSH 클라이언트를 사용하여 접속해야 합니다. 개인키를 잃어버리거나 유출되지 않도록 주의해야 합니다.

 

 

Network settings

Network settings은 Amazon EC2 인스턴스의 네트워크 구성을 설정하는 부분입니다. 이 설정을 통해 인스턴스가 어떤 가상 네트워크(VPC)에 속하고, 어떤 서브넷에서 작동할지를 결정할 수 있습니다. 또한, 인스턴스에 퍼블릭 IP 주소를 할당하여 외부에서 접속할 수 있도록 할 수도 있습니다.

또한, 보안 그룹이라는 것을 설정하여 인스턴스의 네트워크 트래픽을 관리할 수 있습니다. 보안 그룹은 인바운드와 아웃바운드 트래픽에 대한 규칙을 설정하여 원하는 포트와 프로토콜로의 접근을 허용하거나 차단할 수 있습니다. 이를 통해 인스턴스의 네트워크 트래픽을 보안하고 필요한 통신만 허용할 수 있습니다.

 

Subnet은 네트워크를 작은 구역으로 나누어 각각의 구역에 고유한 IP 주소 범위와 네트워크 설정을 할당하는 것입니다.

 

Auto-assign public IP는 Amazon EC2 인스턴스에 자동으로 공인 IP 주소를 할당하는 옵션입니다. 이를 활성화하면 인스턴스가 생성될 때 자동으로 공인 IP 주소가 할당되어 외부 인터넷과 통신할 수 있게 됩니다.

 

Allow SSH traffic from은 SSH 프로토콜을 통해 원격으로 인스턴스에 접속할 수 있도록 허용하는 규칙입니다. SSH는 Secure Shell의 약자로, 네트워크를 통해 안전하게 인스턴스에 접속하기 위해 사용되는 프로토콜입니다. "Allow SSH traffic from" 규칙을 설정하면 특정 IP 주소나 IP 범위에서 SSH를 통한 접속을 허용하게 되어, 해당 주소에서만 인스턴스에 SSH로 접속할 수 있게 됩니다. 이를 통해 인스턴스에 대한 원격 접속을 제한적으로 허용하고, 보안을 강화할 수 있습니다.

 

 

Configure storage

Configure storage 설정에서는 필요한 스토리지 유형과 크기를 선택하고, 필요한 경우 추가 스토리지를 연결할 수 있습니다. 이를 통해 인스턴스가 필요한 데이터를 저장하고 관리할 수 있습니다.

 

 

Summary

설정 내용을 확인하고 Launch instance를 누르면 인스턴스가 생성됩니다.

 

 

Amazon S3를 사용하여 웹 사이트를 배포하는 방법

 

 

Amazon S3는 단순한 버킷 생성과 파일 업로드만으로 웹 사이트를 배포할 수 있습니다. 별도의 서버 구성이나 관리가 필요하지 않기 때문에 간단하고 편리하게 웹 사이트를 배포할 수 있습니다. 또한, 높은 확장성을 제공하며, 대량의 트래픽과 파일을 처리할 수 있습니다. 

그리고 사용한 만큼만 비용을 지불하므로 비용 효율적인 방식입니다. 초기 설정 비용이 거의 없으며, 필요에 따라 저장 용량을 증가시킬 수 있습니다.

 

하지만 Amazon S3는 정적 파일 호스팅에 최적화되어 있으므로 동적인 서버 측 스크립트 실행에는 제한이 있습니다. 따라서 복잡한 동적 기능이 필요한 경우에는 다른 서버리스 또는 웹 호스팅 서비스를 고려해야 합니다. 또한, Amazon S3는 웹 호스팅에 필요한 기본 기능을 제공하지만, 고급 기능이나 데이터베이스 연동과 같은 추가 기능은 제공하지 않습니다. 따라서 고급 웹 애플리케이션을 개발하는 경우에는 다른 서비스와의 통합이 필요할 수 있습니다.

 

 

 

1. 웹사이트를 배포할 버킷을 선택하고 "속성" 또는 "Properties" 탭으로 이동합니다.

 

2. 하단의 Static website hosting의 "Edit"버튼을 클릭합니다.

 

 

 

3. Static website hosting을 활성화(Enable) 합니다.

인덱스 문서 지정: 웹 사이트의 기본 페이지로 사용할 파일 이름을 "인덱스 문서" 또는 "Index document" 필드에 입력합니다. 보통 "index.html"이나 "home.html"과 같은 파일을 사용합니다.

 

오류 문서 지정 (선택 사항): 웹 사이트의 오류 페이지로 사용할 파일 이름을 "오류 문서" 또는 "Error document" 필드에 입력합니다. 이는 사용자가 잘못된 URL에 접속했을 때 보일 페이지입니다.

 

 

4. 웹 사이트를 확인하고 접속할 수 있는 URL을 확인합니다. 이 URL을 통해 누구나 배포한 웹 사이트에 접근할 수 있습니다.

 

 

이렇게 Amazon S3를 사용하여 웹 사이트를 배포하면 안정적이고 확장 가능한 웹 호스팅 솔루션을 구축할 수 있습니다.

 

Amazon S3 버킷 내부의 모든 파일을 Public으로 지정하는 Bucket policy설정 방법입니다.

(ACL을 이용하지 않는 방법)

 

 

 

1. AWS Management Console에 로그인: AWS Management Console에 로그인하고 S3 서비스로 이동합니다.

2. 버킷 선택: 공개하려는 파일이 있는 버킷을 선택합니다.



3. 권한(Permissions) 탭 선택: 버킷 속성에서 "권한" 또는 "Permissions" 탭을 선택합니다.



4. 버킷 정책 추가: Bucket policy의 "Edit" 버튼을 클릭합니다.



4. 버킷 정책 작성: 버킷 정책 편집기에서 다음과 같은 JSON 형식의 정책을 작성합니다.

{
  "Version": "2023-06-23",
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::버킷이름/*"
    }
  ]
}

 

위의 JSON 정책에서 "버킷이름" 부분을 공개하려는 버킷의 실제 이름으로 바꿔야 합니다.


6. 정책 저장: 작성한 버킷 정책을 저장합니다.

 


이렇게 하면 선택한 S3 버킷 안의 모든 파일이 외부에 공개됩니다. 이때 주의해야 할 점은 모든 파일이 공개되므로, 보안 상의 이유로 공개해야 할 파일에 대해서만 이 방법을 사용해야 합니다.

 

+ Recent posts