리전 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의 웹 서비스 구조화를 참조하세요.예
다음은 Python 2 애플리케이션용 app.yaml
파일의 예시입니다.
runtime: python27 api_version: 1 threadsafe: true handlers: - url: / script: home.app - url: /index\.html script: home.app - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.app login: admin - url: /.* script: not_found.app
script:
지시문이 .py
로 끝나는 파일 경로를 포함하는 경우 스크립트가 CGI를 사용한다는 의미이며, 점으로 구분된 패키지 이름이 있는 Python 모듈 경로를 포함하는 경우 스크립트가 WSGI를 사용한다는 의미입니다.
구문
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의 |
auto_id_policy |
선택사항. 항목 식별자를 자동으로 설정하는 경우, 자동 ID 정책을 설정하여 사용되는 방법을 변경할 수 있습니다. 유효한 옵션은 다음과 같습니다.
|
builtins |
선택사항.
Python 2 SDK에는 일반적인 애플리케이션 기능을 위한 여러 핸들러가 내장되어 있습니다. 이 필드는 Python 3 런타임에서 지원 중단되었습니다. 사용할 수 있는 내장 핸들러는 다음과 같습니다.
builtins: - deferred: on - appstats: on
builtins: - name: on 위 항목은 다음과 동일합니다. includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
다음과 같이 handlers: - url: /.* script: main.app builtins: - appstats: on 핸들러의 결과 목록은 다음과 같습니다. [/_ah/stats, /.*]
includes: - included.yaml
handlers: - url: /.* script: main.app builtins: - appstats: on 핸들러의 결과 목록은 다음과 같습니다. [/.*, /_ah/stats]
|
default_expiration |
선택사항. 애플리케이션의 모든 정적 파일 핸들러에 대한 전역 기본 캐시 기간을 설정합니다. 또한 특정 정적 파일 핸들러의 캐시 기간을 구성할 수 있습니다. 값은 공백으로 구분된 숫자와 단위 문자열입니다. 단위는 d(일), h(시간), m(분), s(초)일 수 있습니다. 예를 들어 runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... 자세한 내용은 캐시 만료를 참조하세요. |
env_variables
|
선택사항.
os.environ 사전에서 확인할 수 있습니다.
env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
error_handlers |
선택사항. 다양한 오류 유형에 따라 반환되는 커스텀 오류 페이지를 구성하기 위해 사용됩니다. 이 요소는 다음 요소를 포함할 수 있습니다.
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
필수. URL 패턴 목록과 URL 패턴 처리 방법에 대한 설명입니다. App Engine은 애플리케이션 코드를 실행하거나 이미지, CSS 또는 자바스크립트와 같이 코드와 함께 업로드된 정적 파일을 제공하여 URL을 처리할 수 있습니다. |
includes
|
선택사항.
includes: - lib/user_admin.yaml App Engine은 포함된 경로를 다음 순서로 확인합니다.
|
inbound_services |
선택사항.
인바운드 요청을 수신하려면 먼저 애플리케이션에서 서비스를 사용 설정해야 합니다. 다음과 같은 인바운드 서비스를 사용할 수 있습니다. 예시:inbound_services: - mail - warmup |
instance_class |
선택사항. 이 서비스의 인스턴스 클래스입니다. 서비스의 확장에 따라 다음과 같은 값을 사용할 수 있습니다.
|
libraries |
선택사항.
Python 2.7 런타임에는 서드 파티 라이브러리가 포함되어 있습니다. 이 중 일부는 기본적으로 사용할 수 있으며 그 외에는 구성된 경우에만 사용할 수 있습니다. 이 필드는 Python 3 런타임에서 지원 중단되었습니다. libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
아직 사용자가 없는 애플리케이션을 개발 중인 경우 새로운 버전을 추적할 필요가 없습니다. 그러나 애플리케이션이 활발히 사용되는 경우 애플리케이션이 이전 버전과 호환되지 않는 새로운 라이브러리 버전을 사용할 수 있으므로 주의하시기 바랍니다. 포함된 서드 파티 라이브러리 목록은 서드 파티 라이브러리를 참조하세요. 로컬 디렉터리에 설치하여 순수 Python 서드 파티 라이브러리를 추가로 사용할 수 있습니다. 가변형 환경을 사용하는 경우 가변형 환경에서 Python 라이브러리 사용하기를 참조하세요. |
module |
참고: 이제는 모듈을 서비스라고 합니다. gcloud CLI로 앱을 관리하려면 서비스 요소를 대신 사용하세요. |
runtime |
필수. 앱에서 사용되는 런타임 환경 이름입니다. 예를 들어 Python 2.7을 지정하려면 다음을 사용하세요. runtime: python27 |
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/ |
threadsafe |
필수.
동시 요청을 사용하도록 애플리케이션을 구성합니다. Python의 스레딩 라이브러리를 사용하는 경우 이 필드는 Python 3 런타임에서 지원 중단되었습니다. threadsafe: [true | false]
참고: |
version |
이 명령어 사용에 대한 자세한 내용은 앱 배포를 참조하세요. App Engine에 배포하는 애플리케이션 코드의 버전 식별자입니다.
버전 ID는 소문자, 숫자, 하이픈을 포함할 수 있습니다. 프리픽스
참고: 항상 숫자로 지정되는 숫자 인스턴스와 구분하기 위해, 버전 이름은 문자로 시작되어야 합니다. 이렇게 하면
애플리케이션의 각 버전에는 |
vpc_access_connector |
선택사항. 서버리스 VPC 액세스 커넥터를 사용하도록 애플리케이션을 구성하여 애플리케이션이 VPC 네트워크의 내부 리소스에 요청을 보낼 수 있게 합니다. 자세한 내용은 VPC 네트워크에 연결을 참조하세요.
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
핸들러 요소
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.app login: required secure: always redirect_http_response_code: 301
사용자 요청이 리디렉션되면 HTTP 상태 코드는 |
script |
선택사항. 애플리케이션 루트 디렉터리에서 스크립트로의 경로를 지정합니다. handlers: # The root URL (/) is handled by the WSGI application named # "app" in home.py. No other URLs match this pattern. - url: / script: home.app # The URL /index.html is also handled by the home.py script. - url: /index\.html script: home.app # A regular expression can map parts of the URL to the # path of the script. - url: /browse/(books|videos|tools) script: \1.catalog.app # All other URLs use the WSGI application named in "app" # in not_found.py. - url: /.* script: not_found.app
참고: Python 최신 App Engine 런타임에서는 이 필드의 동작이 변경되었습니다. |
secure |
선택사항. 스크립트 핸들러와 정적 파일 핸들러를 포함한 모든 URL 핸들러는 secure 설정을 사용할 수 있습니다. secure 요소에서 사용할 수 있는 값은 다음과 같습니다.
handlers: - url: /youraccount/.* script: accounts.app login: required 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 |