Storage in your own GCP bucket(s)
This guide shows how to create a Google Cloud Storage bucket, grant Birdie access, configure CORS, and verify the configuration before running a quick test.
Create a bucket
In the Google Cloud Console, open the left menu and go to Storage → Buckets.
Click Create.
Name: enter a unique name, e.g.
acme-screen-recordings
Click Continue through the remaining steps, keeping all defaults:
Public access prevention: Enforced (recommended).
Encryption: Google-managed (default).
Keep all other defaults unless your security team requires specific settings.
Grant Birdie access
After the bucket is created, click its name to open the bucket details.
Go to the Permissions tab.
Under View by principals, click + Grant access.
New principal:
[email protected]
Role: Cloud Storage → Storage Admin
Click Save.
This role allows Birdie to upload, read, list, and delete objects inside your bucket. The bucket remains private.
Configure CORS (one-time)
We’ll allow Birdie’s web app to securely upload and play videos from your bucket.
In the top-right of the Console, click the terminal icon labeled Activate Cloud Shell. (Approve any prompts to start the shell.)
Paste the commands below. 👉 Replace
acme-screen-recordings
with your bucket name.
cat > cors.json <<'EOF'
[
{
"origin": ["https://app.birdie.so", "https://share.birdie.so"],
"method": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"responseHeader": ["*"],
"maxAgeSeconds": 3600
},
{
"origin": ["*"],
"method": ["GET", "HEAD"],
"responseHeader": ["*"],
"maxAgeSeconds": 1800
}
]
EOF
gsutil cors set cors.json gs://acme-screen-recordings
You should see something like:
Setting CORS policies for gs://acme-screen-recordings...
(Optional) Verify CORS
Run (after replacing the bucket name with yours):
gsutil cors get gs://acme-screen-recordings
Expected output:
[{"maxAgeSeconds": 3600, "method": ["GET", "PUT", "POST", "DELETE", "HEAD"], "origin": ["https://app.birdie.so", "https://share.birdie.so"], "responseHeader": ["*"]},{"maxAgeSeconds": 1800, "method": ["GET", "HEAD"], "origin": ["*"], "responseHeader": ["*"]}]
CORS does not make your bucket public; it only permits cross-origin requests from
https://*.birdie.so
.
Verify from Birdie
Enter your bucket name and click Start Test.
If everything is configured correctly, you’ll see green checkmarks and “Test Success”. Congrats! 🎉
Finally, share your bucket name with Birdie.
Troubleshooting
Permission errors (403/Access Denied): Re-check that you granted
[email protected]
the Storage Admin role on the bucket (Permissions → Grant access).CORS or browser errors: Re-run the CORS step and ensure the
origin
is exactlyhttps://*.birdie.so
and the command used your bucket name.Need help? Email [email protected] with your bucket name and any error messages.
What to send to Birdie
Bucket name (e.g.,
acme-screen-recordings
)Confirmation that access was granted to:
[email protected]
That’s all we need to connect Birdie to your bucket.
Last updated