그대로 따라했는데 403 Forbidden이 났어요. 무엇이 문제인지 분석해 봅시다.
- 버킷 및 객체 소유권
- aws s3api list-buckets --query Owner.ID
- aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET
- 비교해보니 Owner.ID가 잘 들어있네요.
- 버킷 정책 또는 AWS Identity and Access Management(IAM) 사용자 정책: Bucket policy가 비어있다면 패스
- IAM 권한 경계: Permissions boundary 없으니 패스
- Amazon S3 퍼블릭 액세스 차단 설정: 퍼블릭 아니니까 패스
- Amazon S3에 액세스하기 위한 자격 증명: 무슨 얘기인지 모르겠네요. 뭘 확인해야할까요?
- 임시 보안 자격 증명
- CloudTrail로 로그를 살펴봅니다. 그런데 좀 이상해요, 왜 request가 unAuth role일까요? auth role로 들어와야 하는 거 아닌가??
- Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 정책: 해당사항 없음
- Amazon S3 액세스 포인트 정책: 액세스 포인트 없으므로 패스
- 누락된 객체 또는 특수 문자가 있는 객체: head-object 명령으로 잘 나오네요.
- AWS Key Management Service(AWS KMS) 암호화
- 버킷에 요청자 지불이 활성화됨
- AWS Organizations 서비스 제어 정책
돌이켜 생각해 보면, Node.js 앱에서는 잘 되고 ACL 설정에서 Authenticated users group에 List 허용만 해도 잘 되는데,
Node.js는 credentials이 필요없는데 반해(환경변수로 해결) React에서는 credentials을 적용해야 하므로 문제는 이 부분인 것 같습니다. amplify add storage로 생성된 S3에 권한문제가 발생한다니 좀 이상하긴 하지만... 구글링 해도 별로 쓰는 사람도 없는 것 같고 인기가 없어서 버그가 많은가...
const options = {
region: REGION,
credentials: fromCognitoIdentityPool({
clientConfig: { region: REGION },
identityPoolId: IDENTITY_POOL_ID
})
}
S3 직접 만들기
튜토리얼을 참고하여 Bucket을 새로 만들고 policy를 만들어 IAM 유저 auth/unauth에 추가해줍니다. CORS도 설정해줍니다.
그런데도 403 오류가 나네요. 계정에 총체적인 문제가 있나 본데...... 하던 찰나,
범인은 Bucket policy!
ACL 끄고 Block all public access : off하고 아래와 같이 Bucket policy 추가해주니 되네요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::~~~~~~~~~~~~:role/amplify-~~~~~~-authRole",
"arn:aws:iam::~~~~~~~~~~~~:role/amplify-~~~~~~-unauthRole"
]
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::bucket_name",
"arn:aws:s3:::bucket_name/*"
]
}
]
}
여전히 이상한 건 당연히 자격 증명했으니 authRole로 요청이 들어와야할 것 같은데 unauth로 들어오네요. 때문에 위에서 authRole을 빼면 403이 또 나고요. 아직도 뭔가 이상하네요.
언제부턴가 Amplify 콘솔에서 - dev - authenticate 항목으로 들어가면 화면이 먹통되는데 뭔가 제대로 authRole로 안 넘어가는 것 같기도 하고 새로 만들어도 안되는 거 보면 계정 자체가 뭔가 꼬인 건가 싶기도 하고.
'IT > Network & OS' 카테고리의 다른 글
[SW Architecture] Tactics apllied to WebRTC (0) | 2023.03.05 |
---|---|
MAC OS 이슈 모음 (0) | 2022.10.30 |
[AWS] S3 SDK (0) | 2022.04.09 |
[AWS] IoT + React App + Amplify (0) | 2022.02.23 |
[AWS] IoT (0) | 2022.02.21 |