Amazon-Web-Services

在 AWS 上應用 terraform 計劃或通過 AWS CLI 描述實例時請求超時

  • May 7, 2020

我從位於私有子網中的 EC2 實例訪問以下端點時遇到問題。

架構如下:

  • 專有網路

    • 私有子網 1(在 0.0.0.0/0 上有一條到 Transit Gateway 的路由)
    • 私有子網 2(在 0.0.0.0/0 上有一條到 Transit Gateway 的路由)
    • 中轉網關
    • 兩個子網的 NACL 都允許所有入口和出口埠。

嘗試執行時出現以下問題terraform planterraform apply

2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: ---[ REQUEST POST-SIGN ]-----------------------------
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: POST / HTTP/1.1
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Host: ec2.ca-central-1.amazonaws.com
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: User-Agent: aws-sdk-go/1.30.16 (go1.13.7; linux; amd64) APN/1.0 HashiCorp/1.0 Terraform/0.1
2.24 (+https://www.terraform.io)
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Content-Length: 87
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Authorization: ............ SNIP .................
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Content-Type: application/x-www-form-urlencoded; charset=utf-8
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: X-Amz-Date: 20200506T132216Z
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Accept-Encoding: gzip
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4:
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: Action=DescribeAccountAttributes&AttributeName.1=supported-platforms&Version=2016-11-15
2020-05-06T13:22:16.123Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: -----------------------------------------------------
2020-05-06T13:22:46.124Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: 2020/05/06 13:22:46 [DEBUG] [aws-sdk-go] DEBUG: Send Request ec2/DescribeAccountAttributes
failed, attempt 0/25, error RequestError: send request failed
2020-05-06T13:22:46.124Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: caused by: Post https://ec2.ca-central-1.amazonaws.com/: dial tcp 10.0.19.205:443: i/o time
out
2020-05-06T13:22:46.166Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: 2020/05/06 13:22:46 [DEBUG] [aws-sdk-go] DEBUG: Retrying Request ec2/DescribeAccountAttribu
tes, attempt 1
2020-05-06T13:22:46.166Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: 2020/05/06 13:22:46 [DEBUG] [aws-sdk-go] DEBUG: Request ec2/DescribeAccountAttributes Detai
ls:
2020-05-06T13:22:46.166Z [DEBUG] plugin.terraform-provider-aws_v2.60.0_x4: ---[ REQUEST POST-SIGN ]-----

aws ec2 describe-instances從 AWS CLI執行時,我遇到了完全相同的問題。超時。

筆記

  1. 我正在通過 AWS SSO 在聯合 AWS 環境中工作。
  2. 我為 terraform 創建了一個 IAM 使用者,因此我們不必不斷刷新 SSO 令牌,因此這不是令牌過期問題。
  3. 我能夠在 EC2 實例(Docker、Git、Terraform 等)上安裝來自 Internet 的工具
  4. AMI是ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200408 (ami-0edd51cc29813e254)
  5. 我可以使用aws s3 ls.
  6. 我使用了最新版本的 Terraform 和 AWS CLI。

有什麼想法嗎?

我認為您的問題是“我在私有子網中的 EC2 伺服器無法訪問 AWS EC2 端點”。

EC2 端點位於 Internet 上,私有子網中的資源通常沒有公共 IP 或到 Internet 的路由,因此這是預期的行為。您的私有子網是否有訪問 Internet 的路由?NAT 網關或 NAT 實例是標準選項。

您也可以使用EC2 VPC 終端節點。這些成本很低,但基本上是從您的 VPC 到 AWS 主幹所需資源的捷徑。

但請注意,您可能需要多個端點,而且它們不是免費的。我最好的猜測(不是很清楚)是成本與PrivateLink端點相同,目前在 us-east-1 中為 0.01 美元/小時。在我目前的項目中,我需要大約 7 個端點,而且使用 NAT 網關更便宜。

引用自:https://serverfault.com/questions/1016125