AWS CLI のエラー「Connect timeout on/Could not connect to the endpoint URL: ~」を回避するには

AWS CLI のエラー「Could not connect to the endpoint URL: ~」「Connect timeout on endpoint URL: ~」が発生した場合は、当該のエンドポイントへの接続性をご確認ください。
2021.01.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS CLI のコマンドを実行した際に以下のエラーが発生しました。

Could not connect to the endpoint URL: "https://<サービス名>.<リージョン名>.amazonaws.com/"
Connect timeout on endpoint URL: "https://<サービス名>.<リージョン名>.amazonaws.com/"

このエラーを回避する方法を教えてください。

どう対応すればいいの?

AWS CLI コマンド実行元の環境にて、以下の要件を満たしているかをご確認ください。

  • ネットワーク経由で AWS のサービスエンドポイントへアクセスできる設定になっているか。

また、実行コマンドについて以下の観点にて正しいかをご確認ください。

  • オプション--regionの設定に誤りがないか

再現1: ネットワーク経由で AWS のサービスエンドポイントへアクセスできない場合

本エラーを再現するために、以下を行いました。

  • パブリックサブネットを作成
  • サブネットに EC2 インスタンスを作成
  • EC2 インスタンスに S3 の読み込み権限のある IAM ロールを付与

この状態では、エンドポイントへの通信に成功し、CLI コマンドが実行されます。

$ aws s3 ls

2021-01-14 06:23:13 testbucket0123456789
2020-12-10 04:06:12 <以下略>
  • サブネットのアクセスコントロールリスト(ACL)にて、443 ポートの通信を禁止

この状態では、エンドポイントへの接続は 443 ポートでの通信ができないことから失敗します。

$ aws s3 ls

Connect timeout on endpoint URL: "https://s3.amazonaws.com/"

再現2: オプション --region に誤りがある場合

存在しないリージョン ap-northeast-6 に対して AWS CLI コマンドを実行すると、 存在しないエンドポイントへの接続試行を行い、失敗します。

$ aws s3 ls --region ap-northeast-6

Could not connect to the endpoint URL: "https://sts.ap-northeast-6.amazonaws.com/"

参考資料

Amazon S3 でのエンドポイント URL 接続エラーのトラブルシューティング