오류난 상황 설명
외부(Colab)에서 s3 객체를 불러오고 싶었는데, 다음과 같은 오류가 떴다.
getFileStatus on s3a://(버킷명/(불러올파일).json: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: ---; S3 Extended Request ID:
찾아보니, 이는 S3버킷 권한 문제로 인해 발생한 것이라고 한다.
저 당시 나는 "분명 S3버킷 생성할 때 모두 public으로 설정했는데 그러면 되어야 하는거 아니야? ? ? " 이랬는데,
이는 권한하고는 다른 문제인 것으로 보인다.
해결 방법
본론으로 넘어가서 해결방법은 다음과 같다.
출처에 남긴 블로그 보고 해답을 얻었는데, s3의 버킷으로 가서 권한 설정을 아래와 같이 바꿔주면 된다.
캡쳐 사진에 나와 있듯이, 여기서 json으로 작성한 버킷 정책은
버킷에 "저장된 객체"에 대한 액세스 권한을 제공한다고 한다.
아래의 JSON 으로 작성된 정책은 AWS S3에서 객체를 다른 사용자들에게 공개적으로 읽기 권한을 부여하는 정책이다.
그러니 외부로 공개/접근해도 될 객체만 신중히 권한을 부여하도록 하자.!
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::(버킷명)/*"
}
]
}
- Version: 해당 정책의 버전 정보
(참고로 오늘 날짜썼다가 맞지 않는 형식이라고 떴다,.. 해당 '정책의 버전 정보'이니 정책에 맞는 버전 정보를 입력하자) - Statement: 정책이 적용될 하나 이상의 규칙을 포함하는 배열
- Sid: 규칙에 대한 식별자 (선택적인 값). 규칙이 여러 개일 때 각각의 규칙을 구별하기 위해 사용됨
- Effect: 규칙이 적용될 효과. Allow시 해당 규칙의 작업이 허용되며, Deny시 해당 작업이 거부됨
- Principal: 규칙이 적용될 대상. *는 모든 사용자에게 규칙이 적용됨.
만약 특정한 사용자or그룹에 대한 규칙을 지정하려면, IAM 사용자 또는 그룹 ARN을 지정해야함 - Action: 규칙이 허용하는 작업.
s3:GetObject로 설정하면 다른 사용자가 해당 버킷 내의 모든 객체를 읽을 수 있음. - Resource:규칙이 적용될 S3 버킷과 객체를 식별하는 Amazon 리소스 이름(ARN)입니다.
위 코드는 (버킷명)과 *을 사용하여 모든 객체에 대한 읽기 권한을 부여하도록 설정됨.
참고 :
https://wakestand.tistory.com/300
'#️⃣ Cloud&Container > AWS' 카테고리의 다른 글
[AWS] Colab에서 Redshift 작업시 ActiveSqlTransaction 오류해결 (0) | 2023.05.26 |
---|---|
AWS Redshift 톺아보기 (0) | 2023.05.25 |
[AWS] Elastic Beanstalk 구축 실습 (0) | 2023.05.15 |
[AWS] 쉽고 빠르게 프리티어 EC2 만들기 (0) | 2023.04.24 |
[AWS-SAA] Region, IAM (0) | 2022.06.02 |