Closed wynter122 closed 1 year ago
presigned-url은 그대로 진행해도 될 것 같은데 aws 설정하는거 두 가지만 추가주세요!
{
"Version": "2012-10-17",
"Id": "Policy1679298878034",
"Statement": [
{
"Sid": "Stmt1679298863378",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::flutter-img-test/*"
}
]
}
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"x-amz-server-side-encryption",
"x-amz-request-id",
"x-amz-id-2"
],
"MaxAgeSeconds": 3000
}
]
고생하셨어요!
@lucyya99
{
"Version": "2012-10-17",
"Id": "Policy1679298878034",
"Statement": [
{
"Sid": "Stmt1679298863378",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::flutter-img-test/*"
}
]
}
위 내용에서 정확히 무슨 내용을 넣어야하는지 알 수 있을까요? 예를들어 Resource 의 경우 저희 서비스에서 사용하는 실제 s3 버킷의 arn 을 삽입해야합니다. 현재 명시하신 정책에서는 예지님의 테스트용 s3 arn 같네요. 그 외에 principal의 경우에도 * 오퍼레이터를 넣게 되면 보안상 취약해집니다. 필수적으로 넣어야하는 정책이 무엇인지, 해당 정책은어떤것을 의미하는지 알려주시면 좋겠습니다.
CORS 의 경우 s3 -> 외부로 데이터를 불러올 때 필요한 정책으로 알고있습니다. 해당 버킷에서는 클라이언트단에서 s3 에 put 하기 위한 정책만 필요하기 때문에 CORS 설정은 불필요하다고 생각되는데 CORS 가 필요한 이유가 있나요?
+ 추가개발 사항이나 관련해서 처리할 이슈가 있다면 approve 나 merge 를 하지 않는게 일반적이니 참고하시면 좋을 것 같아요!! :)
기존에 s3 정책에서 GetObject 가 아닌 PutObject 가 필요할 것 같아 다음과 같이 수정해둔 상태입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::705158357653:user/server"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::user-human-img",
"arn:aws:s3:::user-human-img/*"
]
}
]
}
presigned url 을 생성하는 코드는 ec2 server 에 반영해두었으니 서버 켜서 api 요청 보내 동작 확인 해보시면 되겠습니다. 오류가 있거나 업로드가 잘 되지 않는다면 꼭 오류 메세지와 함께 알려주세요.
6 #55 에 관련된 PR 입니다.
작업내용
s3 의 user-human-img 버킷에 사용자별 이미지를 보관하기위해 일시적인 접근 권한이 필요합니다. 현재 버킷의 정책은 다음과 같이 지정되어있습니다.
클라이언트
서버 예시로 다음과 같이 url 반환
추가적인 정보
url 의 유효 seconds 는 여유잡아서 300초로 지정했습니다.