Назад | Перейти на главную страницу

Время ожидания запроса истекает при применении плана терраформирования на AWS или описании экземпляров через интерфейс командной строки AWS

У меня возникла проблема с доступом к следующей конечной точке из экземпляра EC2, расположенного в частной подсети.

Архитектура следующая:

У меня возникла следующая проблема при попытке запустить 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. Время вышло.

Ноты

  1. Я работаю в федеративном контексте AWS через AWS SSO.
  2. Я создал пользователя IAM для terraform, поэтому нам не нужно постоянно обновлять токен SSO, поэтому это не проблема с истечением срока действия токена.
  3. Мне удалось установить инструменты из Интернета на экземпляр EC2 (Docker, Git, Terraform и т. Д.)
  4. AMI - это ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200408 (ami-0edd51cc29813e254)
  5. Я могу перечислить корзины S3, используя aws s3 ls.
  6. Я использовал последнюю версию Terraform и AWS CLI.

Есть предположения?

Я думаю, ваш вопрос: «мой сервер EC2 в частной подсети не может достичь конечной точки AWS EC2».

Конечная точка EC2 находится в Интернете, а ресурсы в частных подсетях обычно не имеют общедоступного IP-адреса или маршрута в Интернет, так что это ожидаемое поведение. Есть ли в вашей частной подсети маршрут для доступа в Интернет? Шлюз NAT или экземпляр NAT являются стандартными вариантами.

Вы можете альтернативно использовать Конечная точка EC2 VPC. Они имеют небольшую стоимость, но в основном представляют собой ярлык от вашего VPC к нужному вам ресурсу в магистрали AWS.

Однако будьте осторожны, вам может понадобиться несколько конечных точек, и они платные. Мое лучшее предположение (это не совсем понятно) - это цена, такая же, как у PrivateLink конечная точка, в настоящее время 0,01 цента / час в us-east-1. В моем текущем проекте мне нужно около 7 конечных точек, и оказалось дешевле использовать шлюз NAT.