Open OutdatedGuy opened 6 months ago
I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
Are you connected to the storage emulator or production? If it's the former, I'll connect with that team. If it's the latter, it's probably because your local machine doesn't have production credentials and installing application default credentials locally may fix.
I'm connected to the emulator storage.
I'm testing my flutter app locally by connecting it to the locally hosted emulator.
When I upload a file from my flutter app to emulator storage it uploads successfully, then a cloud function runs and I'm unable to get that uploaded file's downloadUrl
in the Node.js (Typescript) Cloud Functions backend.
@inlined have you forwarded this issue with the relevant team? Can I get some updated on this?
In the mean time - is there anything I can do with the firestorage.rules file to fix this issue ? I am facing the same issue ? I have a nodejs app which I am testing with local emulators and I can upload to the storage but it hangs on getDownloadUrl
later.
This is a problem for me as well. It doesn't seem that the emulator should check rules at all when requests come in from the admin sdk.
Related issues
[REQUIRED] Version info
node: v20.10.0
firebase-functions: 4.8.0
firebase-tools: 13.3.1
firebase-admin: 12.0.0
[REQUIRED] Test case
```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}`); }); ```functions/src/index.ts
```rules rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if false; } } } ```storage.rules
[REQUIRED] Steps to reproduce
functions/src/index.ts
andstorage.rules
respectively.firebase emulators:start
uploadFile
function using postman or whateverstorage.rules
to allow all paths (i.e.allow read, write: if true;
)[REQUIRED] Expected behavior
As cloud functions don't rely on and basically bypass the
firestore.rules
,database.rules
andstorage.rules
, a download url should be fetched no matter what thestorage.rules
are set to.[REQUIRED] Actual behavior
Were you able to successfully deploy your functions?
Yes