<aside>
미리 서명된 URL 생성: 미리 서명된 URL을 생성할 때, 업로드할 파일의 메타데이터를 포함하여 보낸다.
</aside>
정형화된 메타데이터의 필요성
미리 서명된 URL 로직 적용 과정
<aside>
메타데이터 스키마 정의
메타데이터 생성 로직
클라이언트에서 메타데이터 전송
메타데이터 저장 및 관리
</aside>
메타데이터 스키마 정의
<aside>
예시 클라이언트 단에서
{
"originalFileName": "string", // 업로드된 파일의 원래 이름
"uploadedBy": "string", // 업로드한 사용자 ID
"uploadDate": "string", // 업로드 날짜 (ISO 8601 포맷)
"contentType": "string", // MIME 타입 (예: image/jpeg)
"size": "integer" // 파일 크기 (바이트 단위)
}
</aside>
메타데이터 생성 로직/ 자동 수집
<aside>
originalFileName: 파일 선택 시 클라이언트에서 자동으로 가져올 수 있습니다.uploadedBy: 로그인한 사용자 정보를 클라이언트에서 가져옵니다.uploadDate: 클라이언트에서 현재 날짜를 생성하여 사용합니다.contentType: 클라이언트에서 파일의 MIME 타입을 확인하여 사용합니다.size: 파일 크기를 클라이언트에서 확인하여 사용합니다.
</aside>클라이언트에서 메타데이터 전송
<aside>
클라이언트에서 서버로 presigned URL 요청을 보낼 때, 정의한 메타데이터를 함께 전송합니다.
const response = await axios.get('/generate-presigned-url', {
params: {
bucketName: 'your-bucket-name',
objectKey: `${uploadPath}/${file.name}` // 동적으로 경로 설정
metadata: metadata, // 메타데이터 포함
}
});
const presignedUrl = response.data;
// 파일 업로드
await axios.put(presignedUrl, file, {
headers: {
'Content-Type': file.type
}
}
예를 들어, 요청 본문에 메타데이터를 포함할 수 있습니다.
</aside>