Firebase용 Cloud Storage를 사용하면 이미지 및 동영상과 같은 사용자 생성 콘텐츠를 업로드하고 공유할 수 있으므로 앱에 리치 미디어 콘텐츠를 구축할 수 있습니다. 데이터는 고가용성과 전역 중복성을 갖춘 엑사바이트 규모의 객체 스토리지 솔루션인 Google Cloud Storage 버킷에 저장됩니다. Firebase용 Cloud Storage를 사용하면 휴대기기와 웹브라우저에서 이러한 파일을 직접 안전하게 업로드할 수 있으므로 불규칙한 네트워크를 쉽게 처리할 수 있습니다.
전제 조건
아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .
기본 Cloud Storage 버킷 만들기
Firebase 콘솔 의 탐색 창에서 저장소 를 선택한 다음 시작하기 를 클릭합니다.
보안 규칙을 사용하여 Cloud Storage 데이터를 보호하는 방법에 대한 메시지를 검토하세요. 개발 중에 공개 액세스에 대한 규칙을 설정하는 것을 고려하십시오.
기본 Cloud Storage 버킷의 위치 를 선택하세요.
이 위치 설정은 프로젝트의 기본 Google Cloud Platform(GCP) 리소스 위치 입니다. 이 위치는 특히 Cloud Firestore 데이터베이스 및 App Engine 앱(Cloud Scheduler를 사용하는 경우 필요함)과 같이 위치 설정이 필요한 프로젝트의 GCP 서비스에 사용됩니다.
위치를 선택할 수 없다면 프로젝트에 이미 기본 GCP 리소스 위치가 있는 것입니다. 프로젝트 생성 중 또는 위치 설정이 필요한 다른 서비스를 설정할 때 설정되었습니다.
Blaze 요금제를 사용 중인 경우 각각 자체 위치 가 있는 여러 개의 버킷을 생성 할 수 있습니다.
완료 를 클릭합니다.
공개 액세스 설정
Firebase용 Cloud Storage는 데이터 구조화 방법, 색인 생성 방법, 데이터를 읽고 쓸 수 있는 시기를 정의할 수 있는 선언적 규칙 언어를 제공합니다. 기본적으로 Cloud Storage에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 데이터를 읽거나 쓸 수 있도록 제한됩니다. 인증 을 설정하지 않고 시작하려면 공용 액세스에 대한 규칙을 구성 할 수 있습니다.
이렇게 하면 앱을 사용하지 않는 사람을 포함하여 누구에게나 Cloud Storage가 개방되므로 인증을 설정할 때 Cloud Storage를 다시 제한해야 합니다.
앱에 Cloud Storage SDK 추가
모듈(앱 수준) Gradle 파일 (일반적으로<project>/<app-module>/build.gradle
)에서 Cloud Storage Android 라이브러리에 대한 종속성을 추가합니다. Firebase Android BoM 을 사용하여 라이브러리 버전 관리를 제어하는 것이 좋습니다. Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage-ktx' }
Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.
(대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가
Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage-ktx:20.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Cloud Storage library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage' }
Firebase Android BoM 을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.
(대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가
Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.
앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.
dependencies { // Add the dependency for the Cloud Storage library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-storage:20.1.0' }
클라우드 저장소 설정
Cloud Storage 버킷에 액세스하는 첫 번째 단계는 FirebaseStorage
인스턴스를 만드는 것입니다.
Kotlin+KTX
storage = Firebase.storage
Java
FirebaseStorage storage = FirebaseStorage.getInstance();
Cloud Storage를 사용할 준비가 되었습니다!
먼저 Cloud Storage 참조를 만드는 방법을 알아보겠습니다.
고급 설정
추가 설정이 필요한 몇 가지 사용 사례가 있습니다.
- 여러 지역 에서 Cloud Storage 버킷 사용
- 다양한 스토리지 클래스 에서 Cloud Storage 버킷 사용
- 동일한 앱에서 인증된 여러 사용자와 함께 Cloud Storage 버킷 사용
첫 번째 사용 사례는 전 세계에 사용자가 있고 사용자 근처에 데이터를 저장하려는 경우에 적합합니다. 예를 들어 미국, 유럽 및 아시아에 버킷을 만들어 해당 지역의 사용자에 대한 데이터를 저장하여 대기 시간을 줄일 수 있습니다.
두 번째 사용 사례는 액세스 패턴이 다른 데이터가 있는 경우에 유용합니다. 예를 들어 사진 또는 기타 자주 액세스하는 콘텐츠를 저장하는 다중 지역 또는 지역 버킷과 사용자 백업 또는 자주 액세스하지 않는 기타 콘텐츠를 저장하는 Nearline 또는 Coldline 버킷을 설정할 수 있습니다.
이러한 사용 사례에서는 여러 Cloud Storage 버킷을 사용하는 것이 좋습니다.
세 번째 사용 사례는 사용자가 여러 로그인 계정(예: 개인 계정 및 업무용 계정)을 가질 수 있는 Google 드라이브와 같은 앱을 빌드하는 경우에 유용합니다. 맞춤 Firebase 앱 인스턴스를 사용하여 각각의 추가 계정을 인증할 수 있습니다.
여러 Cloud Storage 버킷 사용
위에 제공된 기본값 이외의 Cloud Storage 버킷을 사용하거나 단일 앱에서 여러 Cloud Storage 버킷을 사용하려는 경우 맞춤 버킷을 참조하는 FirebaseStorage
인스턴스를 만들 수 있습니다.
Kotlin+KTX
// Get a non-default Storage bucket val storage = Firebase.storage("gs://my-custom-bucket")
Java
// Get a non-default Storage bucket FirebaseStorage storage = FirebaseStorage.getInstance("gs://my-custom-bucket");
가져온 버킷 작업
기존 Cloud Storage 버킷을 Firebase로 가져올 때 Google Cloud SDK 에 포함된 gsutil
도구를 사용하여 이러한 파일에 액세스할 수 있는 기능을 Firebase에 부여해야 합니다.
gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>
Firebase 프로젝트 소개에 설명된 대로 프로젝트 번호를 찾을 수 있습니다.
Firebase를 허용하도록 기본 액세스 제어가 설정되어 있으므로 새로 생성된 버킷에는 영향을 미치지 않습니다. 이는 임시 조치이며 향후 자동으로 수행됩니다.
맞춤 Firebase 앱 사용
맞춤 FirebaseApp
을 사용하여 더 복잡한 앱을 빌드하는 경우 해당 앱으로 초기화된 FirebaseStorage
인스턴스를 만들 수 있습니다.
Kotlin+KTX
// Get the default bucket from a custom FirebaseApp val storage = Firebase.storage(customApp!!) // Get a non-default bucket from a custom FirebaseApp val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")
Java
// Get the default bucket from a custom FirebaseApp FirebaseStorage storage = FirebaseStorage.getInstance(customApp); // Get a non-default bucket from a custom FirebaseApp FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");
다음 단계
앱 실행 준비:
앱만 스토리지 버킷에 액세스할 수 있도록 앱 체크 를 활성화하십시오.
Google Cloud Console에서 프로젝트에 대한 예산 알림 을 설정하세요.
Firebase Console에서 사용량 및 결제 대시보드 를 모니터링하여 여러 Firebase 서비스에서 프로젝트 사용량을 전체적으로 파악하세요. 더 자세한 사용량 정보를 보려면 Cloud Storage 사용량 대시보드 를 방문할 수도 있습니다.
Firebase 출시 체크리스트 를 검토하세요.