가상 머신(VM) 인스턴스는 메타데이터 서버에 메타데이터를 저장합니다.
VM은 추가 승인 없이 메타데이터 서버 API에 자동으로 액세스할 수 있습니다. 메타데이터는 key:value
쌍으로 저장됩니다.
Compute Engine에서 실행되는 VM에서 사용할 수 있는 메타데이터 키의 기본 집합이 있습니다. 이러한 기본 메타데이터 키 목록은 기본 메타데이터 값을 참조하세요. 개별 VM 또는 프로젝트에 사용자 고유의 커스텀 메타데이터 키를 설정할 수도 있습니다. 자세한 내용은 커스텀 메타데이터 설정을 참조하세요.
기본값 또는 커스텀 메타데이터 항목을 설정한 후 해당 VM 또는 프로젝트에 대해 메타데이터 정보를 검토할 수 있습니다. 메타데이터를 보려면 VM 메타데이터 쿼리를 참조하세요.
VM 메타데이터 사용
다음 섹션에서는 메타데이터 항목을 사용하여 VM을 관리할 수 있는 몇 가지 시나리오에 대해 설명합니다.
시작 및 종료 스크립트
특히 메타데이터 서버를 시작 및 종료 스크립트와 함께 사용하면 유용합니다. 메타데이터 서버를 프로그래매틱 방식으로 사용하여 추가 승인 없이 인스턴스에 대한 고유한 정보를 가져올 수 있기 때문입니다.
예를 들어 VM의 외부 IP에 대한 메타데이터 key:value
쌍을 가져오는 시작 스크립트를 작성하고 스크립트에서 IP를 사용하여 데이터베이스를 설정할 수 있습니다.
기본 메타데이터 키는 모든 VM에서 동일하므로 스크립트를 VM마다 업데이트할 필요 없이 재사용할 수 있습니다. 따라서 덜 불안정한 애플리케이션 코드를 작성할 수 있습니다.
- 시작 스크립트에 대한 자세한 내용은 시작 스크립트 개요를 참조하세요.
- 종료 스크립트에 대한 자세한 내용은 종료 스크립트 실행을 참조하세요.
호스트 유지보수
메타데이터 서버는 scheduling/
메타데이터 디렉터리 항목 및 maintenance-event
속성을 통해 VM 예약 옵션에 대한 정보를 제공합니다. 이러한 메타데이터 값을 사용하여 유지보수 이벤트가 발생하려고 할 때 해당 이벤트에 대해 환경을 준비할 수 있도록 알림을 받을 수 있습니다.
자세한 내용은 라이브 마이그레이션 알림 받기를 참조하세요.
게스트 속성
게스트 속성은 애플리케이션이 VM에서 실행되는 동안 쓸 수 있는 특정 유형의 커스텀 메타데이터입니다. 게스트 속성은 자주 변경되지 않는 소량의 데이터가 필요한 경우에만 사용합니다. 게스트 속성에 대한 자세한 내용은 게스트 속성 설정 및 질의를 참조하세요.
메타데이터 보안 고려사항
메타데이터 서버에서 정보를 가져오도록 요청할 경우 요청과 이후의 메타데이터 응답은 VM을 실행하는 물리적 호스트에 그대로 있습니다.
하지만 메타데이터 URL을 쿼리할 수 있는 모든 프로세스에서 메타데이터 서버의 모든 값에 액세스할 수 있습니다. 여기에는 서버에 쓰는 모든 커스텀 메타데이터 값이 포함됩니다. 메타데이터 서버에 민감한 값을 쓰거나 타사 프로세스를 실행할 때 주의하는 것이 좋습니다.
제한사항
X-Forwarded-For
헤더가 포함된 요청은 메타데이터 서버에서 자동으로 거부됩니다. 이 헤더는 일반적으로 요청이 프록시되었으며 승인된 사용자가 실행한 요청이 아닐 수 있음을 나타냅니다. 보안상의 이유로 이러한 요청은 모두 거부됩니다.curl
명령어를 사용하여 서버에서 메타데이터를 검색할 때는 요청 경로에서 인코딩된 문자가 지원되지 않습니다. 인코딩된 문자는 쿼리 경로에서만 지원됩니다.예를 들어 다음 요청은 작동하지 않을 수 있습니다.
curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/123456789-compute%40developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
이 요청이 작동하도록 하려면 요청 경로에서 지원되지 않는 인코딩된 문자(
%40
)를 그에 해당하는 허용되는 값(@
)으로 바꿔야 합니다.curl "http://metadata.google.internal/computeMetadata/v1/VM/service-accounts/1234567898-compute@developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
다음 표에는 요청 경로에서 지원되지 않는 인코딩된 문자가 요약되어 있습니다.
인코딩된 문자 허용되는 값 %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
%40 @
메타데이터 요청의 일부
다음 표에서는 메타데이터 쿼리 요청의 주요 부분을 요약해서 보여줍니다.
구성요소 | 설명 |
---|---|
루트 URL | 모든 메타데이터 값은 다음 루트 URL 아래의 하위 경로로 정의됩니다. http://metadata.google.internal/computeMetadata/v1 |
요청 헤더 | 다음 헤더는 모든 요청에 있어야 합니다. Metadata-Flavor: Google 이 헤더는 요청이 안전하지 않은 소스에서 의도하지 않게 전송된 것이 아니라 메타데이터 값을 검색하기 위한 목적으로 전송되었음을 나타내며, 이 헤더가 있으면 메타데이터 서버가 요청된 데이터를 반환할 수 있습니다. 이 헤더를 제공하지 않으면 메타데이터 서버에서 요청이 거부됩니다. |
다음 단계
- 커스텀 메타데이터 설정
- VM 메타데이터 쿼리
- 메타데이터 서버에서 라이브 마이그레이션 알림 받기
- 게스트 속성 설정 및 쿼리