IAMアクセスキーなしでS3に大量ファイルをアップロードする方法 - CloudShellとs3 syncを活用したタイムアウト回避術

IAMアクセスキーなしでS3に大量ファイルをアップロードする方法 - CloudShellとs3 syncを活用したタイムアウト回避術

IAMアクセスキーが使えない環境でも、AWS CloudShellのコンソールセッション認証を利用し、`aws s3 sync`で大量ファイルを安全かつ確実にS3へアップロードする方法を紹介します。
2026.05.07

はじめに

クライアント案件でAWSを利用する際、セキュリティポリシーの都合でIAMアクセスキー(プログラマティックアクセス)が発行できないケースがあります。

コンソールにはメール+パスワード+MFAでログインできるのに、CLIやSDKで使うアクセスキーだけが使えない——そんな状況でもS3への大量ファイルアップロードが必要になりました。

コンソールのアップロードボタンから試したところ、ファイル数が多い(150MB程度)とタイムアウトで途中終了してしまいます。再度アップロードしようとしても、コンソールのアップロードはスキップ機能がないため最初からやり直しになります。

この記事では、AWS CloudShellaws s3 syncを組み合わせることで、アクセスキーなしでもS3への大量アップロードを安定して行う方法を紹介します。

前提・環境

  • AWSコンソールにログイン済み(IAMユーザー、メール+パスワード+MFA)
  • IAMアクセスキーの発行権限なし
  • アップロードしたいファイルがローカルにある(今回は約150MB、1000ファイル超)
  • アップロード先のS3バケットへのアクセス権限はある

なぜコンソールのアップロードがつらいのか

AWSコンソールのS3アップロード機能はブラウザから直接PUT操作を行うため、ファイル数や容量が増えると以下の問題が発生します:

  • ブラウザのタイムアウトで途中終了する
  • 失敗してもどこまで成功したか分からない
  • 再実行時にすでにアップロード済みのファイルもすべて上書き処理される(スキップなし)

CloudShellを使った解決策

AWS CloudShellはコンソールから使えるブラウザベースのターミナル環境です。コンソールのセッション認証情報がそのまま引き継がれるため、アクセスキーが不要です。

1. ファイルをzipに圧縮する(ローカル)

cd /path/to/your/data
zip -r files.zip your-folder/

2. CloudShellを開く

AWSコンソールの上部ナビゲーションバーにある CloudShellアイコン をクリックします。

3. CloudShellにzipをアップロードする

CloudShellウィンドウ右上の 「アクション」→「ファイルのアップロード」 からローカルのzipファイルを選択します。

CloudShellアイコンはコンソール上部のツールバーにある

4. 解凍してs3 syncを実行する

unzip files.zip
aws s3 sync ./your-folder/ s3://your-bucket-name/

aws s3 syncはS3上のオブジェクトとローカルファイルのETAG(MD5ハッシュ)を比較し、変更がないファイルはスキップします。途中でネットワークが切れても、再実行すれば未完了のファイルだけ続きからアップロードされます。

5. 完了後にCloudShell上のファイルを削除する

CloudShellのストレージはセッションをまたいで永続化されます(約120日間操作がなければリセット)。不要ファイルは明示的に削除しておきましょう。

rm -rf your-folder/ files.zip

コンソールアップロードとs3 syncの比較

コンソールアップロード CloudShell + s3 sync
アクセスキー 不要 不要
タイムアウト耐性 弱い 強い(途中再開可能)
スキップ機能 なし あり(変更なし=スキップ)
大量ファイル対応 辛い 得意

まとめ

IAMアクセスキーが使えない環境でも、CloudShellを使えばCLIと同等の操作が可能です。特にs3 syncはタイムアウトに強く、再実行時のスキップ機能があるため、大量ファイルのアップロードには積極的に使っていきたいと思いました。

コンソール操作でつまずいたときは、まずCloudShellで解決できないか考えてみるとよいかもしれません。

この記事をシェアする

関連記事