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 버킷 안의 모든 파일이 외부에 공개됩니다. 이때 주의해야 할 점은 모든 파일이 공개되므로, 보안 상의 이유로 공개해야 할 파일에 대해서만 이 방법을 사용해야 합니다.

 

 

Amazon S3는 클라우드 기반의 데이터 저장 및 관리 서비스입니다.

 

S3는 필요에 따라 데이터 저장 용량을 확장할 수 있어 기업의 성장에 따라 유연하게 대응할 수 있습니다.

데이터의 내구성과 가용성을 보장하여 중요한 데이터의 안전성을 확보합니다. S3는 데이터를 여러 복제본으로 저장하고 장애 발생 시에도 데이터에 접근할 수 있도록 합니다.
보안 측면에서 S3는 다양한 암호화 옵션과 액세스 제어 기능을 제공하여 데이터의 안전성을 강화합니다. 객체 수준 및 버킷 수준에서 암호화를 적용하고 필요한 사용자에게만 액세스 권한을 부여할 수 있습니다.

S3는 데이터의 간편한 관리를 지원합니다. 데이터를 구조화하여 저장하고 폴더 및 버킷 구조를 사용하여 데이터를 조직화할 수 있습니다. 이를 통해 데이터의 분류와 탐색이 용이해집니다.
S3는 비용 효율성을 제공합니다. Pay-as-you-go 모델을 채택하여 필요한 용량만큼 비용을 지불하고 초기 투자 없이 데이터를 저장하고 관리할 수 있습니다. 또한 수명 주기 관리 기능을 통해 오래된 데이터를 저비용 스토리지로 자동 이관하여 비용을 절감할 수 있습니다.

이러한 다양한 장점으로 인해 Amazon S3는 기업과 개발자에게 안전하고 효율적인 데이터 저장 및 관리 솔루션으로 많은 사랑을 받고 있습니다.

 

 

 

 

Amazon S3 버킷 작성하기

 

 

1. Amazon S3 > Buckets에서 Create bucket을 클릭

 

 

2. 버킷 이름과 리전을 설정

버킷명은 Amazon S3 전체에서 유니크한 이름을 설정해야 합니다.

리전은 한국에서 사용한다면 서울로 설정하는 것이 좋습니다.

 

 

3. Object Ownership설정

ACLs disabled (recommended)
이 옵션을 선택하면 객체에 대한 ACL(Access Control List)을 사용하지 않고, 객체의 액세스 권한을 관리할 수 없습니다.
객체의 액세스 권한은 일반적으로 버킷 수준의 정책(policy)이나 버킷의 기본 ACL(default ACL)에 의해 결정됩니다.
이 옵션은 일반적으로 버킷 수준의 정책을 사용하여 액세스 제어를 구성하는 경우에 유용합니다.


ACLs enabled
이 옵션을 선택하면 객체에 대한 ACL을 사용하여 액세스 권한을 직접 설정할 수 있습니다.
객체의 ACL은 객체 수준에서 액세스 권한을 세밀하게 제어할 수 있는 방법입니다.
개별 객체의 ACL을 설정하여 특정 사용자, 그룹 또는 퍼블릭(public)에 대한 읽기/쓰기/삭제 등의 권한을 지정할 수 있습니다.
이 옵션은 객체별로 다른 액세스 권한이 필요한 경우 유용합니다. 예를 들어, 특정 이미지나 문서를 퍼블릭으로 공개하고 나머지 객체는 비공개로 유지하는 경우에 활용할 수 있습니다.


요약하면, "ACL 사용 중지됨"은 객체에 대한 액세스 제어를 관리하지 않고 버킷 수준의 정책을 사용하여 액세스를 제어하는 옵션입니다. 반면에 "ACL 사용됨"은 객체별로 세밀한 액세스 제어를 위해 객체의 ACL을 사용하는 옵션입니다. 선택하는 옵션은 객체 액세스 제어의 필요성과 복잡성에 따라 결정할 수 있습니다.

 

쉽게 설명해서 버킷은 창고, 버킷의 객체를 상자라고 했을 때, ACL은 상자에 대한 개별 접근권한을 설정할 수 있는 옵션입니다. 하나의 버킷에 퍼블릭 문서와 프라이빗 문서가 같이 존재할 경우 사용할 수 있습니다. 하지만  버킷 내부에서 퍼블릭 문서와 프라이빗 문서를 같이 관리하는 것은 일반적이지 않기 때문에 ACLs disabled이 권장됩니다.

 

 

4. 버킷에 대한 접근 권한을 설정

버킷의 공개 액세스를 차단하는 설정입니다. 

Block all public access를 활성화하면, 버킷의 모든 객체에 대한 공개 액세스가 차단됩니다. 이는 인터넷을 통해 버킷의 객체에 접근할 수 없음을 의미합니다. 이 설정을 사용하면 실수로 공개 액세스가 설정되는 것을 방지하고, 보안을 강화할 수 있습니다.

버킷의 내용물을 외부에 공개하고 싶은 경우 이 옵션을 해제해야 합니다.

예를 들어서 사진을 업로드 한 후 사진을 웹사이트에 배포하고 싶다면 이 옵션을 해제해야 합니다.

 

 

5. 버킷 버전 관리

Bucket Versioning(버킷 버전 관리)은 버킷 내의 객체에 대한 버전 관리를 가능하게 합니다. 버전 관리가 활성화된 버킷에서는 객체의 각 업데이트가 새로운 버전으로 저장되며, 이전 버전의 객체도 보관됩니다.

 

Bucket Versioning을 활성화하면 다음과 같은 이점이 있습니다

객체 버전 관리

버전 관리가 활성화된 버킷에서는 같은 키(객체 이름)를 가진 객체의 각 업데이트가 새로운 버전으로 저장됩니다. 이전 버전의 객체도 유지되므로, 이전 상태로 롤백하거나 특정 버전의 객체를 검색할 수 있습니다.

복원 및 복구

버전 관리를 사용하면 실수로 삭제된 객체를 복원할 수 있습니다. 삭제된 객체는 버킷에서 완전히 제거되지 않고, 삭제 표시된 상태로 남아있게 됩니다. 필요한 경우 삭제 표시를 해제하여 객체를 복구할 수 있습니다.

보안 및 규정 준수

버전 관리는 데이터의 무결성과 보존을 강화하는 데 도움이 됩니다. 객체의 각 버전은 변경되지 않고 보존되므로 데이터의 무결성이 보장됩니다. 또한, 버전 관리는 규정 준수 요구 사항을 충족하는 데 도움이 될 수 있습니다.

Bucket Versioning을 활성화하면 객체의 버전 관리에 따른 추가 요금이 발생할 수 있으므로, 비용 측면도 고려해야 합니다. 또한, 버전 관리가 활성화된 버킷에서는 객체를 삭제할 때도 삭제 표시된 상태로 남으므로, 주의해야 합니다.

 

 

6. 태그 설정

S3 버킷을 생성할 때, 태그(Tag) 옵션을 사용할 수 있습니다. 태그는 버킷에 메타데이터(Key-Value 쌍)를 추가하는 방법입니다. 이 메타데이터는 버킷에 대한 추가 정보를 제공하고, 정렬, 필터링, 비용 추적 등의 용도로 사용됩니다.

태그를 사용하면 버킷을 더욱 효과적으로 관리할 수 있습니다. 예를 들어, 버킷에 대한 소유자, 프로젝트명, 환경 구분, 비용 추적용 부서 등을 태그로 추가할 수 있습니다. 이렇게 태그를 사용하면 특정 속성이나 구분에 따라 버킷을 식별하고, 필요한 정보를 검색하고, 비용 추적을 할 수 있습니다.

 

태그는 나중에 필요에 따라 수정하거나 제거할 수도 있습니다.

 

 

7. 암호화옵션 설정

Default encryption(기본 암호화) 옵션은 S3 버킷에 객체(Object)를 업로드할 때 자동으로 암호화를 적용하는 기능입니다. 이를 통해 데이터의 기본적인 보안 수준을 강화할 수 있습니다.

Default encryption을 활성화하면 S3 버킷에 업로드되는 모든 객체가 자동으로 암호화됩니다. 이는 데이터의 기밀성을 보호하고 외부에서의 무단 액세스로부터 보호하는 데 도움이 됩니다. AWS는 다양한 암호화 옵션을 제공하며, Default encryption을 사용하면 이러한 암호화 옵션을 편리하게 적용할 수 있습니다.

 

Default encryption을 활성화하면 개발자나 사용자가 일일이 암호화를 구현하지 않아도 됩니다. 모든 객체가 자동으로 암호화되므로 보안 위험을 최소화할 수 있습니다. 또한, Default encryption을 적용하더라도 필요에 따라 추가적인 암호화 옵션을 적용할 수도 있습니다.

 

SSE-S3 (Server Side Encryption with S3)
SSE-S3는 AWS S3 서비스에서 제공하는 서버 측 암호화 옵션입니다. SSE-S3를 선택하면 S3 서버가 객체를 자동으로 암호화하여 저장합니다. 이때 사용되는 암호화 키는 S3가 자동으로 관리하며, 암호화된 객체를 복호화할 필요가 있는 경우에도 자동으로 복호화됩니다. SSE-S3를 사용하면 데이터의 기밀성을 강화할 수 있습니다.

SSE-KMS (Server Side Encryption with AWS Key Management Service)
SSE-KMS는 AWS Key Management Service(KMS)를 사용하여 S3 객체를 암호화하는 옵션입니다. SSE-KMS를 선택하면 KMS가 관리하는 키를 사용하여 객체를 암호화합니다. 이는 고객이 직접 암호화 키를 관리하고 KMS를 통해 키를 사용하여 객체를 암호화하고 관리할 수 있음을 의미합니다. SSE-KMS는 높은 보안 요구 사항을 충족시키는 데에 사용될 수 있습니다.

 

DSSE-KMS(Dual-layer server-side encryption with AWS Key Management Service keys)

SSE-KMS(Server Side Encryption with AWS Key Management Service)의 확장된 버전입니다. DSSE-KMS는 SSE-KMS와 SSE-S3를 함께 사용하여 두 단계의 암호화를 적용하는 방식입니다.

DSSE-KMS를 사용하면 먼저 SSE-KMS를 통해 S3 객체를 암호화합니다. 이때 KMS에서 관리하는 암호화 키를 사용하여 객체를 암호화합니다. 그리고 암호화된 객체는 다시 SSE-S3를 사용하여 한 번 더 암호화됩니다. 이런 방식으로 DSSE-KMS는 두 단계의 암호화를 적용하여 보다 강력한 보안을 제공합니다.

두 단계의 암호화는 서로 다른 키를 사용하고 각각의 암호화 단계를 수행합니다. 따라서 객체를 복호화하기 위해서는 암호화에 사용된 두 개의 키를 모두 제공해야 합니다. 이는 데이터의 보안성을 더욱 강화하고 외부로부터의 무단 액세스로부터 안전하게 데이터를 보호하는 데 도움이 됩니다.

DSSE-KMS는 보다 높은 수준의 보안 요구 사항을 충족시키기 위해 선택할 수 있는 옵션입니다. 민감한 데이터를 다루는 환경에서 사용하여 데이터의 기밀성과 무결성을 강화할 수 있습니다. AWS KMS를 활용하여 관리되는 키를 사용하므로 키의 생성, 관리, 회전 등을 통해 데이터 보호 정책을 유연하게 조정할 수 있습니다.

 

Bucket Key

Bucket Key를 사용하여 SSE-KMS(Server Side Encryption with AWS Key Management Service)를 활성화하면 AWS KMS(Key Management Service) 호출을 줄여 암호화 비용을 절감할 수 있습니다. S3 Bucket Key는 DSSE-KMS(Dual-layer server-side encryption with AWS Key Management Service keys)에는 지원되지 않습니다.

 

Disable (비활성화)
SSE-KMS 또는 DSSE-KMS의 경우 "Disable"를 선택하면 암호화가 비활성화됩니다. S3 버킷에 업로드되는 객체는 암호화되지 않으며, 추가적인 보안 계층이 적용되지 않습니다. 데이터의 기밀성을 강화하거나 외부로부터의 무단 액세스로부터 보호하기 위해서는 다른 암호화 옵션을 사용해야 합니다.

Enable (활성화)
SSE-KMS의 경우 "Enable"을 선택하면 S3 Bucket Key를 사용하여 암호화를 활성화할 수 있습니다. S3 Bucket Key는 KMS에서 관리하는 키로 S3 객체를 암호화하는 데 사용됩니다. S3 Bucket Key를 사용하면 암호화에 필요한 AWS KMS 호출을 줄일 수 있으므로 암호화 비용을 절감할 수 있습니다.

 

SSE-S3를 선택하고 Bucket Key를 비활성화

SSE-S3를 선택하고 Bucket Key를 사용하는 것은 의미가 없습니다. SSE-S3는 Amazon S3가 자체적으로 관리하는 키를 사용하여 서버 측 암호화를 수행하는 옵션입니다. 이 경우 Bucket Key를 사용하더라도 별다른 효과가 없습니다. Bucket Key는 주로 (SSE-KMS)와 함께 사용되어 비용을 절감하고 암호화 작업을 효율적으로 처리하는 데 도움을 줍니다. 따라서 SSE-S3를 선택할 때는 Bucket Key를 사용하지 않아도 됩니다.

 

 

8. 고급 설정

Advanced settings(고급 설정)는 AWS S3 버킷에서 제공되는 추가적인 설정 옵션을 의미합니다. 이러한 설정을 통해 데이터의 보안, 접근 제어, 복제 등 다양한 기능을 구성할 수 있습니다.

AWS에 대해서

소개

AWS는 아마존 웹 서비스(Amazon Web Services)의 약자로, 클라우드 컴퓨팅 플랫폼입니다. 이는 기업과 개인 모두에게 안정적이고 확장 가능한 인프라를 제공하여 애플리케이션을 구축하고 실행하는 데 사용됩니다. AWS는 다양한 서비스와 도구를 제공하여 사용자가 자신의 비즈니스 요구에 맞게 애플리케이션을 개발하고 배포할 수 있도록 지원합니다.

AWS의 주요 이점

1. 확장성과 유연성

AWS는 사용자의 비즈니스 요구에 따라 확장 가능한 인프라를 제공합니다. 사용자는 필요에 따라 컴퓨팅 리소스를 증가 또는 감소시킬 수 있으며, 이는 비용 효율성을 높이고 효과적인 자원 관리를 가능하게 합니다.

2. 안정성과 신뢰성

AWS는 글로벌 인프라를 통해 안정성과 신뢰성을 제공합니다. 사용자는 여러 개의 리전과 가용 영역을 활용하여 애플리케이션을 배포하고 데이터를 백업할 수 있으며, 장애 발생 시 다른 리전으로 자동으로 전환되어 서비스 중단을 최소화할 수 있습니다.

3. 다양한 서비스

AWS는 수많은 서비스와 도구를 제공합니다. 이 중에는 컴퓨팅, 데이터베이스, 네트워킹, 보안, 인공지능 등 다양한 분야에 대한 서비스가 포함되어 있습니다. 사용자는 필요한 서비스를 선택하여 자신의 애플리케이션에 통합할 수 있습니다.

4. 비용 효율성

AWS는 Pay-as-you-go 모델을 채택하여 사용자가 실제로 사용한 리소스에 대해서만 비용을 지불하도록 합니다. 또한, 인프라 구축과 관리에 드는 비용을 절감할 수 있으며, 탄력적인 비용 모델을 통해 예산을 효율적으로 관리할 수 있습니다.

AWS에서 제공하는 서비스

AWS는 다양한 서비스와 도구를 제공하여 사용자의 다양한 요구를 충족시킵니다.

이 중 일부를 살펴보면:

1. Amazon EC2 (Elastic Compute Cloud)

Amazon EC2는 가상 서버를 제공하는 서비스로, 사용자는 필요에 따라 가상 서버를 생성하고 관리할 수 있습니다. 이는 애플리케이션 실행에 필요한 컴퓨팅 리소스를 제공합니다.

2. Amazon S3 (Simple Storage Service)

Amazon S3는 안전하고 확장 가능한 객체 스토리지 서비스입니다. 사용자는 여러 가용 영역에 데이터를 저장하고 검색할 수 있으며, 높은 내구성과 안정성을 제공합니다.

3. Amazon RDS (Relational Database Service)

Amazon RDS는 관리형 관계형 데이터베이스 서비스로, 사용자는 데이터베이스 인스턴스를 프로비저닝 하고 관리할 수 있습니다. 이는 MySQL, PostgreSQL, Oracle 등 다양한 데이터베이스 엔진을 지원합니다.

4. Amazon Lambda

Amazon Lambda는 서버리스 컴퓨팅 서비스로, 코드를 실행하기 위한 서버 프로비저닝이나 관리 없이도 애플리케이션을 실행할 수 있습니다. 사용자는 이벤트에 응답하거나 일정한 시간 간격으로 작업을 실행하는 서버리스 애플리케이션을 개발할 수 있습니다.

결론

AWS는 클라우드 컴퓨팅 분야에서 가장 큰 플레이어 중 하나로, 사용자에게 안정적이고 확장 가능한 인프라를 제공합니다. 다양한 서비스와 유연한 요금 모델은 비즈니스의 요구를 충족시키며, 안전성과 신뢰성을 보장합니다. AWS를 사용하여 비즈니스를 성장시키고 혁신적인 애플리케이션을 개발해 보세요.


자주 묻는 질문 (FAQs)

1. AWS를 사용하기 위해서는 어떤 기술적인 지식이 필요한가요?

AWS를 사용하기 위해서는 기본적인 클라우드 컴퓨팅 지식이 필요합니다. 특정 서비스를 사용할 경우 해당 서비스에 대한 이해가 필요할 수도 있습니다. AWS는 다양한 학습 자료와 자문 지원을 제공하므로, 초보자도 접근하기 쉽습니다.

2. AWS에서 제공하는 보안 기능은 어떤 것들이 있나요?

AWS는 다양한 보안 기능을 제공합니다. 이에는 네트워크 보안, 데이터 암호화, 액세스 제어, 보안 감사 등이 포함됩니다

. 또한, AWS는 규정 준수 및 보안 인증을 받은 서비스를 제공하여 데이터 보호에 대한 신뢰성을 보장합니다.

3. AWS를 사용하는 것이 비용 효율적일까요?

AWS는 Pay-as-you-go 모델을 채택하여 사용자가 실제로 사용한 리소스에 대해서만 비용을 지불하도록 합니다. 또한, 인프라 구축 및 유지 관리 비용을 절감할 수 있으며, 탄력적인 비용 모델을 통해 예산을 효율적으로 관리할 수 있습니다.

4. AWS는 어떤 유형의 기업에게 적합한가요?

AWS는 모든 규모의 기업과 개발자에게 적합합니다. 소규모 스타트업부터 대규모 기업까지 다양한 비즈니스 요구를 충족시킬 수 있는 다양한 서비스를 제공합니다.

5. AWS를 사용하여 어떤 유형의 애플리케이션을 개발할 수 있나요?

AWS를 사용하여 웹 애플리케이션, 모바일 애플리케이션, 데이터 분석 애플리케이션, 인공지능 및 기계 학습 애플리케이션 등 다양한 유형의 애플리케이션을 개발할 수 있습니다. AWS의 다양한 서비스와 도구를 활용하여 자신의 비즈니스 요구에 맞는 애플리케이션을 구축할 수 있습니다.

 

AWS는 Amazon Web Services의 약자로 Amazon이 제공하는 포괄적인 클라우드 컴퓨팅 플랫폼으로 컴퓨팅 성능, 스토리지, 데이터베이스 관리, 네트워킹 등을 위한 광범위한 온디맨드 서비스를 제공합니다.

 

 

 

아마존 웹서비스(AWS)의 대표적인 서비스들

 

1. Amazon EC2 (Elastic Compute Cloud)

Amazon EC2는 아마존에서 제공하는 탄력적인 컴퓨팅 리소스를 위한 클라우드 컴퓨팅 서비스입니다.

웹사이트를 전 세계에 배포하기 위해서는 전 세계 네트워크와 연결된 서버 컴퓨터가 필요합니다.

EC2는 웹 사이트를 배포하기 위한 서버 컴퓨터를 임대하는 서비스입니다. 이 서버 컴퓨터를 빌린 후 접속해서 마치 내 서버 컴퓨터인 것처럼 서버를 구축하는 작업을 할 수 있습니다. 이 서버 컴퓨터를 인스턴스라고 부릅니다.

범용적인 컴퓨터, 메모리 최적화, 가속화된 컴퓨팅 등 원하는 성능에 따라 다양한 컴퓨터를 제공하고 있어서 사용 용도에 맞춰서 골라서 사용할 수 있습니다.

 

2. Amazon RDS (Relational Database Services)

Amazon RDS (Relational Database Service)는 아마존에서 제공하는 관계형 데이터베이스 서비스로, 쉽고 확장 가능한 관계형 데이터베이스를 구축, 운영 및 확장할 수 있게 해 줍니다.

RDS 또한 서버컴퓨터인데, 데이터베이스 관리에 특화된 서버컴퓨터입니다. AWS에서 Amazon Aurora, MySQL, MariaDB, Oracle 등 다양한 데이터베이스 관리 시스템(DBMS)을 가상화 컴퓨터에 미리 설치해 둔 후 사용자들이 데이터베이스 기능만 사용하면 되게끔 준비를 해 둔 서비스입니다. 원하는 데이터베이스 관리 시스템을 선택한 후 사용할 수 있습니다.

 

3. Amazon S3 (Simple Storage Service)

Amazon S3 (Simple Storage Service)은 아마존에서 제공하는 확장 가능하고 내구성이 높은 객체 스토리지 서비스로, 웹 사이트, 애플리케이션 백엔드, 데이터 백업 등 다양한 용도로 사용됩니다.

쉽게 말해서 파일을 업로드하고 다운로드할 수 있는 파일 저장소입니다. 버킷이라고 부르는 폴더를 이 서비스 안에서 만들고, 원하는 파일(이미지, 파일, 동영상 등)을 업로드하면 원격으로 접근할 수 있는 주소를 제공합니다. 

 

4. Amazon SNS (Simple Notification Service)

Amazon SNS (Simple Notification Service)는 아마존에서 제공하는 신속하고 안정적인 메시지 및 알림 전송 서비스로, 다양한 플랫폼과 애플리케이션에 메시지를 발송하고 구독자에게 알림을 제공합니다.

쉽게 말해서 문자 메시지 전송 서비스입니다. 휴대폰 인증을 위한 인증코드 전송기능으로도 사용할 수 있는 서비스입니다.

 

5. Amazon VPC (Virtual Private Cloud)

Amazon VPC (Virtual Private Cloud)는 아마존에서 제공하는 가상 사설 네트워킹 환경으로, 사용자가 가상 네트워크를 설정하고 관리하여 클라우드 리소스를 안전하게 구축하고 연결할 수 있는 서비스입니다.

이 서비스는 프라이빗 네트워크 망을 제공합니다.

예를 들어 회사 내에서 각 부서별로 네트워크 망이 하나로 다 합쳐져 있으면 보안 이슈가 발생할 수 있습니다. 그럴 때 사설망을 쉽게 구축할 수 있게 도와주는 서비스입니다.

 

6. Route53

Route53는 아마존에서 제공하는 신뢰할 수 있는 관리형 DNS (Domain Name System) 웹 서비스로, 도메인 이름을 관리하고 인터넷 트래픽을 애플리케이션 또는 리소스로 라우팅 하는 기능을 제공합니다.

가비아(gabid)와 같은 도메인 마켓에서 도메인을 구매한 후 이 도메인을 사용하기 위해서는 AWS 이전을 해야 합니다.

Route53을 이용해서 쉽게 이전할 수 있습니다. 아마존에서 빌린 컴퓨터 IP에 도메인을 연결하는 서비스도 제공하고 있습니다.

 

7. Amazon ECS (Elastic Container Service)

Amazon ECS (Elastic Container Service)는 아마존 웹 서비스(AWS)의 컨테이너 오케스트레이션 서비스로, Docker 컨테이너를 쉽게 배포, 운영 및 확장할 수 있게 해 줍니다. ECS는 클러스터를 구성하여 컨테이너를 호스팅 하고, 애플리케이션의 확장성과 가용성을 높일 수 있는 도구와 기능을 제공합니다.

 

컨테이너 오케스트레이션 서비스는 여러 개의 컨테이너를 효율적으로 관리하고 조정하는 도구입니다. 컨테이너 오케스트레이션은 컨테이너화된 애플리케이션의 배포, 확장, 로드 밸런싱, 모니터링 등을 자동화하여 개발자가 애플리케이션을 쉽게 관리할 수 있도록 돕습니다.
이 도구를 사용하면 컨테이너를 여러 대의 서버 또는 호스트에 분산하여 실행하고, 컨테이너들 간의 통신이 원활하도록 설정할 수 있습니다. 또한, 컨테이너의 상태를 모니터링하고 필요에 따라 컨테이너를 자동으로 확장하거나 축소하여 애플리케이션의 성능과 가용성을 최적화할 수 있습니다.
컨테이너 오케스트레이션 서비스를 사용하면 애플리케이션의 배포와 관리를 단순화하고, 작업을 자동화하여 개발자가 시스템 인프라에 대한 부담을 줄일 수 있습니다. 이는 애플리케이션의 개발과 배포를 빠르게 수행할 수 있고, 확장성과 유연성을 향상할 수 있는 장점을 제공합니다.

 

Docker는 애플리케이션을 가상 상자 안에 넣어주는 도구라고 생각할 수 있습니다. 이 가상 상자를 컨테이너라고 부르는데, 각각의 컨테이너 안에는 애플리케이션 실행에 필요한 모든 것들이 포함되어 있습니다. 이렇게 컨테이너 안에 애플리케이션을 패키징하면 어디서든 실행할 수 있고, 다른 환경에서도 동일하게 작동할 수 있습니다. Docker를 사용하면 애플리케이션을 쉽게 배포하고 실행할 수 있고, 서버 관리도 간편해지는 장점이 있습니다.

 

클러스터란 여러 대의 컴퓨터나 서버가 모여 하나의 시스템처럼 동작하는 것을 말합니다. 이렇게 컴퓨터들이 모여 클러스터를 형성하면 작업을 분산시키고 처리 속도를 빠르게 할 수 있습니다. 예를 들어, 한 대의 컴퓨터로는 처리하기 어려운 복잡한 작업을 여러 대의 컴퓨터에 나눠서 처리하면 빠르게 완료할 수 있습니다. 또한, 하나의 컴퓨터에 장애가 발생하더라도 다른 컴퓨터가 작업을 계속 처리할 수 있어 시스템의 안정성을 높일 수 있습니다. 클러스터는 대용량 데이터 처리, 고성능 컴퓨팅, 웹 서비스 등 다양한 분야에서 활용되며, 작업을 효율적으로 분배하고 확장성을 갖춘 시스템을 구성하는 데 도움을 줍니다.

 

출처 <a href="https://kr.freepik.com/free-vector/www-icon_3327770.htm#query=%EC%82%AC%EC%9D%B4%ED%8A%B8%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&position=1&from_view=search&track=ais">Freepik</a>

 

 

 

배포(Deploy)란? 

전 세계에 내가 만든 사이트를 공개하는 것

 

전 세계 네트워크와 특정 주소(IP)로 연결된 컴퓨터(서버 컴퓨터)에 내 웹사이트를 설치(웹 페이지 또는 서버)하여 사람들이 특정 주소(도메인)로 들어오면 내가 만든 사이트가 보이게 하는 것이다.

 

일반적인 사람들은 전 세계 네트워크와 연결된 서버컴퓨터를 갖고 있지 않고, 갖추기 힘들다.

그렇기 때문에 쉽게 사용할 수 있도록 구축해 놓은 서비스들을 사용해야 한다.

대표적으로 Amazon Web Services(AWS), Microsoft Azure, Google Cloud가 있다.

 

예를 들어 AWS에서 IP를 빌려서 전 세계에 공개하는 것이다. 해당 IP에 직접 구매한 도메인을 연결해서 전 세계에 공개하면 배포가 완료되는 것이다.

 

그리고 웹사이트를 배포 한 후 얼마나 많은 사람들이 몇 시에, 어떤 기종으로, 어디서 접속하는지를 분석할 수 있다.

대표적으로 Google Analytics를 이용해서 웹사이트를 분석하는 것까지 하면 완벽한 배포를 했다고 볼 수 있다.

+ Recent posts