ืกื‘ื™ื‘ืช ื–ืžืŸ ืจื™ืฆื” ืฉืœ Java

ืกื‘ื™ื‘ืช ื”ืจื™ืฆื” ืฉืœ Java ื”ื™ื ืžื—ืกื ื™ืช ื”ืชื•ื›ื ื” ืฉืื—ืจืื™ืช ืœื”ืชืงื ืช ื”ืงื•ื“ ืฉืœ ืฉื™ืจื•ืช ื”ืื™ื ื˜ืจื ื˜ ื•ืงืฉืจื™ ื”ืชืœื•ืช ืฉืœื• ื•ืœื”ืคืขืœืช ื”ืฉื™ืจื•ืช.

ืžืฆื”ื™ืจื™ื ืขืœ ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ Java ื‘ืกื‘ื™ื‘ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื‘-App Engine ื‘ืงื•ื‘ืฅ app.yaml. ืœื“ื•ื’ืžื”:

runtime: javaVERSION

โ€ซVERSION ื”ื•ื ืžืกืคืจ ื”ื’ืจืกื” ืฉืœ JavaMAJOR. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื’ืจืกื” ื”ืื—ืจื•ื ื” ืฉืœ Java, โ€ Java 25, ืžืฆื™ื™ื ื™ื 25.

ืœืžื™ื“ืข ืขืœ ื’ืจืกืื•ืช ื ืชืžื›ื•ืช ืื—ืจื•ืช ืฉืœ Java ื•ื’ืจืกืช Ubuntu ื”ืชื•ืืžืช ืœื’ืจืกืช Java ืฉืœื›ื, ืืคืฉืจ ืœืขื™ื™ืŸ ื‘ืœื•ื— ื”ื–ืžื ื™ื ืฉืœ ื”ืชืžื™ื›ื” ื‘ื–ืžืŸ ืจื™ืฆื”.

ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื

  1. ืžื•ืจื™ื“ื™ื ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ืฉืœ Google Cloud CLI ืื• ืžืขื“ื›ื ื™ื ืืช ื”-CLI ืฉืœ gcloud ืœื’ืจืกื” ื”ื ื•ื›ื—ื™ืช:

    gcloud components update
    
  2. ื›ื“ื™ ืœืคืจื•ืก ื‘ืืžืฆืขื•ืช Maven, ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืืช App Engine Maven Plugin ืœืงื•ื‘ืฅ pom.xml:

    <plugin>
       <groupId>com.google.cloud.tools</groupId>
       <artifactId>appengine-maven-plugin</artifactId>
       <version>2.8.7</version>
    </plugin>

    ืืคืฉืจื•ื™ื•ืช ื ื•ืกืคื•ืช ืœืคืจื™ืกื” ื”ืŸ ืฉื™ืžื•ืฉ ื‘ืคืงื•ื“ื” gcloud app deploy ืื• ื‘ืคืœืื’ื™ืŸ App Engine Gradle.

  3. ืคื•ืขืœื™ื ืœืคื™ ื”ื”ื•ืจืื•ืช ืฉืœ ืžืกื’ืจืช ื”ืืคืœื™ืงืฆื™ื” ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื”ื‘ื ื™ื™ื” ืฉืœ ืงื•ื‘ืฅ ื”ืคืขืœื” JAR.

ืชืื™ืžื•ืช ืœืžืกื’ืจืช

ื‘ืืžืฆืขื•ืช ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ App Engine Java, ืืคืฉืจ ืœืคืจื•ืก ืงื•ื‘ืฆื™ JAR ืฉื ื™ืชื ื™ื ืœื”ืคืขืœื”. ืกื‘ื™ื‘ื•ืช ื–ืžืŸ ื”ืจื™ืฆื” ืœื ื›ื•ืœืœื•ืช ืžืกื’ืจืช ืœื”ืฆื’ืช ืชื•ื›ืŸ ื‘ืื™ื ื˜ืจื ื˜, ื›ืœื•ืžืจ ืืชื ืœื ืžื•ื’ื‘ืœื™ื ืœืฉื™ืžื•ืฉ ื‘ืกืคืจื™ื•ืช ืื• ื‘ืžืกื’ืจื•ืช ืžื‘ื•ืกืกื•ืช-servlet. ืžืฉืชืžืฉื™ื ื‘ืชืœื•ื™ื•ืช Native ืื• ื‘ืžืขืจื›ื•ืช ืจืฉืช ื›ืžื• ืกืคืจื™ื™ืช Netty.

ืืชื ืœื ืžื•ื’ื‘ืœื™ื ืœืžืกื’ืจื•ืช ื”ืืœื”, ื•ืืชื ืžื•ื–ืžื ื™ื ืœื ืกื•ืช ืืช ื”ืžืกื’ืจืช ื”ืžื•ืขื“ืคืช ืขืœื™ื›ื, ื›ืžื• Grails,โ€ Blade,โ€ Play!, โ€ซVaadin ืื• jHipster.

ืคืจื™ืกืช ืคืจื•ื™ืงื˜ื™ื ืฉืœ ืงื•ื“ ืžืงื•ืจ ื‘-Maven ื‘ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ Java

ืืชื ื™ื›ื•ืœื™ื ืœืคืจื•ืก ืืช ืคืจื•ื™ืงื˜ Maven ื›ืงื•ื“ ืžืงื•ืจ, ื•ืœื‘ื ื•ืช ื•ืœืคืจื•ืก ืื•ืชื• ื‘ืืžืฆืขื•ืช Buildpacks ืฉืœ Google Cloud.

ื›ื“ื™ ืœืคืจื•ืก ืคืจื•ื™ืงื˜ Maven ื›ืงื•ื“ ืžืงื•ืจ, ืขื•ื‘ืจื™ื ืœืกืคืจื™ื™ื” ื‘ืจืžื” ื”ืขืœื™ื•ื ื” ืฉืœ ื”ืคืจื•ื™ืงื˜ ื•ืžืงืœื™ื“ื™ื:

gcloud app deploy pom.xml

ื™ื•ืžื ื™ ื”ื‘ื ื™ื™ื” ื•ื”ืคืจื™ืกื” ื™ื•ืขื‘ืจื• ื‘ืกื˜ืจื™ืžื™ื ื’, ื•ืืคืฉืจ ืœืจืื•ืช ืืช ื”ื™ื•ืžื ื™ื ื”ืžืคื•ืจื˜ื™ื ื‘ืงื˜ืข Cloud Build history ื‘Google Cloud ืžืกื•ืฃ.

ืฉื™ืžื•ืฉ ื‘ืงื•ื‘ืฆื™ ื”ืคืขืœื” ืฉืœ GraalVM

ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ Java ื‘ืกื‘ื™ื‘ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื‘-App Engine ืชื•ืžื›ืช ื‘ืงื•ื‘ืฆื™ ื”ืคืขืœื” ืฉืœ ืชืžื•ื ื•ืช ืžื•ื‘ื ื•ืช ืฉืœ GraalVM. ืื—ืจื™ ืฉืžื”ื“ืจื™ื ืืช ืืคืœื™ืงืฆื™ื™ืช Java ืœืชืžื•ื ื” ืžืงื•ืจื™ืช ืฉืœ GraalVM, ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื”ื’ื“ืจื” entrypoint ื‘ืงื•ื‘ืฅ app.yaml ื›ื“ื™ ืœื”ืคื ื•ืช ืœืงื•ื‘ืฅ ื”ื”ืคืขืœื”.

ืœื“ื•ื’ืžื”, ืœืงื•ื‘ืฅ ื”ืคืขืœื” ืขื ืฉื ื”ืงื•ื‘ืฅ myexecutable ื™ื›ื•ืœ ืœื”ื™ื•ืช ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” app.yaml ื”ื‘ื:

runtime: 25 # or another supported runtime version.
entrypoint: ./myexecutable

Google Cloud ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื•ืช ืœืงื•ื— ื›ื“ื™ ืœืงืžืคืœ ืืคืœื™ืงืฆื™ื•ืช ื›ืชืžื•ื ืช Native ืฉืœ GraalVM. ืžื™ื“ืข ื ื•ืกืฃ ืžื•ืคื™ืข ื‘ืžืืžืจ ื‘ื ื•ืฉื ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ืชืžื•ื ื•ืช ืžืงื•ืจื™ื•ืช.

ื’ืจืกืช Java

ื’ืจืกืช Java ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉื ืชืžื›ืช ื”ื™ื 25. ื”-Java runtime ืžืฉืชืžืฉ ื‘ื’ืจืกื” ื”ื™ืฆื™ื‘ื” ื”ืื—ืจื•ื ื” ืฉืคื•ืจืกืžื” ืฉืœ ื”ื’ืจืกื” ืฉืžืฆื•ื™ื ืช ื‘ืงื•ื‘ืฅ app.yaml. โ€ซApp Engine ืžืชืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ืœื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ืชื™ืงื•ื ื™ ื‘ืื’ื™ื, ืื‘ืœ ื”ื•ื ืœื ืžืชืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ืœื’ืจืกื” ืžืฉื ื™ืช.

ืœื“ื•ื’ืžื”, ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื”ืืคืœื™ืงืฆื™ื” ืฉืœื›ื ืชื•ืคืขืœ ื‘-Java 21.0.4 ื•ืชืขื•ื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ืœื’ืจืกื” Java 21.0.5 ื‘ื”ืคืขืœื” ืžืื•ื—ืจืช ื™ื•ืชืจ ืฉืœ ื”ืคืœื˜ืคื•ืจืžื” ื”ืžื ื•ื”ืœืช, ืื‘ืœ ื”ื™ื ืœื ืชืขื•ื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ืœ-Java 22.

ื‘ืžืืžืจ ืฉื“ืจื•ื’ ืฉืœ ืืคืœื™ืงืฆื™ื” ืงื™ื™ืžืช ืžื•ืกื‘ืจ ืื™ืš ืœืฉื“ืจื’ ืืช ื’ืจืกืช Java.

ืกื‘ื™ื‘ืช Open JDK ืฉืœ ื–ืžืŸ ื”ืจื™ืฆื”

โ€ซApp Engine ืžืจื™ืฅ ืืคืœื™ืงืฆื™ื•ืช Java ื‘ืžืื’ืจ ืžืื•ื‘ื˜ื— ืขืœ ื™ื“ื™ gVisor ื‘ื”ืคืฆืช Ubuntu Linux ืขื“ื›ื ื™ืช, ื•ื‘-openjdk-17-jdk ื”ื ืชืžืš ืขื‘ื•ืจ Java 17 ืื• ื‘-openjdk-21-jdk ืขื‘ื•ืจ ื–ืžืŸ ืจื™ืฆื” ืฉืœ Java 21.

ื‘ืžืืžืจ ืœื•ื— ื”ื–ืžื ื™ื ืฉืœ ืชืžื™ื›ื” ื‘ื–ืžืŸ ืจื™ืฆื” ืžืคื•ืจื˜ื•ืช ื’ืจืกืื•ืช Ubuntu ื”ื ืชืžื›ื•ืช ืขื‘ื•ืจ ื’ืจืกืช Java ืฉืœื›ื.

โ€ซApp Engine ืžืชื—ื–ืง ืืช ืชืžื•ื ืช ื”ื‘ืกื™ืก ื•ืžืขื“ื›ืŸ ืืช ื—ื‘ื™ืœืช OpenJDK 17 ื•-OpenJDK 21, ื‘ืœื™ ืฉืชืฆื˜ืจื›ื• ืœืคืจื•ืก ืžื—ื“ืฉ ืืช ื”ืืคืœื™ืงืฆื™ื”.

ื”ืืคืœื™ืงืฆื™ื” ืฉืคืจืกืชื ื ืžืฆืืช ื‘ืกืคืจื™ื™ื” /workspace ืฉืœ ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื”. ืืคืฉืจ ืœื’ืฉืช ืืœื™ื• ื’ื ื“ืจืš ืงื™ืฉื•ืจ ืกืžืœื™ ื‘ื›ืชื•ื‘ืช /srv.

ื’ืจืกืื•ืช ืฉืœ App Engine Java

ื›ืœ ื”ืืจื˜ื™ืคืงื˜ื™ื ืฉืคื•ืจืกืžื• ื•ืžืชื—ื™ืœื™ื ื‘ื’ืจืกื” 2.x.x ืžืฉืชืžืฉื™ื ื‘ืžื ื’ื ื•ืŸ ื”ืคืจืกื•ื open source. ืคืจื˜ื™ื ื ื•ืกืคื™ื ื–ืžื™ื ื™ื ื‘ืžืื’ืจ GitHub.

ืชืœื•ื™ื•ืช

ืžื™ื“ืข ื ื•ืกืฃ ืขืœ ื”ืฆื”ืจื” ืขืœ ื™ื—ืกื™ ืชืœื•ืช ื•ื ื™ื”ื•ืœ ืฉืœื”ื ื–ืžื™ืŸ ื‘ืžืืžืจ Specifying dependencies.

ื”ืคืขืœืช ื”ืืคืœื™ืงืฆื™ื”

ื‘ืžืกื’ืจื•ืช ื›ืžื• Spring Boot, โ€ Micronaut ื•-Ktor, ื ื•ืฆืจืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ JAR ื”ืคืขืœื”. ืื ืงื•ื‘ืฅ ื”-build ืฉืœ Maven ืื• Gradle ื™ื•ืฆืจ ืงื•ื‘ืฅ Uber JAR ืฉื ื™ืชืŸ ืœื”ืคืขืœื”, ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืžืคืขื™ืœื” ืืช ื”ืืคืœื™ืงืฆื™ื” ืขืœ ื™ื“ื™ ื”ืจืฆืช ืืคืœื™ืงืฆื™ื™ืช Uber JAR.

ืœื—ืœื•ืคื™ืŸ, App Engine ื™ืฉืชืžืฉ ื‘ืชื•ื›ืŸ ืฉืœ ื”ืฉื“ื” ื”ืื•ืคืฆื™ื•ื ืœื™ entrypoint ื‘ืงื•ื‘ืฅ app.yaml. ืœื“ื•ื’ืžื”:

runtime: java25 # or another supported runtime
entrypoint: java -Xmx64m -jar YOUR-ARTIFACT.jar

ื›ืืฉืจ ืงื•ื‘ืฅ ื”-JAR ืฉืœ ื”ืืคืœื™ืงืฆื™ื” YOUR-ARTIFACT.jar ืœื“ื•ื’ืžื” ื—ื™ื™ื‘:

  • ืœื”ื™ื•ืช ื‘ืชื™ืงื™ื™ืช ื”ืฉื•ืจืฉ ืขื ืงื•ื‘ืฅ app.yaml.
  • ืžื›ื™ืœื™ื ืจืฉื•ืžื” ืฉืœ Main-Class ื‘ืงื•ื‘ืฅ ื”ืžื˜ื-ื ืชื•ื ื™ื META-INF/MANIFEST.MF.
  • ืื•ืคืฆื™ื•ื ืœื™, ืžื›ื™ืœ ืจืฉื•ืžื” ืฉืœ Class-Path ืขื ืจืฉื™ืžื” ืฉืœ ื ืชื™ื‘ื™ื ื™ื—ืกื™ื™ื ืœืงื•ื‘ืฆื™ JAR ืื—ืจื™ื ืฉืชืœื•ื™ื™ื ื‘ื•. ื”ืงื‘ืฆื™ื ื”ืืœื” ื™ื•ืขืœื• ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืขื ื”ืืคืœื™ืงืฆื™ื”.

ื›ื“ื™ ืฉื”ืืคืœื™ืงืฆื™ื” ืชืงื‘ืœ ื‘ืงืฉื•ืช HTTP, ื ืงื•ื“ืช ื”ื›ื ื™ืกื” ืฆืจื™ื›ื” ืœื”ืคืขื™ืœ ืฉืจืช ืื™ื ื˜ืจื ื˜ ืฉืžืงืฉื™ื‘ ืœื™ืฆื™ืื” ืฉืฆื•ื™ื ื” ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” PORT. ื”ืขืจืš ืฉืœ PORT ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ืžื•ื’ื“ืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืขืœ ื™ื“ื™ ืกื‘ื™ื‘ืช ื”ื”ื’ืฉื” ืฉืœ App Engine. ืื™ ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืืช ื”ืขืจืš ื”ื–ื” ื‘ืงื˜ืข env_variables ื‘ืงื•ื‘ืฅ app.yaml.

ื‘ืขื–ืจืช ื ืงื•ื“ืช ื›ื ื™ืกื” ืžื•ืชืืžืช ืื™ืฉื™ืช, ืืคืฉืจ ืœื™ืฆื•ืจ ื—ื‘ื™ืœื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ื›ืงื•ื‘ืฅ JAR ื“ืง ืฉืžื›ื™ืœ ืจืง ืืช ืงื•ื“ ื”ืืคืœื™ืงืฆื™ื” ื•ืชืœื•ืช ื™ืฉื™ืจื”. ื›ืฉืคื•ืจืกื™ื ืืช ื”ืืคืœื™ืงืฆื™ื”, ื”ืชื•ืกืฃ App Engine ืžืขืœื” ืจืง ืืช ื”ืงื‘ืฆื™ื ืฉื”ืฉืชื ื•, ื•ืœื ืืช ื›ืœ ื—ื‘ื™ืœืช ื”-JAR.

ื—ืฉื•ื‘ ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” PORT

ืื ืžื•ืคื™ืขื•ืช ืื–ื”ืจื•ืช ืœื’ื‘ื™ ื™ืฆื™ืื” 8080 ื•-NGINX ื‘ืงื•ื‘ืฆื™ ื”ื™ื•ืžืŸ ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ืฉืจืช ื”ืื™ื ื˜ืจื ื˜ ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืžืื–ื™ืŸ ืœื™ืฆื™ืื” 8080 ืฉืžื•ื’ื“ืจืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ื›ืš ื ืžื ืข ืž-App Engine ืœื”ืฉืชืžืฉ ื‘ืฉื›ื‘ืช NGINX ืฉืœื• ื›ื“ื™ ืœื“ื—ื•ืก ืชื’ื•ื‘ื•ืช HTTP. ืžื•ืžืœืฅ ืœื”ื’ื“ื™ืจ ืืช ืฉืจืช ื”ืื™ื ื˜ืจื ื˜ ื›ืš ืฉื™ื’ื™ื‘ ืœื‘ืงืฉื•ืช HTTP ื‘ื™ืฆื™ืื” ืฉืฆื•ื™ื ื” ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” PORT, ื‘ื“ืจืš ื›ืœืœ 8081. ืœื“ื•ื’ืžื”:

/*
 * Copyright 2019 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.appengine;

import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

public class Main {

  public static void main(String[] args) throws IOException {
    // Create an instance of HttpServer bound to port defined by the 
    // PORT environment variable when present, otherwise on 8080.
    int port = Integer.parseInt(System.getenv().getOrDefault("PORT", "8080"));
    HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);

    // Set root URI path.
    server.createContext("/", (var t) -> {
      byte[] response = "Hello World!".getBytes();
      t.sendResponseHeaders(200, response.length);
      try (OutputStream os = t.getResponseBody()) {
        os.write(response);
      }
    });

    // Create a second URI path.
    server.createContext("/foo", (var t) -> {
      byte[] response = "Foo!".getBytes();
      t.sendResponseHeaders(200, response.length);
      try (OutputStream os = t.getResponseBody()) {
        os.write(response);
      }
    });

    server.start();
  }
}

ืชืื™ืžื•ืช ืœื’ืจืกืื•ืช ืงื•ื“ืžื•ืช ืฉืœ Java

ื›ื“ื™ ืœืจืื•ืช ืืช ื”ื”ื‘ื“ืœื™ื ื‘ื™ืŸ Java 8 ืœื‘ื™ืŸ ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉืœ Java ืฉื ืชืžื›ืช, ืืคืฉืจ ืœืขื™ื™ืŸ ื‘ืžืืžืจ ืžืขื‘ืจ ืž-Java 8 ืœื–ืžืŸ ื”ืจื™ืฆื” ื”ืขื“ื›ื ื™ ืฉืœ Java.

ืžืฉืชื ื™ ืกื‘ื™ื‘ื”

ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื” ื”ื‘ืื™ื ืžื•ื’ื“ืจื™ื ืขืœ ื™ื“ื™ ื–ืžืŸ ื”ืจื™ืฆื”:

ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” ืชื™ืื•ืจ
GAE_APPLICATION ื”ืžื–ื”ื” ืฉืœ ืืคืœื™ืงืฆื™ื™ืช App Engine. ื”ืžื–ื”ื” ื”ื–ื” ืžืชื—ื™ืœ ื‘ืงื™ื“ื•ืžืช region code~, ื›ืžื• e~ ืœืืคืœื™ืงืฆื™ื•ืช ืฉื ืคืจืกื•ืช ื‘ืื™ืจื•ืคื”.
GAE_DEPLOYMENT_ID ื”ืžื–ื”ื” ืฉืœ ื”ืคืจื™ืกื” ื”ื ื•ื›ื—ื™ืช.
GAE_ENV ืกื‘ื™ื‘ืช App Engine. ื”ื•ื’ื“ืจ ืœืขืจืš standard.
GAE_INSTANCE ื”ืžื–ื”ื” ืฉืœ ื”ืžื•ืคืข ืฉื‘ื• ื”ืฉื™ืจื•ืช ืฉืœื›ื ืคื•ืขืœ ื›ืจื’ืข.
GAE_MEMORY_MB ื ืคื— ื”ื–ื™ื›ืจื•ืŸ ืฉื–ืžื™ืŸ ืœืชื”ืœื™ืš ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ื‘-MB.
GAE_RUNTIME ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืฆื•ื™ื ื” ื‘ืงื•ื‘ืฅ app.yaml.
GAE_SERVICE ืฉื ื”ืฉื™ืจื•ืช ืฉืฆื•ื™ืŸ ื‘ืงื•ื‘ืฅ app.yaml. ืื ืœื ืžืฆื•ื™ืŸ ืฉื ืฉื™ืจื•ืช, ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื default.
GAE_VERSION ืชื•ื•ื™ืช ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ืฉืœ ื”ืฉื™ืจื•ืช.
GOOGLE_CLOUD_PROJECT ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜ ื‘- Google Cloud ืฉืžืฉื•ื™ืš ืœืืคืœื™ืงืฆื™ื”.
PORT ื”ื™ืฆื™ืื” ืฉืžืงื‘ืœืช ื‘ืงืฉื•ืช HTTP.
โ€ซNODE_ENV (ื–ืžื™ืŸ ืจืง ื‘ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ Node.js) ืžื’ื“ื™ืจื™ื ืืช ื”ืขืจืš production ื›ืฉืคื•ืจืกื™ื ืืช ื”ืฉื™ืจื•ืช.

ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื ื•ืกืคื™ื ื‘ืงื•ื‘ืฅ app.yaml, ืื‘ืœ ืื™ ืืคืฉืจ ืœื‘ื˜ืœ ืืช ื”ืขืจื›ื™ื ืฉืœืžืขืœื”, ืœืžืขื˜ NODE_ENV.

ืคืจื•ื˜ื•ืงื•ืœ HTTPS ื•ืฉืจืชื™ proxy ืœื”ืขื‘ืจื”

โ€ซApp Engine ืžืกื™ื™ื ื—ื™ื‘ื•ืจื™ HTTPS ื‘ืžืื–ืŸ ื”ืขื•ืžืกื™ื ื•ืžืขื‘ื™ืจ ื‘ืงืฉื•ืช ืœืืคืœื™ืงืฆื™ื”. ื‘ืืคืœื™ืงืฆื™ื•ืช ืžืกื•ื™ืžื•ืช ืฆืจื™ืš ืœืงื‘ื•ืข ืืช ื›ืชื•ื‘ืช ื”-IP ื•ื”ืคืจื•ื˜ื•ืงื•ืœ ืฉืœ ื”ื‘ืงืฉื” ื”ืžืงื•ืจื™ืช. ื›ืชื•ื‘ืช ื”-IP ืฉืœ ื”ืžืฉืชืžืฉ ื–ืžื™ื ื” ื‘ื›ื•ืชืจืช ื”ืจื’ื™ืœื” X-Forwarded-For. ื‘ืืคืœื™ืงืฆื™ื•ืช ืฉื“ื•ืจืฉื•ืช ืืช ื”ืžื™ื“ืข ื”ื–ื”, ืฆืจื™ืš ืœื”ื’ื“ื™ืจ ืืช ืžืกื’ืจืช ื”ืื™ื ื˜ืจื ื˜ ื›ืš ืฉืชื™ืชืŸ ืืžื•ืŸ ื‘-proxy.

ื’ื™ืฉื” ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื

ืกื‘ื™ื‘ืช ื–ืžืŸ ื”ืจื™ืฆื” ื›ื•ืœืœืช ืกืคืจื™ื™ื” /tmp ืขื ื”ืจืฉืืช ื›ืชื™ื‘ื”, ื•ืœื›ืœ ืฉืืจ ื”ืกืคืจื™ื•ืช ื™ืฉ ื”ืจืฉืืช ืงืจื™ืื” ื‘ืœื‘ื“. ื›ืชื™ื‘ื” ืืœ /tmp ืชื•ืคืกืช ื–ื™ื›ืจื•ืŸ ืžืขืจื›ืช.

ืฉืจืช ืžื˜ื-ื ืชื•ื ื™ื

ื›ืœ ืžื•ืคืข ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืฉืจืช ื”ืžื˜ื-ื ืชื•ื ื™ื ืฉืœ App Engine ื›ื“ื™ ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ืœื’ื‘ื™ ื”ืžื•ืคืข ื•ื”ืคืจื•ื™ืงื˜.

ืืคืฉืจ ืœื’ืฉืช ืœืฉืจืช ื”ืžื˜ื-ื ืชื•ื ื™ื ื“ืจืš ื ืงื•ื“ื•ืช ื”ืงืฆื” ื”ื‘ืื•ืช:

  • http://metadata
  • http://metadata.google.internal

ื‘ืงืฉื•ืช ืฉื ืฉืœื—ื•ืช ืœืฉืจืช ื”ืžื˜ื-ื ืชื•ื ื™ื ืฆืจื™ื›ื•ืช ืœื›ืœื•ืœ ืืช ื›ื•ืชืจืช ื”ื‘ืงืฉื” Metadata-Flavor: Google. ื”ื›ื•ืชืจืช ื”ื–ื• ืžืฆื™ื™ื ืช ืฉื”ื‘ืงืฉื” ื ืฉืœื—ื” ื‘ืžื˜ืจื” ืœืื—ื–ืจ ืขืจื›ื™ื ืฉืœ ืžื˜ื-ื ืชื•ื ื™ื.

ื‘ื˜ื‘ืœื” ื”ื‘ืื” ืžืคื•ืจื˜ื•ืช ื ืงื•ื“ื•ืช ื”ืงืฆื” ืฉืืœื™ื”ืŸ ืืคืฉืจ ืœืฉืœื•ื— ื‘ืงืฉื•ืช HTTP ืœืžื˜ื-ื ืชื•ื ื™ื ืกืคืฆื™ืคื™ื™ื:

ื ืงื•ื“ืช ืงืฆื” ืฉืœ ืžื˜ื-ื ืชื•ื ื™ื ืชื™ืื•ืจ
/computeMetadata/v1/project/numeric-project-id ืžืกืคืจ ื”ืคืจื•ื™ืงื˜ ืฉื”ื•ืงืฆื” ืœืคืจื•ื™ืงื˜ ืฉืœื›ื.
/computeMetadata/v1/project/project-id ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜ ืฉื”ื•ืงืฆื” ืœืคืจื•ื™ืงื˜ ืฉืœื›ื.
/computeMetadata/v1/instance/region ื”ืื–ื•ืจ ืฉื‘ื• ื”ืžื•ืคืข ืคื•ืขืœ.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email ื›ืชื•ื‘ืช ื”ืื™ืžื™ื™ืœ ื‘ื—ืฉื‘ื•ืŸ ื”ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ืžื•ืงืฆื” ืœืคืจื•ื™ืงื˜.
/computeMetadata/v1/instance/service-accounts/default/ ืžืฆื™ื’ื” ืืช ื›ืœ ื—ืฉื‘ื•ื ื•ืช ื”ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืคืจื•ื™ืงื˜.
/computeMetadata/v1/instance/service-accounts/default/scopes ืจืฉื™ืžื” ืฉืœ ื›ืœ ื”ื”ื™ืงืคื™ื ื”ื ืชืžื›ื™ื ื‘ื—ืฉื‘ื•ื ื•ืช ืฉื™ืจื•ืช ืฉืžื•ื’ื“ืจื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.
/computeMetadata/v1/instance/service-accounts/default/token ืžื—ื–ื™ืจื” ืืช ืืกื™ืžื•ืŸ ื”ืื™ืžื•ืช ืฉืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœืืžืช ืืช ื”ืืคืœื™ืงืฆื™ื” ืฉืœื›ื ื‘-Google Cloud APIs ืื—ืจื™ื.

ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœืื—ื–ืจ ืืช ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜, ืฉื•ืœื—ื™ื ื‘ืงืฉื” ืืœ http://metadata.google.internal/computeMetadata/v1/project/project-id.