export async function availabilityZoneAndRegion()

in packages/opentelemetry-resource-util/src/detector/gce.ts [73:90]


export async function availabilityZoneAndRegion(): Promise<{
  zone: string;
  region: string;
}> {
  const fullZone = await metadata.instance<string>(ZONE_METADATA_ATTR);

  // Format described in
  // https://cloud.google.com/compute/docs/metadata/default-metadata-values#vm_instance_metadata
  const re = /projects\/\d+\/zones\/(?<zone>(?<region>\w+-\w+)-\w+)/;
  const {zone, region} = fullZone.match(re)?.groups ?? {};
  if (!zone || !region) {
    throw new Error(
      `zone was not in the expected format: projects/PROJECT_NUM/zones/COUNTRY-REGION-ZONE. Got ${fullZone}`
    );
  }

  return {zone, region};
}