

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 附錄 A — 取得可用區域識別碼
<a name="appendix-a-getting-the-availability-zone-id"></a>

 如果您正在使用AWS.NET SDK（以及其他一些類似的JavaScript) 或在 EC2 執行個體 (包括 Amazon ECS 和 Amazon EKS) 上執行您的系統，您可以直接取得可用區域 ID。
+  **AWS.NET SDK** 

  ```
  Amazon.Util.EC2InstanceMetadata.GetData(“/placement/availability-zone-id”)
  ```
+  **EC2 實例中繼資料服務** 

  ```
  curl http://169.254.169.254/latest/meta-data/placement/availability-zone-id
  ```

   在其他平台 (例如 Lambda 和 Fargate) 上，您將需要擷取可用區域名稱，然後尋找與可用區域 ID 的對應。使用可用區域名稱，您可以找到如下所示的可用區域 ID：

  ```
  aws ec2 describe-availability-zones --zone-names $AZ --output json
      --query ‘AvailabilityZones[0].ZoneId’
  ```

   下面的實例找到要在上面的例子中使用的可用區域名稱都寫在 bash 中使用AWS CLI和包[JQ](https://stedolan.github.io/jq/)。需要將它們轉換為用於工作負載的程式設計語言。
  +  **亞馬遜 ECS**-如果主機封鎖執行個體中繼資料服務 (IMDS)，您可以改用容器中繼資料檔案。

    ```
    AZ=$(cat $ECS_CONTAINER_METADATA_FILE | jq –-raw-output
        .AvailabilityZone)
    ```
  +  **法蓋特**(平台版本 1.4 或更新版本) 

    ```
    AZ=$(curl $ECS_CONTAINER_METADATA_URI_V4/task | jq --raw-output
        .AvailabilityZone)
    ```
  +  **拉姆達**— 可用區域不會直接暴露給功能。要找到它，您需要完成幾個步驟。為此，您將需要構建一個私有 API 閘道 REST 端點，該端點返回請求者的 IP 地址。這將識別分配給該功能正在使用的彈性網絡接口的私有 IP。
    +  呼叫拉姆達`GetFunction`用於尋找函數的虛擬私人雲端識別碼的 API。
    +  呼叫 API 閘道服務以取得函數的 IP。
    +  使用 IP 和 VPC ID，尋找相關聯的網路介面並擷取可用區域。

    ```
    VPC_ID=$(aws lambda get-function --function-name $ AWS_LAMBDA_FUNCTION_NAME --region $AWS_REGION --output json --query ‘Configuration.VpcConfig.VpcId’)
    
    MY_IP=$(curl http://whats-my-private-ip.internal)
    
    AZ=$(aws ec2 describe-network-interfaces --filters Name=private-ip-address,Values=$MY_IP Name=vpc-id,Values=$VPC_ID --region $AWS_REGION --output json –query ‘NetworkInterfaces[0].AvailabilityZone’)
    ```