<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>

클라이언트에서 메타데이터 전송

<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>