

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

# 透過 AWS CLI 開始使用 IPAM
<a name="getting-started-with-ipam-using-the-aws-cli"></a>

本教學課程引導您在單一 AWS 帳戶中，透過 AWS CLI 設定與使用 Amazon VPC IP 位址管理器 (IPAM)。到本教學課程結束時，您將已建立 IPAM、IP 位址集區階層，並將 CIDR 配置給 VPC。

## 必要條件
<a name="prerequisites"></a>

在開始本教學課程之前，請確認已滿足以下條件：
+ 具有建立與管理 IPAM 資源之許可的 AWS 帳戶。
+ 已安裝 AWS CLI，並已使用正確的憑證完成設定。如需有關安裝 AWS CLI 的資訊，請參閱 [Installing or updating the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。如需有關設定 AWS CLI 的資訊，請參閱 [Configuration basics](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)。
+ 基本了解 IP 定址與 CIDR 標記法。
+ 基本了解 Amazon VPC 概念。
+ 完成本教學課程大約需要 30 分鐘。

## 建立 IPAM
<a name="create-an-ipam"></a>

第一步是建立具有作業區域的 IPAM。IPAM 可協助規劃、追蹤與監控 AWS 工作負載的 IP 位址。

建立在 us-east-1 與 us-west-2 中具有作業區域的 IPAM：

```
aws ec2 create-ipam \
  --description "My IPAM" \
  --operating-regions RegionName=us-east-1 RegionName=us-west-2
```

此命令會建立 IPAM，並使其能夠管理指定區域中的 IP 位址。作業區域是允許 IPAM 管理 IP 位址 CIDR 的 AWS 區域。

確認您的 IPAM 已建立：

```
aws ec2 describe-ipams
```

請記下輸出中的 IPAM ID，因為後續步驟會需要它。

等待 IPAM 完全建立並可用 (約 20 秒)：

```
sleep 20
```

## 取得 IPAM 範圍 ID
<a name="get-the-ipam-scope-id"></a>

您建立 IPAM 時，AWS 會自動建立一個私有範圍和一個公有範圍。在本教學課程中，我們將使用私有範圍。

擷取 IPAM 詳細資訊與私有範圍 ID：

```
aws ec2 describe-ipams --ipam-id ipam-0abcd1234
```

將 `ipam-0abcd1234` 取代為實際的 IPAM ID。

根據輸出內容，識別並記下 `PrivateDefaultScopeId` 欄位中的私有範圍 ID。這看起來會像是 `ipam-scope-0abcd1234`。

## 建立頂層 IPv4 集區
<a name="create-a-top-level-ipv4-pool"></a>

現在，在私有範圍內建立頂層集區。此集區將作為階層中所有其他集區的父集區。

建立頂層 IPv4 集區：

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --address-family ipv4 \
  --description "Top-level pool"
```

將 `ipam-scope-0abcd1234` 取代為實際的私有範圍 ID。

等待集區完全建立並可用：

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-0abcd1234 --query 'IpamPools[0].State' --output text
```

將 `ipam-pool-0abcd1234` 取代為實際的頂層集區 ID。狀態變為 `create-complete` 後，再繼續操作。

集區可用後，為其佈建 CIDR 區塊：

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-0abcd1234 \
  --cidr 10.0.0.0/8
```

等待 CIDR 完全佈建：

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-0abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/8'].State" --output text
```

狀態變為 `provisioned` 後，再繼續操作。

## 建立區域 IPv4 集區
<a name="create-a-regional-ipv4-pool"></a>

然後，在最上層集區內建立一個區域集區。此集區將專屬於特定 AWS 區域。

建立區域 IPv4 集區：

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --source-ipam-pool-id ipam-pool-0abcd1234 \
  --locale us-east-1 \
  --address-family ipv4 \
  --description "Regional pool in us-east-1"
```

將 `ipam-scope-0abcd1234` 取代為實際的私有範圍 ID，並將 `ipam-pool-0abcd1234` 取代為頂層集區 ID。

等待區域集區完全建立並可用：

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-1abcd1234 --query 'IpamPools[0].State' --output text
```

將 `ipam-pool-1abcd1234` 取代為實際的區域集區 ID。狀態變為 `create-complete` 後，再繼續操作。

集區可用後，為其佈建 CIDR 區塊：

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-1abcd1234 \
  --cidr 10.0.0.0/16
```

等待 CIDR 完全佈建：

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-1abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/16'].State" --output text
```

狀態變為 `provisioned` 後，再繼續操作。

## 建立開發 IPv4 集區
<a name="create-a-development-ipv4-pool"></a>

現在，在區域集區內建立開發集區。此集區將用於開發環境。

建立開發 IPv4 集區：

```
aws ec2 create-ipam-pool \
  --ipam-scope-id ipam-scope-0abcd1234 \
  --source-ipam-pool-id ipam-pool-1abcd1234 \
  --locale us-east-1 \
  --address-family ipv4 \
  --description "Development pool"
```

將 `ipam-scope-0abcd1234` 取代為實際的私有範圍 ID，並將 `ipam-pool-1abcd1234` 取代為區域集區 ID。

注意：請務必包含 `--locale` 參數，以符合父集區的地區設定。

等待開發集區完全建立並可用：

```
aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-2abcd1234 --query 'IpamPools[0].State' --output text
```

將 `ipam-pool-2abcd1234` 取代為實際的開發集區 ID。狀態變為 `create-complete` 後，再繼續操作。

集區可用後，為其佈建 CIDR 區塊：

```
aws ec2 provision-ipam-pool-cidr \
  --ipam-pool-id ipam-pool-2abcd1234 \
  --cidr 10.0.0.0/24
```

等待 CIDR 完全佈建：

```
aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-2abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/24'].State" --output text
```

狀態變為 `provisioned` 後，再繼續操作。

## 建立使用 IPAM 集區 CIDR 的 VPC
<a name="create-a-vpc-using-an-ipam-pool-cidr"></a>

最後，建立使用 IPAM 集區 CIDR 的 VPC。下面示範如何使用 IPAM 將 IP 位址空間配置給 AWS 資源。

建立使用 IPAM 集區 CIDR 的 VPC：

```
aws ec2 create-vpc \
  --ipv4-ipam-pool-id ipam-pool-2abcd1234 \
  --ipv4-netmask-length 26 \
  --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=IPAM-VPC}]'
```

將 `ipam-pool-2abcd1234` 取代為實際的開發集區 ID。

`--ipv4-netmask-length 26` 參數表示您希望從集區配置 /26 CIDR 區塊 (64 個 IP 位址)。系統會選擇此網路遮罩長度，確保其小於集區的 CIDR 區塊 (/24)。

確認您的 VPC 已建立：

```
aws ec2 describe-vpcs --filters "Name=tag:Name,Values=IPAM-VPC"
```

## 驗證 IPAM 集區配置
<a name="verify-the-ipam-pool-allocation"></a>

檢查 CIDR 是否已從 IPAM 集區配置：

```
aws ec2 get-ipam-pool-allocations \
  --ipam-pool-id ipam-pool-2abcd1234
```

將 `ipam-pool-2abcd1234` 取代為實際的開發集區 ID。

此命令會顯示來自指定 IPAM 集區的所有配置，包括您剛建立的 VPC。

## 疑難排解
<a name="troubleshooting"></a>

以下是使用 IPAM 時可能遇到的一些常見問題：
+ **許可錯誤**：確保您的 IAM 使用者或角色具有建立與管理 IPAM 資源所需的許可。您可能需要 `ec2:CreateIpam`、`ec2:CreateIpamPool` 及其他相關許可。
+ **超過資源限制**：依預設，每個帳戶只能建立一個 IPAM。如果您已經有 IPAM，則需要先將其刪除，然後再建立新的 IPAM，或使用現有的 IPAM。
+ **CIDR 配置失敗**：將 CIDR 佈建至集區時，請確保您嘗試佈建的 CIDR 不會與其他集區中的現有配置重疊。
+ **API 請求逾時**：如果您遇到 "RequestExpired" 錯誤，可能是因為網路延遲或時間同步問題。再次嘗試命令。
+ **狀態錯誤：**如果您收到 "IncorrectState" 錯誤，可能是因為您嘗試對未處於正確狀態的資源執行操作。等待資源完全建立或佈建，然後再繼續。
+ **配置大小錯誤**：如果您收到有關配置大小的 "InvalidParameterValue" 錯誤，請確保您請求的網路遮罩長度適合集區大小。例如，您無法從 /24 集區配置 /25 CIDR。
+ **相依性違規**：清除資源時，您可能會遇到 "DependencyViolation" 錯誤。這是因為資源彼此具有相依性。刪除集區之前，請務必以建立和取消佈建 CIDR 的相反順序刪除資源。

## 清除資源
<a name="clean-up-resources"></a>

完成本教學課程後，您應該清理所建立的資源，以避免產生不必要的費用。

1. 刪除 VPC

   ```
   aws ec2 delete-vpc --vpc-id vpc-0abcd1234
   ```

1. 取消佈建開發集區的 CIDR：

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-2abcd1234 --cidr 10.0.0.0/24
   ```

1. 刪除開發集區：

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-2abcd1234
   ```

1. 取消佈建區域集區的 CIDR：

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1abcd1234 --cidr 10.0.0.0/16
   ```

1. 刪除區域集區：

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-1abcd1234
   ```

1. 取消佈建頂層集區的 CIDR：

   ```
   aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0abcd1234 --cidr 10.0.0.0/8
   ```

1. 刪除頂層集區：

   ```
   aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-0abcd1234
   ```

1. 刪除 IPAM：

   ```
   aws ec2 delete-ipam --ipam-id ipam-0abcd1234
   ```

將所有 ID 取代為實際的資源 ID。

**注意**  
在這些操作之間，您可能需要等待資源完全刪除，然後再繼續進行下一個步驟。如果您遇到相依性違規，請等待幾秒鐘，然後再試一次。

## 後續步驟
<a name="next-steps"></a>

現在您已了解如何透過 AWS CLI 建立與使用 IPAM，您可能想要探索更進階的功能：
+ [規劃 IP 地址佈建](planning-ipam.md) – 了解如何有效地規劃 IP 位址空間
+ [依資源監控 CIDR 使用情況](monitor-cidr-compliance-ipam.md) – 了解如何監控 IP 位址用量
+ [透過 AWS RAM 共用 IPAM 集區](share-pool-ipam.md) – 了解如何跨 AWS 帳戶共用 IPAM 集區
+ [將 IPAM 與 AWS Organizations 中的帳戶整合](enable-integ-ipam.md) – 探索如何在組織中使用 IPAM