본문 바로가기
AWS/AWS Cloud School

[AWS] Cloud Technical Essentials - 2

by parkkingcar 2023. 11. 9.

 

서기옥님이 진행하는 Cloud Practitioner Essentials 과정을 기반으로 작성한 글 입니다. AWS 클라우드, AWS 제품, 서비스 및 일반 솔루션에 대한 내용과 그 실습으로 진행하였습니다. 아래 실습은 웹 애플리케이션 서버와 IAM역할 등이 구축된 리소스 환경을 전제로 작성하였습니다.

 

2. Amazon S3 버킷과 Amazon DynamoDB

 

• Amazon Simple Storage Service(Amazon S3) 버킷 생성 

• S3 버킷 정책 생성 

• S3 버킷을 사용하도록 애플리케이션 수정 

• S3 버킷에 객체 업로드 

• Amazon DynamoDB 테이블 생성 

• 애플리케이션 웹 인터페이스를 사용하여 애플리케이션 테스트

• AWS Management Console을 사용하여 기존 DynamoDB 항목 관리 

• AWS Management Console을 사용하여 DynamoDB 테이블에서 항목 생성

 

 

 

아래 다이어그램과 같이 구축된 리소스 환경에서 진행합니다.

 

 

 

이전 실습에서 구축한 웹 어플리케이션에 브라우저로 접속하면 아래와 같이 표시됩니다. 페이지를 살펴보면 S3와 DynamoDB에 대해 경고메시지를 표시하고 있습니다. 이를 정상적으로 사용하기 위해 S3와 DynamoDB의 구성을 수정하겠습니다.

 

 

 

 

S3 버킷을 생성하겠습니다. 먼저 관리콘솔 상단에 S3를 입력하여 선택합니다.

 

 

 

아래의 버킷 만들기를 클릭합니다.

 

 

 

 

버킷 이름을 'employee-photo-bucket-<INITIALS>-<NUMBER>' 형식으로 입력하고 알맞은 리전을 선택합니다. (이때 주의할 점은 버킷은 전역에서 고유한 이름을 가져야합니다. 중복된 이름을 허용하지 않습니다.) 이후 모든 설정을 기본 설정으로 한 뒤 버킷 만들기를 클릭합니다.

 

 

 

 

이제 버킷 정책을 생성합니다. 생성한 버킷을 클릭합니다.

 

 

 

 

권한 탭을 클릭하고 아래 버킷 정책의 편집을 클릭합니다.

 

 

 

 

아래 정책에 다음과 같이 입력하고 변경 사항 저장을 클릭합니다.

 

Effect에서 Allow 또는 Deny를 지정하여 권한을 정합니다. Principal은 액세스를 요청하는 주체를 지정합니다. 아래에서는 IAM역할을 사용하여 애플리케이션에서 S3 버킷으로 읽기 액세스를 허용합니다. Action은 허용되는 작업의 범위를 지정합니다. (S3:*를 통해 모든 권한을 부여하지만, 실제로는 최소권한만을 부여해야 합니다.) Resource는 정책이 적용되는 리소스를 지정합니다. 위에서 생성한 버킷에 대해 첫 번째 리소스는 버킷 자체에 대한 액세스를 나타내고, 두 번째 리소스는 버킷 내의 모든 객체에 대한 액세스를 나타냅니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3ReadAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::000000000000:role/EmployeeDirectoryAppRole"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::employee-photo-bucket-abc-1234",
        "arn:aws:s3:::employee-photo-bucket-abc-1234/*"
      ]
    }
  ]
}

 

위의 Principal에서 AWS에 해당하는 부분은 아래 생성한 IAM 역할의 ARN값을 확인하여 입력하면 됩니다.

 

 

 

애플리케이션이 있는 브라우저로 돌아갑니다. Administration탭의 Configuration를 클릭합니다. 아래의 Change를 클릭하고S3 Bucket부분에 위에서 생성한 버킷의 이름(employee-photo-bucket-abc-1234)을 입력하고 Save를 클릭합니다.

 

 

 

이렇게 S3 버킷과 애플리케이션이 연결된 것을 확인할 수 있습니다.

 

 

 

이제 S3 버킷에 객체를 업로드합니다. 생성한 버킷을 클릭합니다.

 

 

 

아래에 업로드를 클릭합니다. 

 

 

 

파일 추가를 클릭하여 사진을 업로드 합니다. 아래 업로드를 클릭합니다.

 

 

 

 

다시 애플리케이션의 Employees의 Images 탭을 클릭하면 아래와 같이 업로드한 사진을 확인할 수 있습니다.

 

 

 

 

이제 DynamoDB를 애플리케이션과 연결하겠습니다. 먼저 DynamoDB 테이블을 생성합니다. 콘솔 상단 검색에서 DynamoDB를 검색하고 선택합니다.

 

 

 

아래 테이블 생성을 클릭합니다.

 

 

 

아래 테이블 이름을 'Employees'로 입력하고 파티션 키를 'id'로 입력하고 문자열을 골라 설정합니다. 다른 설정을 기본 설정으로 유지하고 하단 테이블 생성을 클릭합니다.

 

 

 

이름이 Employees인 테이블이 생성되었습니다.

 

 

 

다시 애플리케이션 탭으로 돌아가서 Employees의 Management 탭으로 이동합니다. 이후 Actions를 드롭다운하여 New Employee를 클릭합니다.

 

 

 

다음과 같이 Name, Location, Email 부분을 입력하고 사진을 선택하여 직원을 생성합니다.

 

 

 

 

이제 DynamoDB에 데이터가 추가되었는지 확인합니다. DynamoDB콘솔에서 테이블을 클릭하고 Employees 테이블을 선택합니다.

 

 

 

 

표 항목 탐색을 클릭합니다.

 

 

 

아래 반환된 항목 부분에서 생성한 데이터를 확인 할 수 있습니다. 데이터의 id부분을 클릭하면 데이터를 편집하거나 JSON 형식으로 데이터를 확인할 수 있습니다.

 

 

 

아래와 같이 데이터를 변경하면 잘 반영되는 것을 확인할 수 있습니다.

 

 

 

관리 콘솔에서 직접 데이터를 추가할 수도 있습니다. DynamoDB 콘솔 테이블의 항목 탐색을 선택하고 반환된 항목에서 항목 생성을 클릭합니다. 

 

 

 

아래와 같이 속성을 추가하여 이름과 값을 입력하고 아래 항목 생성을 클릭합니다.

 

 

 

그러면 데이터가 생성되고 애플리케이션에서 생성한 데이터를 확인할 수 있습니다.

 

 

 

최종적으로 아래 다이어그램과 같은 인프라를 확인할 수 있습니다.

 

댓글