Amazon-Web-Services
在 AWS 上應用 terraform 計劃或通過 AWS CLI 描述實例時請求超時
我從位於私有子網中的 EC2 實例訪問以下端點時遇到問題。
架構如下:
專有網路
- 私有子網 1(在 0.0.0.0/0 上有一條到 Transit Gateway 的路由)
- 私有子網 2(在 0.0.0.0/0 上有一條到 Transit Gateway 的路由)
- 中轉網關
- 兩個子網的 NACL 都允許所有入口和出口埠。
嘗試執行時出現以下問題
terraform plan
或terraform 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執行時,我遇到了完全相同的問題。超時。筆記
- 我正在通過 AWS SSO 在聯合 AWS 環境中工作。
- 我為 terraform 創建了一個 IAM 使用者,因此我們不必不斷刷新 SSO 令牌,因此這不是令牌過期問題。
- 我能夠在 EC2 實例(Docker、Git、Terraform 等)上安裝來自 Internet 的工具
- AMI是
ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200408 (ami-0edd51cc29813e254)
- 我可以使用
aws s3 ls
.- 我使用了最新版本的 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 網關更便宜。