Amazon S3 のクロスアカウントアクセスでハマったこと

こんにちは。一重です。

とある案件で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の差異もかなりあったので、利用時にはきちんとバージョン意識して利用しないとダメですね。

タイトルとURLをコピーしました