아우라베이스 로고
아우라베이스문서
문서›가이드›Store and serve files (SDK)

JavaScript SDK를 사용하여 파일 저장 및 제공

실행 중인 스택에 대해 관찰되는 액세스 규칙이 포함된 aura.storage의 일상적인 흐름입니다.

8분 읽기·레벨 중급·2026. 10. 12.에 개정됨
이 영어 텍스트는 프랑스어 원본에서 자동으로 생성되었으며 아직 검토되지 않았습니다.
이 페이지는 자동으로 번역되었습니다. 영어 버전은 권위가 있습니다.
#
버킷

1. 버킷

버킷은 파일을 그룹화하고 공개 여부를 결정합니다. 버킷을 생성하고 삭제하려면 service_role 키가 필요합니다. 이를 나열하려면 로그인한 사용자 또는 service_role 키가 필요합니다. 공개 키만으로도 403를 얻습니다.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // 누구나 파일을 읽을 수 있습니다
await admin.storage.createBucket('invoices', { public: false })  // 오직 주인만이 할 수 있다
const { data: buckets } = await admin.storage.listBuckets()

버킷은 fileSizeLimit(바이트 단위) 및 allowedMimeTypes도 허용합니다. 너무 큰 업로드는 413를 반환하고 허용되지 않는 유형은 400을 반환합니다.

#
파일

2. 업로드, 다운로드, 나열, 제거

files.tstypescript
const bucket = aura.storage.from('invoices')

// 업로드: Blob, 파일 또는 ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { 키, 버킷, URL, 크기, content_type, etag }

// 기존 파일 바꾸기
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// 폴더 나열, 다운로드, 제거
const { data: files } = await bucket.list(user.id)
const { data: blob } = await bucket.download(`${user.id}/2026-10.pdf`)
await bucket.remove([`${user.id}/2026-10.pdf`])

무엇을 기대할 것인가:

  • upsert: true를 전달하지 않으면 기존 경로를 업로드하면 409이 반환됩니다.
  • 업로드하려면 로그인한 사용자 또는 service_role 키가 필요합니다. 공개 버킷의 경우에도 공개 키만으로도 403를 얻습니다.
  • ..이 있는 경로는 400로 거부됩니다.
  • 경로는 버킷 내부에서 공유됩니다. 다른 사용자가 이미 경로를 가지고 있는 경우 409를 얻습니다. 각 사용자의 파일을 ${user.id}/…와 같은 자신의 폴더에 넣습니다.
#
공유

3. 파일 공유

share.tstypescript
// 공개 버킷의 파일: 요청 없이 구축된 영구 URL
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// 비공개 파일: 임시 링크
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { URL, 만료 날짜: 60 }

두 링크 모두 키 없이 가져와서 파일을 반환했습니다. 서명된 링크는 expires_in초 후에 작동이 중지됩니다. 키 없이 브라우저가 업로드할 수 있도록 서버는 createSignedUploadUrl(path)(service_role 호출)을 발행합니다.

#
액세스

4. 누가 무엇을 할 수 있는가

액션공개키로그인한 사용자service_role
공개 버킷의 파일 읽기응응응
읽기, 비공개 버킷의 파일 나열아니소유자만응
업로드아니응응
파일 바꾸기 또는 제거아니소유자만응
버킷 나열아니응응
버킷 생성, 삭제아니아니응

소유자는 파일을 업로드한 사용자입니다. 실제 실행에서는 두 번째 사용자가 프라이빗 버킷에 있는 첫 번째 사용자의 파일을 나열, 다운로드 또는 제거할 수 없었고 파일을 교체할 수도 없었습니다.

#
서버

5. 서버에서 이동 및 복사

server/organise.tstypescript
await admin.storage.copy('invoices', 'a/hello.txt', 'a/copy.txt')
await admin.storage.move('invoices', 'a/copy.txt', 'a/moved.txt')
const { data: meta } = await admin.storage.getMetadata('invoices', 'a/hello.txt')

이미지 크기 조정은 저장소 참조에 설명되어 있습니다.

마지막 업데이트 · 2026. 10. 12.