리전 ID
REGION_ID
는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r
이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.
리전 ID에 대해 자세히 알아보세요.
app.yaml
파일에서 App Engine 앱의 설정을 구성할 수 있습니다.
이 파일은 URL 경로가 요청 핸들러와 정적 파일에 대응하는 방식을 지정합니다.
app.yaml
파일에는 런타임 및 최신 버전 식별자와 같은 앱 코드에 대한 정보도 포함되어 있습니다.
앱의 각 서비스에는 서비스 배포에 필요한 설명어 역할을 하는 고유 app.yaml
파일이 있습니다. 앱 내의 추가 서비스를 위해 app.yaml
파일을 만들고 배포하려면 먼저 default
서비스의 app.yaml
파일을 만들어야 합니다.
디렉터리 구조
앱에서 여러 서비스 구조화에 대한 자세한 내용은 App Engine의 웹 서비스 구조화를 참조하세요.예시
다음은 PHP 5 애플리케이션의 app.yaml
파일 예시입니다.
runtime: php55 api_version: 1 handlers: # Serve images as static resources. - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ application_readable: true # Serve php scripts. - url: /(.+\.php)$ script: \1
위 예시는 확장명이 gif
, png
또는 jpg
인 파일을 정적 리소스로 제공합니다. 이러한 파일은 런타임에 애플리케이션 코드로 읽을 수 있도록 구성되었습니다.
또한 이 예시에서는 모든 PHP 스크립트를 제공합니다. url: /([^/]+\.php)
표현식을 사용하면 스크립트 핸들러를 루트 수준 스크립트로 제한할 수 있습니다. 기존 애플리케이션에서는 Apache mod_rewrite $_GET['q']
라우팅을 시뮬레이션하는 것이 유용할 수 있습니다.
다음은 보다 자세한 app.yaml
구성의 예시입니다.
runtime: php55 api_version: 1 handlers: - url: / script: home.php - url: /index\.html script: home.php - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.php login: admin - url: /.* script: not_found.php
구문
app.yaml
구문은 YAML 형식입니다.
YAML 형식은 주석을 지원합니다. 우물 정자(#
)로 시작하는 줄은 무시됩니다.
# This is a comment.
URL 및 파일 경로 패턴은 대조 요소와 대조 클래스를 제외한 POSIX 확장 정규 표현식 구문을 사용합니다. 그룹화된 일치로의 역참조(예: \1
)가 지원되며 Perl 확장명(\w \W \s \S \d \D
)도 지원됩니다.
런타임 및 앱 요소
요소 | 설명 |
---|---|
application |
이러한 명령어 사용에 관한 자세한 내용은 앱 배포를 참조하세요. 애플리케이션 ID는 Google Cloud 콘솔에서 애플리케이션을 만들 때 지정한 Google Cloud 콘솔 프로젝트 ID입니다. |
api_version |
필수. 앱에서 사용하는 특정 런타임 환경의 API 버전입니다. 이 필드는 최신 App Engine 런타임에서 지원 중단되었습니다.
Google에서 새로운 버전의 런타임 환경 API 지원이 발표되더라도, 이전에 배포된 앱에는 해당 앱을 작성하는 데 사용된 API 버전이 계속 사용됩니다. 앱을 새로운 API 버전으로 업그레이드하려면 이 값을 변경한 후 앱을 App Engine에 다시 배포해야 합니다. 현재까지 App Engine의 |
default_expiration |
선택사항. 애플리케이션의 모든 정적 파일 핸들러에 대한 전역 기본 캐시 기간을 설정합니다. 또한 특정 정적 파일 핸들러의 캐시 기간을 구성할 수 있습니다. 값은 공백으로 구분된 숫자와 단위 문자열입니다. 단위는 d(일), h(시간), m(분), s(초)일 수 있습니다. 예를 들어 runtime: php55 api_version: 1 default_expiration: "4d 5h" handlers: # ... 자세한 내용은 캐시 만료를 참조하세요. |
env_variables
|
선택사항.
env_variables: MY_VAR: "my value" MY_VAR 및 my value 는 정의하려는 환경 변수의 이름과 값이며, 각 환경 변수 항목은 env_variables 요소 아래에 두 칸의 공백으로 들여쓰기됩니다. 값이 할당되지 않은 환경 변수에 기본값은 "None" 입니다.
그런 다음 echo getenv('MY_VAR'); echo $_SERVER['MY_VAR']; |
error_handlers |
선택사항. 다양한 오류 유형에 따라 반환되는 커스텀 오류 페이지를 구성하기 위해 사용됩니다. 이 요소는 다음 요소를 포함할 수 있습니다.
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
필수. URL 패턴 목록과 URL 패턴 처리 방법에 대한 설명입니다. App Engine은 애플리케이션 코드를 실행하거나 이미지, CSS 또는 자바스크립트와 같이 코드와 함께 업로드된 정적 파일을 제공하여 URL을 처리할 수 있습니다. |
inbound_services |
선택사항.
인바운드 요청을 수신하려면 먼저 애플리케이션에서 서비스를 사용 설정해야 합니다. 다음과 같은 인바운드 서비스를 사용할 수 있습니다. 예시:inbound_services: - mail - warmup |
instance_class |
선택사항. 이 서비스의 인스턴스 클래스입니다. 서비스의 확장에 따라 다음과 같은 값을 사용할 수 있습니다.
|
module |
참고: 이제는 모듈을 서비스라고 합니다. gcloud CLI로 앱을 관리하려면 서비스 요소를 대신 사용하세요. |
runtime |
필수. 앱에서 사용되는 런타임 환경 이름입니다. 예를 들어 PHP 5를 지정하려면 다음을 사용하세요. runtime: php55 |
service |
서비스의 이전 명칭은 모듈입니다.
gcloud CLI 또는 gcloud CLI 기반 플러그인(예:
서비스를 만들 경우 필수입니다.
service: service-name 참고: module: service-name |
service_account |
선택사항. service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
선택사항.
skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ 양식 이름이
위 정규 표현식 목록을 확장하려면 위 목록을 복사하여 skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
전체 디렉터리를 건너뛰려면 목록에 디렉터리 이름을 추가합니다. 예를 들어 skip_files: - logs/ |
version |
이 명령어 사용에 대한 자세한 내용은 앱 배포를 참조하세요. App Engine에 배포하는 애플리케이션 코드의 버전 식별자입니다.
버전 ID는 소문자, 숫자, 하이픈을 포함할 수 있습니다. 프리픽스
참고: 항상 숫자로 지정되는 숫자 인스턴스와 구분하기 위해, 버전 이름은 문자로 시작되어야 합니다. 이렇게 하면
애플리케이션의 각 버전에는 |
핸들러 요소
handlers
요소는 app.yaml
구성 파일에서 필수 요소입니다. 이 요소는 URL 패턴의 목록과 해당 목록 처리 방법에 대한 설명을 제공합니다. App Engine은 애플리케이션 코드를 실행하거나 이미지, CSS 또는 자바스크립트와 같은 코드와 함께 업로드된 정적 파일을 제공하여 URL을 처리할 수 있습니다.
패턴은 app.yaml
파일에 표시된 순서에 따라 위에서 아래로 평가됩니다. 패턴이 URL과 일치하는 첫 번째 매핑이 요청 처리를 위해 사용됩니다.
다음 표에는 스크립트, 정적 파일, 정적 디렉터리, 기타 설정의 동작을 제어하는 handlers
요소의 하위 요소가 나와 있습니다.
요소 | 설명 |
---|---|
application_readable |
선택사항. 부울. 기본적으로 정적 파일 핸들러에 선언된 파일은 정적 데이터로 업로드되며, 최종 사용자에게만 제공됩니다. 애플리케이션은 이러한 파일을 읽을 수 없습니다. 이 필드를 true로 설정할 경우, 애플리케이션이 파일을 읽을 수 있도록 해당 파일이 코드 데이터로도 업로드됩니다.
두 가지 업로드 모두 사용자 코드와 정적 데이터 스토리지 리소스 할당량에 따라 청구됩니다.
이 필드는 최신 App Engine 런타임에서 지원 중단되었습니다. |
expiration
|
선택사항.
이 핸들러에서 제공된 정적 파일을 웹 프록시와 브라우저가 캐시해야 하는 기간입니다. 값은 공백으로 구분된 숫자와 단위 문자열입니다. 단위는 d (일), h (시간), m (분), s (초)일 수 있습니다. 예를 들어 "4d 5h" 는 파일이 처음 요청된 후 4일 5시간으로 캐시 만료 시간을 설정합니다. 생략하면 애플리케이션의 default_expiration 이 사용됩니다. 자세한 내용은 캐시 만료를 참조하세요.
|
http_headers |
선택사항. 정적 파일 또는 디렉터리 핸들러의 응답에 HTTP 헤더를 설정할 수 있습니다. handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... CORS 지원이 기능의 중요한 용도 하나는 다른 App Engine 앱에서 호스팅되는 파일 액세스와 같이 CORS(원본 간 리소스 공유) 지원입니다.
예를 들어 정적 파일 핸들러가 필요한 응답 헤더 값을 반환하도록 만드는 방법은 다음과 같습니다. handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ... 참고: 모든 사람이 애셋에 액세스하도록 허용하려면 |
mime_type |
선택사항. 이 값을 지정하면 이 핸들러로 제공되는 모든 파일은 지정된 MIME 유형을 사용하여 제공됩니다. 지정하지 않으면 파일의 MIME 유형이 파일의 파일 이름 확장명에서 파생됩니다. 같은 파일이 여러 확장명으로 업로드되면 확장명은 업로드 수행 순서에 따라 달라질 수 있습니다. 사용 가능한 MIME 미디어 유형에 대한 자세한 내용은 IANA MIME 미디어 유형 웹사이트를 참조하세요. |
redirect_http_response_code |
선택사항.
handlers: - url: /youraccount/.* script: accounts.php secure: always redirect_http_response_code: 301
사용자 요청이 리디렉션되면 HTTP 상태 코드는 |
script |
선택사항. 애플리케이션 루트 디렉터리에서 스크립트로의 경로를 지정합니다. ... handlers: - url: /profile/(.*)/(.*) script: /employee/\2/\1.php # specify a script 최신 App Engine 런타임에서는 이 필드의 동작이 변경되었습니다. |
secure |
선택사항. 스크립트 핸들러와 정적 파일 핸들러를 포함한 모든 URL 핸들러는 secure 설정을 사용할 수 있습니다. secure 요소에서 사용할 수 있는 값은 다음과 같습니다.
handlers: - url: /youraccount/.* script: accounts.php secure: always
개발용 웹 서버는 HTTPS 연결을 지원하지 않습니다.
HTTPS가 있는 커스텀 도메인을 사용하려면 먼저 해당 도메인에 SSL 인증서를 활성화하고 구성해야 합니다. Google 계정 로그인과 로그아웃은 애플리케이션의 URL 구성 방식과 관계없이 항상 보안 연결을 사용하여 수행됩니다. |
static_dir
|
선택사항. 애플리케이션 루트 디렉터리의 정적 파일을 포함하는 디렉터리의 경로입니다. 일치하는
디렉터리의
이 디렉터리의 모든 파일은 앱과 함께 정적 파일로 업로드됩니다. App Engine은 앱의 파일과 별도로 정적 파일을 저장하고 제공합니다. 기본적으로 정적 파일은 앱의 파일 시스템에 제공되지 않습니다. 이를 변경하려면 handlers: # All URLs beginning with /stylesheets are treated as paths to # static files in the stylesheets/ directory. - url: /stylesheets static_dir: stylesheets # ... |
static_files
|
선택사항. 정적 파일 패턴 핸들러가 URL 패턴을 애플리케이션을 통해 업로드된 정적 파일의 경로와 연결합니다. URL 패턴 정규 표현식은 파일 경로 생성 시 사용할 정규 표현식 그룹을 정의할 수 있습니다. handlers: # All URLs ending in .gif .png or .jpg are treated as paths to # static files in the static/ directory. The URL pattern is a # regular expression, with a grouping that is inserted into the # path to the file. - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ # ...
App Engine은 애플리케이션 파일과 별도로 정적 파일을 저장하고 제공합니다. 기본적으로 정적 파일은 애플리케이션의 파일 시스템에 제공되지 않습니다. 이를 변경하려면 정적 파일은 애플리케이션 코드 파일과 동일할 수 없습니다. 정적 파일 경로가 동적 핸들러에 사용된 스크립트의 경로와 일치할 경우, 해당 스크립트는 해당 동적 핸들러에 제공되지 않습니다. |
upload |
선택사항. 이 핸들러에서 참조되는 모든 파일의 파일 경로와 일치하는 정규 표현식입니다. 이 정규 표현식이 필요한 이유는 핸들러가 제공된 |
url |
다음 요소와 함께 사용되면 URL 패턴 동작이 일부 달라집니다.
|
요소 확장
다음 표의 요소는 애플리케이션의 확장 방식을 구성합니다. App Engine 앱 확장 방식에 대한 자세한 내용은 확장 유형을 참조하세요.
요소 | 설명 |
---|---|
automatic_scaling |
선택사항. F1 이상의 인스턴스 클래스를 사용하는 애플리케이션에만 적용됩니다. 이 요소를 지정하면 인스턴스 수의 최소 및 최대 수준, 지연 시간, 서비스의 동시 연결 수 설정 등 자동 확장의 기본 설정을 변경할 수 있습니다. 이 요소는 다음 요소를 포함할 수 있습니다.
automatic_scaling: target_cpu_utilization: 0.65 min_instances: 5 max_instances: 100 min_pending_latency: 30ms max_pending_latency: automatic max_concurrent_requests: 50 |
basic_scaling |
B1 이상의 인스턴스 클래스를 사용하는 애플리케이션은 이 요소 또는 이 요소는 인스턴스 클래스 B1 이상의 기본 확장을 사용 설정하며 다음 요소를 포함할 수 있습니다.
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
B1 이상의 인스턴스 클래스를 사용하는 애플리케이션은 이 요소 또는 이 요소는 인스턴스 클래스 B1 이상의 수동 확장을 사용 설정하며 다음 요소를 포함할 수 있습니다.
manual_scaling: instances: 5 |