Google Cloud App Engine - Default Storage Buckets - google-app-engine

When I create a new application on Google Cloud App Engine, these buckets in Google Storage show up as well (where yyy is my app's name):
eu.artifacts.yyy.appspot.com
staging.yyy.appspot.com
yyy.appspot.com
What do they do exactly ?

From the official documentation Using Cloud Storage for App Engine:
When you create an app, App Engine creates a default bucket that
provides the first 5GB of storage for free. The default bucket also
includes a free quota for Cloud Storage I/O operations. See Pricing,
quotas, and limits for details. You will be charged for storage over
the 5GB limit.
The name of the default bucket is in the following format:
project-id.appspot.com
App Engine also creates a bucket that it uses for temporary storage
when it deploys new versions of your app. This bucket, named
staging.project-id.appspot.com, is for use by App Engine only. Apps
can't interact with this bucket.
eu.artifacts.yyy.appspot.com is your container registry bucket
Your Container Registry bucket URL will be listed as
gs://artifacts.[PROJECT-ID].appspot.com or
gs://[STORAGE-REGION].artifacts.[PROJECT-ID].appspot.com, where:
[PROJECT-ID] is your Google Cloud Console project ID. Domain-scoped
projects will have the domain name as part of the project ID.
[STORAGE-REGION] is the location of the storage bucket: us for
registries in the host us.gcr.io eu for registries in the host
eu.gcr.io asia for registries in the host asia.gcr.io

Each of these buckets are for App Engine build and temporary artifacts.
Example: App Engine also creates a bucket that it uses for temporary storage when it deploys new versions of your app. This bucket, named staging.project-id.appspot.com, is for use by App Engine only. Apps can't interact with this bucket.

Related

Can I delete default buckets on Google App Engine Storage?

When I create a new application on Google Cloud App Engine, these buckets in Google Storage show up as well:
bucket_1: <region>.artifacts.<app_id>.appspot.com
bucket_2: staging.<app_id>.appspot.com
bucket_3: <app_id>.appspot.com
I've only added 300MB on bucket_3 and never added anything to bucket_1. Nonetheless, bucket_1 is currently occupying 3.9GB. Why do I need this bucket_1? Can I delete all its content or even delete the whole bucket?
Thanks in advance.
When you create a new App Engine Application, these buckets in Google Storage are created:
bucket_2: staging.<app_id>.appspot.com
bucket_3: <app_id>.appspot.com
Bucket bucket_1: <region>.artifacts.<app_id>.appspot.com is created when you run the command gcloud app deploy. This is the Container Registry bucket where App Engine stores container images. You can delete this bucket, however, next time when you deploy a new version gcloud app deploy the bucket will be recreated.
I did some testing on my side and observed that when you deploy your first app engine standard version, 48 images are created in us.artifacts.your-project.appspot.com/containers/images folder. From this moment, every time you deploy a new app engine version 3 more images are added to this folder. I am not sure about the internal implementation, but I think it caches the images in this folder.

How to install Errbot in Google App Engine

I'm trying to deploy Errbot in App Engine. Errbot needs the data directory to be writable but an App Engine instance's local filesystem is not writable. Is there any way to work around this?
From Documentation:
You are correct, GAE local filesystem that your application is deployed to is not writeable. This behavior ensures the security and scalability of your application.
However, if your use case involves to store data in a persistent manner, you may consider using Cloud Storage to read and write files during runtime. App Engine creates a default bucket when you create an application.
This bucket provides the first 5GB of storage for free and includes a free quota for Cloud Storage I/O operations. You can create other Cloud Storage buckets, but only the default bucket includes the first 5GB of storage for free.

Google Cloud App Engine download object from Google Cloud Storage issue

I am hosting a CodeIgniter based PHP web application on Google App Engine flex environment.
I am able to allow the user to upload data like images, video to my Google Cloud Storage bucket. But what I need to do is when the image or video gets uploaded to the storage, at that same time the same object should be downloaded on Google App Engine server's source code.
i.e. There should be a copy of the uploaded image on my current App Engine source code server (App Engine current instance).

Multi-region deployment of Google app engine project

When deploying my app engine project I have set the location as us-central. As per link, this location refers to Iowa region. This is the region that will be used for my Datastore as well. However, as per link, this refers to the whole of United States with multi-regional availability. Where is my data in Datastore stored - is it regional or multi-regional?
App Engine and Datastore locations are indeed dependent. This comes from the fact that Datastore was originally accessible from App Engine only and designed in consequence.
You are asked to choose a location for your project app when you complete any of the following tasks:
Create a new App Engine application.
Create your first Cloud Datastore entity using the Google Cloud
Platform Console.
When you choose a location for one of them, this location setting will also apply to the other. Now, as you noted, Datastore offers multi-region locations while App Engine doesn't. In your situation for example, choosing us-central makes your App Engine application run in the Iowa region while your Datastore operates in a multi-zone and multi-region replicated configuration within the US. By choosing another location where both App Engine and Datastore operate in a regional configuration like us-east1 for example, both will be located in South Carolina.

How to link/connect Firebase and Google App Engine for image resizing

I'm using Firebase and I'm trying to leverage the image resizing service that AppEngine has with get_serving_url(). https://medium.com/google-cloud/uploading-resizing-and-serving-images-with-google-cloud-platform-ca9631a2c556.
I'm confused about how to go about linking my google app engine image resizing service to my firebase cloud storage instance.
I see this quote in the documentation https://firebase.google.com/docs/storage/gcp-integration
The Firebase SDKs for Cloud Storage use the Google App Engine default
bucket, which means that if you build an App Engine app, you can use
the built in App Engine APIs to share data between Firebase and App
Engine. This is useful for performing audio encoding, video
transcoding, and image transformations, as well as other computation
intensive background processing.
How can I point to this Google App Engine default bucket? I don't see it in the google app engine dashboard interface anywhere.
I've already set up a firebase project and I then created an app engine project - but I don't see any way to point my app engine to the default bucket that firebase created. Is that based on some sort of account id? Where in the admin interface or tools can I set up that linkage so that the files I'm uploading to the firebase default storage bucket are available to be resized by the app engine image server?
It doesn't seem to be possible to link existing firebase projects with an existing google cloud platform (GCP) / app engine project.
First create the GCP app engine project
Then, on firebase, go to Add Project -> Open the "Project name" drop-down and select the existing GCP project.
The firebase project ID will then be the same as the GCP project ID, the GCP default bucket gs://<project_id>.appspot.com is the default firebase storage bucket, and you can select additional GCP buckets on the firebase storage page.
If you have an existing Firebase project, then the corresponding Google Cloud project is created for you automatically.
Just go to Google Cloud console (https://console.cloud.google.com) and there you'll be able to select the project with the same name (as your Firebase project's). If you deploy your GAE app to that project then it should be able to access your data.

Resources