[Web] 최종프로젝트(8) Aws S3 bucket + IAM

hyewon jeong·2023년 3월 3일
1

web

목록 보기
11/24

📌01 .S3 bucket생성

추후 S3와 도메인 연결이 필요할경우 반드시 S3버킷이름을 도메인명과 동일하게 해줘야한다. ! 그이유는 ??

아래링크 클릭
https://velog.io/@wonizizi99/Web-EC2-%EC%99%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0-feat.-%EA%B0%80%EB%B9%84%EC%95%84

1. ⚡️버킷 만들기

👉 버킷은 S3에서 파일을 저장하는 폴더라고 생각하시면 됩니다.
우리가 컴퓨터를 사용할 때 폴더 안에 파일을 저장하는 것처럼
S3에서도 버킷 안에 파일을 저장합니다.

버킷 만들기에 보이는 옵션들은 전부 사용하지는 않습니다.
서비스의 상황에 따라 그때그때 찾아보면서 사용하는 것을 추천드립니다 😀

그럼 버킷 만들기 버튼을 클릭해볼까요!!
  • 일반구성
    👉 **버킷이름**: 이름은 무수히 많은 버킷중에 고유한 이름이어야 합니다. 
                     (이유는 나중에 알려드려요!! 기대하세요~ 😛)
    **AWS 리전**: 앞에서 배웠던 리전을 선택합니다.
    **기존 버킷 복사**: 기존 버킷의 설정을 그대로 사용할때 유용합니다.
    

  • 엑세스 차단 설정
    👉 **액세스 차단 설정**은 버킷에 저장한 파일의 권한을 설정하는 기능입니다.
    **퍼블릭 엑세스**: 버킷이 생성되면 고유한 URL이 부여됩니다. URL을 통해서 
                             저장된 파일에 접근 할수 있게 하는 기능입니다. 
    **ACL**: 액세스 제어 목록으로 버킷과 객체에 대한 액세스를 관리합니다.
    


추후 에러 발생으로 차단설정을 해제한다. 그 내용은 아래에 나온다.

  • 버킷버전관리

     👉 **버전관리**는 개발할때 소스를 git, svn으로 관리하는 것처럼 
     버킷내의 파일들을 버전을 관리할 수 있는 기능입니다.
    
     

  • 태그

        👉 **태그**는 해당 버킷을 태깅해놓고 이후에 비용측정이라던지 
        많은 버킷중에 태그로 검색을 한다던지 할때 쓰는 태깅 기능입니다.

        
  • 기본암호화

        👉 **암호화**는 말그대로 파일들을 암호화해서 좀더 보안적으로 신경써서 관리하게 해주는 기능입니다.

  • 고급설정

        👉 **객체 잠금**은 보시는 것과 같이 고~~급 설정입니다.
        중요한 파일이 버킷에 저장되면 보안에 좀 더 신경써야겠죠!!
        이런경우 사용하는 기능입니다.

  • 🙏버킷만들기 클릭
  • 버킷생성 확인
      ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c08b83a4-ac83-4520-a315-c4b63caa7d4b/_2021-03-26__4.59.04.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c08b83a4-ac83-4520-a315-c4b63caa7d4b/_2021-03-26__4.59.04.png)
      

2. 파일 업로드 해보기

👉 버킷이 잘 생성되셨나요❓
그럼 바로 파일을 저장해 볼게요 파일 저장은 업로드 버튼 클릭해서
업로드할 파일을 추가하고 저장하면 됩니다.
  1. 버킷선택

  1. 업로드 화면 이동 & 파일 추가 & 그 외 옵션

    👉 업로드할 파일을 추가합니다.
    대상 탭에 보시면 업로드할 파일이 어떤 옵션을 가지는지 보이고요
    추가 업로드 옵션을 사용하여 버킷을 만들 때 설정했던 옵션들을 업로드할 때 
    다시 설정할 수 있습니다.
    
    🍯  앞에서도 알려드렸듯이 AWS의 제품들에는 옵션들이 엄청 많아요!!
    옵션들을 전부 알고 있을 필요는 없고 필요할 때 찾아서 쓰시면 됩니다.

  1. 👌 업로드 완료

3. 파일 확인 해보기

  1. 파일 리스트 확인
        
  2. 파일 정보 확인

  1. 객체 URL 확인하기

    👉 S3에 업로드 되는 모든 파일에는 객체 URL이 부여됩니다.
    해당 URL을 브라우저 주소창에서 호출하면 업로드된 파일이 보입니다.

    하지만 파일에 권한을 퍼블릭 하게
    주지 않았기 때문에 AccessDenied 라는 에러가 보입니다.

  • AWS 도 디버깅이 필요하다 (access Denied 는 파일이 있긴 한데 이 파일에 대한 소유권이 없어서 생기는 에러임,즉 권한문제!!)

에러 해결 과정 ~

  • 파일 저장소의 권한에서 ACCESS 는 쉽게 파일읽기/쓰기 이다.
 에러 원인 : 객체 소유자는 나로 되어 있고 , 나만 객체 읽기 쓰기 가 되어 

해결 하려면 [모든사람(퍼블릭 엑세스)] 로 바꿔줘야한다. [편집] 클릭 

  • 편집이 클릭 되지 않는다면 [버킷 소유자 적용 클릭] - 활성화 로 변경 - 복원 어쩌고에 동의하는 칸에 클릭 하고 다시 페이지를 보면 편집버튼이 활성화가 된다.

  • 다시 편집 클릭

여전히 모든사람에 대한 읽기/쓰기가 비활성화 되어 있다. 이유는 노란색 박스에 있음.

적재적소하게 맞는 걸로 체크하여 설정 하면됨 ( 실습 중엔 체크하지 않아 다 허용할 수 있게함)

  • ⚠️  버킷의 권한은 서비스의 쓰임에 따라 설정하면됨

예> 퍼블릭한 버킷 하나/ 퍼블릭하지 않은버킷 하나 를 두는 방법 또는 한 버킷 안에서 퍼블릭파일과 퍼플릭하지 않은 파일로 나누기도 함

여전히 에러

  • 다시 버킷 클릭 - 파일클릭 해서 보면

버킷의 권한이 퍼블릭 하다고 해서 파일까지 퍼블릭이 자동으로 적용되지 않는다. 그래서 업로드할 파일이나 업로드된 파일은 별도로 권한 설정이 필요함.

⚠️ 또는 presigned url 할때 설정값인데 이것을 하고나면 버킷이름 아래에 빨간박스로 퍼블릭에세스가능 → 이미지 보임

버킷정책생성기 이용하여 작성할 수 있음

버킷 - 권한 - 버킷 정책 - 편집



Select Type of Policy: S3 Bucket Policy
Effect: Allow
Principal:
Actions: GetObject, PutObject ( 때에 따라 다름)
Amazon Resource Name (ARN): 해당 버킷 ARN 입력
-> ARN은 이전 창에서 복사할 수 있다.

Add Statement 클릭 - 내용 확인 후 Generate Policy 클릭 - json 내용 복사
참고로 나의 경우 Resource 부분 뒤에 "/
" 부분을 추가해줘야 접근이 가능했다.

복사한 내용 붙여넣기 - 변경 사항 저장

권한 개요에 "퍼블릭" 문구가 생기면 성공이다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:Put*",
                "s3:Get*"
            ],
            "Resource": "arn:aws:s3:::[내버킷이름넣기]/*" 
        }
    ]
}

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "HEAD",
            "GET",
            "PUT",
            "POST"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "ETag"
        ]
    }
]

한 후 다시 브라우저로 새로고침하면 이미지 파일이 잘 업로드 된 것을 볼 수 있음

📌 02 .**IAM ( AWS Identity and Access Management )**

02 IAM 설정법

💡해결법

해당 링크 보고 직접 엑세스 키 ID, 비밀 엑세스 키 생성하기

**계정 액세스 키 ID와 보안 액세스 키를 얻는 방법은 다음과 같습니다.**

AWS 계정 및 액세스 키 - AWS Tools for PowerShell

메모해 둘것 ( 유출 조심)
엑**세스 키 ID :

**비밀 엑세스 키 :

profile
개발자꿈나무

0개의 댓글