こんにちは。一重です。
とある案件でS3のクロスアカウントアクセスの検証を行った際に、エラーでハマったので共有したいと思います。
VPCエンドポイント経由でアクセスをする際、接続がタイムアウトしているというメッセージが出ており、その原因について今回は記載していきます。
やりたかったこと
下記情報を参考にアカウントAに構築したLinuxサーバからAWS CLIを利用して、アカウントBのS3バケットにアクセスしようとしました。
すると下記のエラーになってしまいました。
[ec2-user@XXXX ~]$ aws s3 ls s3://bucketname
Connect timeout on endpoint URL: "https://sts.amazonaws.com/"
原因
エラーになっていた原因はAWS CLIのバージョンが古かったことでした。
この記事によると「AWS CLI バージョン 1 はデフォルトで、AWS STS リクエストをグローバル AWS STS エンドポイントに送信する」設定になっているようです。
- AWS CLIバージョン1はデフォルトで、AWS STSリクエストをグローバルAWS STSエンドポイントに送信するため、リージョン固有の設定によってタイムアウトが発生する
- AWS CLIバージョン2ではデフォルトでリージョンエンドポイントにSTSリクエストが送信されるため、この問題が発生しない
解決方法
AWS CLIバージョン1をアンインストールして、AWS CLIバージョン2をインストールすることで解決しました。
バージョン1からバージョン2への詳しい更新方法は下記をご参照ください。
まとめ
これまでにAWS CLIは多少触ったことがあったのですが、特にエラーや不都合がなかったのでバージョンを意識せずに利用していました。
原因で参照しているURL先を見ると、バージョン1とバージョン2の差異もかなりあったので、利用時にはきちんとバージョン意識して利用しないとダメですね。