透過 AWS CLI 開始使用 IPAM - Amazon Virtual Private Cloud

透過 AWS CLI 開始使用 IPAM

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

必要條件

在開始本教學課程之前,請確認已滿足以下條件:

  • 具有建立與管理 IPAM 資源之許可的 AWS 帳戶。

  • 已安裝 AWS CLI,並已使用正確的憑證完成設定。如需有關安裝 AWS CLI 的資訊,請參閱 Installing or updating the latest version of the AWS CLI。如需有關設定 AWS CLI 的資訊,請參閱 Configuration basics

  • 基本了解 IP 定址與 CIDR 標記法。

  • 基本了解 Amazon VPC 概念。

  • 完成本教學課程大約需要 30 分鐘。

建立 IPAM

第一步是建立具有作業區域的 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

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

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

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

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

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

建立頂層 IPv4 集區

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

建立頂層 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 集區

然後,在最上層集區內建立一個區域集區。此集區將專屬於特定 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 集區

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

建立開發 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

最後,建立使用 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 集區配置

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

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

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

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

疑難排解

以下是使用 IPAM 時可能遇到的一些常見問題:

  • 許可錯誤:確保您的 IAM 使用者或角色具有建立與管理 IPAM 資源所需的許可。您可能需要 ec2:CreateIpamec2:CreateIpamPool 及其他相關許可。

  • 超過資源限制:依預設,每個帳戶只能建立一個 IPAM。如果您已經有 IPAM,則需要先將其刪除,然後再建立新的 IPAM,或使用現有的 IPAM。

  • CIDR 配置失敗:將 CIDR 佈建至集區時,請確保您嘗試佈建的 CIDR 不會與其他集區中的現有配置重疊。

  • API 請求逾時:如果您遇到 "RequestExpired" 錯誤,可能是因為網路延遲或時間同步問題。再次嘗試命令。

  • 狀態錯誤:如果您收到 "IncorrectState" 錯誤,可能是因為您嘗試對未處於正確狀態的資源執行操作。等待資源完全建立或佈建,然後再繼續。

  • 配置大小錯誤:如果您收到有關配置大小的 "InvalidParameterValue" 錯誤,請確保您請求的網路遮罩長度適合集區大小。例如,您無法從 /24 集區配置 /25 CIDR。

  • 相依性違規:清除資源時,您可能會遇到 "DependencyViolation" 錯誤。這是因為資源彼此具有相依性。刪除集區之前,請務必以建立和取消佈建 CIDR 的相反順序刪除資源。

清除資源

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

  1. 刪除 VPC

    aws ec2 delete-vpc --vpc-id vpc-0abcd1234
  2. 取消佈建開發集區的 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-2abcd1234 --cidr 10.0.0.0/24
  3. 刪除開發集區:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-2abcd1234
  4. 取消佈建區域集區的 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1abcd1234 --cidr 10.0.0.0/16
  5. 刪除區域集區:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-1abcd1234
  6. 取消佈建頂層集區的 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0abcd1234 --cidr 10.0.0.0/8
  7. 刪除頂層集區:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-0abcd1234
  8. 刪除 IPAM:

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

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

注意

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

後續步驟

現在您已了解如何透過 AWS CLI 建立與使用 IPAM,您可能想要探索更進階的功能: