AWS STS (Security Token Service)를 통해 임시 자격 증명을 만듭니다. 그리고 이러한 자격 증명을 사용하여 S3 JAVA SDK에서 S3로 파일을 업로드하십시오. 파일 업로드의 크기를 제한하는 방법이 필요합니다. 사용자를 만드는 동안 (s3 : content-length-range) 정책을 추가하려고했지만 작동하지 않는 것 같습니다. 사용자가 업로드 할 수있는 최대 파일 크기를 지정하는 다른 방법이 있습니까 ??AWS S3에서 파일을 업로드하는 동안 최대 파일 크기 지정
답변
업로드하기 전에 개체 크기를 제한 할 수있는 방법이 없다고 생각합니다. 그 반응은 매우 어려울 것입니다. 해결 방법은 람다 함수 또는 SNS 주제를 통해 코드를 트리거하는 S3 event notification을 작성하는 것입니다. 예를 들어 개체를 확인하거나 삭제하고 사용자에게 알릴 수 있습니다.
하지만 브라우저 기반 POST 정책에서는 콘텐츠 파일의 업로드를 제한 할 수있는 콘텐츠 길이 범위를 지정할 수 있다고 생각합니다. SDK에서도 같은 기능을 사용할 수 없습니다. –
'content-length-range'는 HTML 양식의'POST' 정책 조건입니다 (IAM 정책 조건이 아님). 미리 서명 된 양식을 사용하는 업로드는 이런 종류의 제한 사항을 지원하지만 이는 그러한 메커니즘뿐입니다. http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html –
다른 방법은 임시 자격 증명 대신 미리 서명 된 URL을 생성하는 것입니다. 당신이 지정한 이름을 가진 하나의 파일에 좋을 것입니다. 또한 URL을 생성 할 때 콘텐츠 길이 범위를 강제 설정할 수 있습니다. 사용자는 URL을 가져오고 요청에 대해 특정 방법 (POST/PUT/등)을 사용해야합니다. 다른 모든 것을 설정하는 동안 그들은 콘텐츠를 설정합니다.
나는 Java와 (이 조건에 대한 지원을하지 않는 것) 그렇게하는 방법을 잘 모르겠어요,하지만 Python and boto3로 간단합니다
import boto3
# Get the service client
s3 = boto3.client('s3')
# Make sure everything posted is publicly readable
fields = {"acl": "private"}
# Ensure that the ACL isn't changed and restrict the user to a length
# between 10 and 100.
conditions = [
{"acl": "private"},
["content-length-range", 10, 100]
]
# Generate the POST attributes
post = s3.generate_presigned_post(
Bucket='bucket-name',
Key='key-name',
Fields=fields,
Conditions=conditions
)
이 확실히 모든 단일 헤더 항목을 테스트 할 때 일치하지 않으면 막연한 액세스 거부 오류가 발생합니다. 완전히 일치 시키려면 시간이 걸릴 수 있습니다.
안녕하세요. 코드를 게시하여 다른 사람들이 이미 시도한 내용과 그 다음 조언 솔루션을 살펴보십시오. –