- How do I sign into my Google App Engine account?
- How do I create a Cloud project for App Engine?
- What languages are supported by Google App Engine?
- What type of certifications has App Engine received?
- What are my rights to the projects I create?
- What frameworks does Google App Engine Support?
- Can I still develop a Google App Engine app if I don't have an account?
- How many applications can I create with Google App Engine?
- How can I disable one of my existing applications?
- What type of content is allowed on Google App Engine?
- How do I read the system usage charts in the admin console for my app?
- How is the current load report in my application's admin console generated?
- How do you generate the list of URIs showing the most errors in my application's admin console?
- What is GQL?
- Is GQL available for Java?
- Why do my queries need to be covered by indexes, and how do I include them?
- Why were my indexes marked as Error ?
- Why do my indexes stay Building or Deleting for long periods of time?
- How do I authenticate users of my application?
- Are there any third-party libraries not supported by Google App Engine?
- Why did my app get disabled?
- Why is my app over quota?
- How do I report an application that is in violation of your Terms and Conditions?
- Should I use the SDK for serving external requests?
- How do I serve compressed content?
- Does Google App Engine support SSL (HTTPS)?
- Can I use SSL (HTTPS) on App Engine with my Google Apps domain?
- Do tools like appcfg use SSL (HTTPS)?
- I'd like to map my app to a naked domain (such as http://example.com).
- Static IP Addresses and App Engine apps
- How do I define cron jobs for my application?
- What are task queues?
- How many active requests can my app serve at one time?
- How do I prevent users/subnets from accessing my app?
How do I sign into my Google App Engine account?
For normal Google Accounts, including Gmail users, you can log into your App Engine account by visiting:
For users with accounts through Google Apps:
- https://appengine.google.com/a/<DOMAIN.COM>
Where <DOMAIN.COM> is the domain that your account is associated with.
How do I create a Cloud project for App Engine?
New applications are automatically created with a Cloud project, which is required if your App Engine app needs to work with other Cloud products or use other Google APIs. However, older legacy App Engine apps were not created with a Cloud project. To create a Cloud project for these older legacy apps, you can use the App Engine Admin console's Application Settings page. This page has a Cloud Integration section with a Create button you can use to create a Cloud project for your app; it also creates a default Google Cloud Storage bucket for your optional use.
What languages are supported by Google App Engine?
Currently, Google App Engine supports Java , Python , PHP , and Go . Additionally, your website templates can include JavaScript along with your HTML which, among other things, allows you to write AJAX-enabled web applications.
What type of certifications has App Engine received?
Google App Engine successfully completed the audit process for the SAS70 Type II , SSAE 16 Type II , ISO 27001 , and ISAE 3402 Type II standards.
What are my rights to the projects I create?
Between Google and App Engine customers, the customer owns all intellectual property rights to their stored data and their application and project code. Google owns all intellectual property rights to App Engine and Google Cloud Platform's services and software.
For more information, including the definitions of these terms, see the Google Cloud Terms of Service .
What frameworks does Google App Engine Support?
Java
App Engine's Java runtime works with many popular Java frameworks including Struts 2 and Spring MVC. App Engine also supports several popular JVM-compatible languages such as JRuby and Scala. All frameworks must operate inside the restrictions of App Engine's sandbox and only use the JRE classes in the JRE class white list. A list of App Engine-compatible Java libraries and frameworks is available here .
Python
App Engine can run most Python web frameworks out-of-the box with few or no modifications. For your convenience, Django 0.96 is included with the Google App Engine SDK and Django versions 1.0.2 and 1.1 are available in the runtime when running on App Engine. More information is available in the documentation on third-party libraries .
Go
The Go runtime for App Engine includes almost all of the standard library , including the net/http package , which is sufficient for writing complete web apps. Many third-party libraries also work on App Engine without any modification.
Can I still develop a Google App Engine app if I don't have an account?
Absolutely! Even if you don't yet have a Google App Engine account you can always download our SDK and start developing.
How many applications can I create with Google App Engine?
Each account can host 25 free applications and an unlimited number of paid applications Google App Engine. You can delete your existing applications via the Admin Console if you want to create more, but you will not be able to re-register an application ID.
How can I disable one of my existing applications?
You can disable, and subsequently re-enable, your application in the "Application Settings" page in the Admin Console. You can also permenantly delete your application. For more information see the Admin Console FAQ .
What type of content is allowed on Google App Engine?
Please see our Terms of Service if you have questions on what kind of content is allowed with Google App Engine.
How do I read the system usage charts in the admin console for my app?
Your Google App Engine dashboard in the Admin Console has six graphs that give you a quick visual reference of your system usage. The information displayed in these graphs gives you a snapshot of resource consumption per second over a period of up to 30 days. Here are a list of the graphs you will see in the Admin Console:
- Summary
-
- Total Requests : The number of URIs requested from your application every second, including dynamic, static, and cached requests.
- Total Errors : The number of errors generated by your application every second.
- Requests by Type (Queries/Second)
-
- Static Requests .
- Dynamic Requests .
- Cached Requests (served from the cache).
- Latency
-
The average number of milliseconds your application takes to service a request (latency measure), including only dynamic requests. Includes the time it takes to process the request, but not the time it takes to deliver the request to the client.
- Loading Latency
-
The average number of milliseconds your application takes to respond to its first request (latency measure). This will include loading and initializing the app. Includes the time it takes to process the request, but not the time it takes to deliver the request to the client.
- Error Details
-
- Total Errors : The number of errors generated by your application every second.
- Quota Denials : The number of times a request to your application was denied due to exceeding quotas; see Quotas for a complete overview.
- DoS API Denials : The number of requests detected (and blocked by App Engine) as DoS attacks against your application.
- Traffic (Bytes/Second)
-
- Sent : The number of bytes sent by your application every second, summed across all requests.
- Received : The number of bytes that are received by your application every second, summed across all requests.
- Utilization
-
- Total CPU : The amount of CPU megacyles your application uses every second.
- API Calls CPU : The amount of CPU megacycles your application uses every second to call Google APIs.
- Milliseconds Used/Second
-
The number of milliseconds per second your app is handling a request.
- Instances
-
- Total : Count of live instances.
- Active : Count of live instances currently in use.
- Billed : Count of live instances that have enabled billing.
- Memory Usage (MB)
-
Combined memory usage of your app's instances.
- Memcache Operations/Second
-
The rate of memcache key operations. For batch requests, each item in the batch counts as a key operation.
- Memcache Traffic (Bytes/Second)
-
- Sent : The volume of data sent to memcache.
- Total : The combined values of sent and received.
- Received : The volume of data received from memcache.
- Memcache Compute Units/Second
-
A metric that approximates the resource cost of memcache as a function of the characteristics of each request (value size, read vs. mutation, etc.).
- Memcache Total Cache Size (MB)
- The cache is shared by all modules and versions in an app. This chart is not available if you've used the module and filter menus to display information for a specific module and/or version.
How is the current load report in my application's admin console generated?
The current load gives a breakdown of the number of requests for each URI requested from your application as well as some CPU stats for the URI. The request parameters are omitted from the path.
The leftmost column lists the URI path, starting with the most popular URI by total requests, which is listed under the "Requests" column. The number of requests is reset every Midnight PST. The "Req/Sec" column lists the short-term request rate of each URI.
The current load table provides two data points for CPU usage, "Avg CPU (API)" and "% CPU". The "Avg CPU (API)" displays the average amount of CPU a request to that URI has consumed over the past hour, measured in megacycles. The "% CPU" column shows the percentage of CPU that URI has consumed since midnight PST with respect to the other URIs in your application.
How do you generate the list of URIs showing the most errors in my application's admin console?
If any error occurs when attempting to load a URI, our system records that error. We then show the URIs that record the most errors in the past 24 hrs in the admin console. In addition to showing the total number of errors, we include the percentage of errors as the ratio of errors at the URI to total requests of that URI.
Applications who have not included a favicon.ico file may notice the URI
/favicon.ico
on the list of errorful URIs. Favicon.ico is a file
that is requested by a user's web browser when it attempts to load the page.
Favicon.ico is your website's icon, and is typically displayed in the user's
browser URL bar, next to the web address of your site.
For your application, favicon.ico should be a static image.
You can upload a favicon.ico file with your application, and in your app.yaml
file configure your application to serve the image when the url /favicon.ico is
requested. Below are example entries in
appengine-web.xml
(Java)
and
app.yaml
(Python and Go). In the Python/Go example,
favicon.ico
is located in
static/images
. For
simplicity, the same file is located in the root (
war
) directory in
the Java example.
Python/Go
app.yaml
- url: /favicon\.ico static_files: static/images/favicon.ico upload: static/images/favicon\.ico
Java
appengine-web.xml
<static-files> <include path="/favicon.ico" /> </static-files>
What is GQL?
GQL is a query language that is used with the App Engine datastore. You can use it to query for entities in both the Python runtime environment as well as the datastore viewer in the Admin Console. It uses a SQL-like syntax to retrieve entire entities from your application's datastore and includes the ability to filter on properties, specify the sorting order of the results, and limit the number of entities returned. The full GQL language reference can be found here .
Is GQL available for Java?
GQL is not included in the Java SDK, however it can be used through the Cloud Datastore API. We recommend that Java developers use JDO or JPA instead of GQL because they are type-safe. Using JDO/JPA allows the developer to find out about mistakes in the IDE rather than at runtime, and allows less room for SQL injection attacks.
Why do my queries need to be covered by indexes, and how do I include them?
If you run a query that filters on multiple entity properties or orders results by multiple properties, you will need an index for that query. You must have an index for every query of that kind that you run with your application. The datastore index for a query maintains and updates a list of keys sorted in the manner that the query specifies to allow speedy access to the data in your datastore. A full explanation of datastore indexes can be found in our documentation ( Java | Python | Go ).
When you develop your application with Google App Engine SDK, every query
you run automatically gets indexed when necessary. If you thoroughly test your
application before uploading it to your website, all of the indexes your
application will need will be included in your application's
datastore-indexes.xml
(Java) or
index.yaml
(Python or Go)
files. You may manually add indexes if you find a query that was not covered by
your development testing. For more information on how to write indexes for your
application, see the index documentation.
Why were my indexes marked as Error ?
They may be exploding indexes ( Python | Java ), or may have encountered other similar problems when writing particular entities in your datastore. You can vacuum and re-attempt to build them by following the instructions in Queries ( Python | Java | Go ) and Indexes ( Python | Java ).
Why do my indexes stay Building or Deleting for long periods of time?
Even if you don't have many entities of the corresponding kind (s), the time indexes take to build or delete can vary widely depending on the total amount of data in your datastore, indexes currently building for other apps, and datastore load due to user requests, among other factors. In some cases, index jobs can take hours or even days to complete.
Even so, we can sometimes help with indexes that seem to be stuck. If you think this has happened to your indexes, feel free to ask us on the group .
In the past, index jobs sometimes slowed down because worker shards were too large to be completed within the lease period. We initially addressed this by increasing the lease period. Later, we started splitting individual tablets into shards .
How do I authenticate users of my application?
The Users service ( Java | Python | Go ) allows you to authenticate users who have a Google Accounts, user account on your own Google Apps domain, or an OpenID. (Note that the support for OpenID is experimental.) You choose one of these forms of authentication for your app. Please read our article on how to configure your application to authenticate against a Google Apps domain.
If your app uses Google Accounts, when your application requests a user sign
in, the user is directed to a Google sign-in page to enter a username and
password, or to create a new account. If your app uses OpenID and requests a
sign-in, the user is directed to
/_ah/login_required
to provide an
OpenID and password. After successfully signing in, the user is then returned to
your website, and the user information is available to your application through
the Users property.
Are there any third-party libraries not supported by Google App Engine?
Java
For a list of compatible and incompatible libraries and frameworks, please see Will it Play in App Engine .
Python
A small percentage of native C python modules, and subsets of native C python modules are not available with Google App Engine. A full list detailing native C Python module support can be found here . The disabled modules fall in to the following categories:
- Libraries that maintain databases on disk are not enabled in Python for Google App Engine
- Sockets are disabled with Google App Engine
- The system does not allow you to invoke subprocesses, as a result some os module methods are disabled
- Threading is not available
- For security reasons, most C-based modules are disabled
-
Other features that are limited:
- marshal is disabled
- cPickle is aliased to pickle
- System calls have been disabled
Please keep in mind that third party packages which use any of the above features will not function with Google App Engine (packages such as MySQL, PostgreSQL, etc).
Go
The majority of pure Go packages work on Google App Engine. A package may not work because of one of these reasons:
-
The package imports
syscall
orunsafe
. - The package uses cgo or assembly.
- The package requires functions in packages that are locked down, such as writing to disk, or direct network access.