Vue.js - AWS S3 (AWS 설정 부분)
Web/JavaScript

Vue.js - AWS S3 (AWS 설정 부분)

AWS 설정 부분

1. Amazon S3 버킷 객체 생성

2. Amazon Cognito 자격 증명 풀 생성

    1. Amazon Cognito 링크

    2. 자격 증명 풀 만들기

    3. 인증되지 않은 자격 증명에 대한 액세스 활성화 체크

인증되지 않은 자격 증명에 대한 액세스 활성화 체크

    4. 풀 생성 클릭

 

3. Identity and Access Management(IAM)에서 Cognito 자격 증명 역할 ARN (Unauth_Role) 가져오기

    1. Amazon IAM 링크

    2. 왼쪽 메뉴 → 엑세스 관리 → 역할 → 생성한 Cognito 자격 증명 Unauth_Role 클릭

왼쪽 메뉴  → 엑세스 관리 → 역할  → 생성한 Cognito 자격 증명 Unauth_Role 클릭

    3. 역할 ARN 복사 및 저장

 

 

4. Amazon S3 버킷 객체 정책 설정

  • 생성한 버킷 객체 선택 → 권한 → 버킷 정책 편집 (정책 예제 및 정책 생성기 이용)
  • 키 설명
    • "Sid": 식별자
    • "Effect": "Allow": 허용 정책 (차단은 "Deny")
    • "Action": "s3:ListBucket": 버킷에 있는 파일 리스트 가져올때 사용 (리소스에 "/*" 사용하지 않음)
    • "Action": "s3:GetObject": 버킷에 있는 파일을 직접 가져올때 사용
    • "Principal": 역할 ARN (고유 역할 코드)
    • "Resource": 버킷 ARN (허용 리소스)
{
    "Version": "2012-10-17",
    "Id": "정책 번호",
    "Statement": [
        {
            "Sid": "식별자",
            "Effect": "Allow",
            "Principal": {
                "AWS": "Cognito 자격 증명 역할(Unauth_Role) ARN"
            },
            "Action": "s3:GetObject",
            "Resource": "버킷 ARN(arn:aws:s3:::버킷_이름)/*"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "Cognito 자격 증명 역할(Unauth_Role) ARN"
            },
            "Action": "s3:ListBucket",
            "Resource": "버킷 ARN(arn:aws:s3:::버킷_이름)"
        }
    ]
}

 

5. Amazon S3 버킷 객체 CORS 설정

  • 생성한 버킷 객체 선택 → 권한 → CORS(cross-orgin 리소스 공유) 편집
  • 키 설명
    • "AllowedHeaders": 허용 요청 헤더
    • "AllowedMethods": 허용 메소드 (REST API 형식)
    • "AllowedOrigins": 허용할 접속 사이트 (웹사이트 화이트리스트)
    • "ExposeHeader": 식별할 응답 헤더
    • "MaxAgeSeconds": 지정한 리소스에 대한 응답 캐싱 시간 (초 단위)
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "x-amz-server-side-encryption",
            "x-amz-request-id",
            "x-amz-id-2"
        ],
        "MaxAgeSeconds": 3000
    }
]

 

참고 링크 1: https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/s3-example-photos-view.html

 

브라우저에서 Amazon S3 버킷의 사진 보기 - AWS SDK for JavaScript

이 예제의 경우, 사진 파일의 파일명은 하나의 밑줄("_")로 시작해야 합니다. 이 문자는 나중에 필터링하는 데 중요합니다. 또한, 사진 소유자의 저작권을 존중해 주십시오.

docs.aws.amazon.com

참고 링크 2: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html

 

CORS configuration - Amazon Simple Storage Service

CORS configuration To configure your bucket to allow cross-origin requests, you create a CORS configuration. The CORS configuration is a document with rules that identify the origins that you will allow to access your bucket, the operations (HTTP methods)

docs.aws.amazon.com

참고 링크 3: https://www.enteroa.com/2020/11/05/s3-%EB%B2%84%ED%82%B7-cors-%EC%84%A4%EC%A0%95-json/

 

S3 버킷 CORS 설정 (json)

S3 의 CORS 설정이 기존 XML 방식에서 Json 방식으로 변경이 되었다 ‘ㅅ’a 웹콘솔에서 s3 버킷을 선택 하고 관리 탭의 하단에 있다. 사실 문법만 틀리겠지만 미리 정리를 해본다.   다음은 가장 일

www.enteroa.com

참고 링크 4: https://mygumi.tistory.com/362

 

[Cognito] 사용자별 파일 접근하기 :: 마이구미

이번 글은 AWS 의 S3, Congito 서비스를 이용한 하나의 예를 다뤄본다. 간단하게 S3 는 스토리지, Congito 는 사용자 관리를 할 수 있다. 두 서비스를 사용한 간단한 하나의 예로, 각 사용자만 접근할 수

mygumi.tistory.com

 

'Web > JavaScript' 카테고리의 다른 글

Vue.js - DOM 요소 접근  (0) 2021.08.30
Vue.js - AWS S3 (Vue.js 설정 부분)  (0) 2021.08.29
JavaScript - Axios (Ajax)  (0) 2021.08.29
Vue.js - Composition API  (0) 2021.08.29
JavaScript - 선언적 함수, 익명 함수, 화살표 함수  (0) 2021.08.29