Closed as not planned
Closed as not planned
Description
Reposting this issue from firebase-functions firebase/firebase-functions#1547 as it seems to be an issue with the storage emulator rather than the functions SDK. Feel free to close and correct me if i'm mistaken here.
[REQUIRED] Environment info
firebase-tools: firebase-tools: 13.3.1
node: v20.10.0
firebase-admin: 12.0.0
[REQUIRED] Test case
index.ts
import {initializeApp} from "firebase-admin/app";
import {getDownloadURL, getStorage} from "firebase-admin/storage";
import {onRequest} from "firebase-functions/v2/https";
initializeApp();
export const uploadFile = onRequest(async (_req, res) => {
// Create a CSV string
const csvData = "Name,Email,Balance";
// Create a new file in the bucket
const bucket = getStorage().bucket();
const file = bucket.file("csvs/temp.csv");
// Write the csv data to the file
await file.save(csvData, {
metadata: {
contentType: "text/csv",
},
});
// Get the download url
const downloadUrl = await getDownloadURL(file);
res.send(`Download URL: ${downloadUrl}`);
});
With rules:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
[REQUIRED] Steps to reproduce
- Create a new firebase cloud functions project with typescript and storage emulator
- Copy the above provided sample codes in functions/src/index.ts and storage.rules respectively.
- Run firebase emulators:start
- Send request to the uploadFile function using postman or whatever
- See error / crash
- Now update storage.rules to allow all paths (i.e. allow read, write: if true;)
- Repeat step 4
- See a download url is sent
[REQUIRED] Expected behavior
As cloud functions don't rely on and basically bypass the firestore.rules
, database.rules
and storage.rules
, a download url should be fetched no matter what the storage.rules are set to.
[REQUIRED] Actual behavior
functions: Error: Permission denied. No READ permission.