はじめに
この文書は、AWS CLI(コマンドラインインターフェース)を使ってAmazon S3を操作する方法を、実践的にまとめた入門ガイドです。基本的なS3操作コマンド一覧、CLIのインストールとセットアップ、バケット管理、応用的なファイル検索、さらに最新のS3機能であるベクトル検索(S3 Vectors)まで扱います。
対象読者
- コマンドラインでS3を操作したい方
- 開発者や運用担当者、学習を始めた方
本書の読み方
第2章でCLIの概要を説明し、第4章で環境を整えます。第3章と第5章で実際のコマンドを使い、第6章で検索や応用操作を扱います。第7章ではS3 Vectorsの基本を解説します。各章は実例を交えて丁寧に進めます。
前提条件
- AWSアカウントとS3にアクセスできる権限
- 基本的な端末操作(cdやlsなど)ができること
注意点
認証情報は安全に管理してください。共有や公開リポジトリに置かないようご注意ください。
このガイドを読み進めれば、S3の基本操作から応用まで、実務で使える知識を身につけられます。
AWS CLIとは
概要
AWS CLI(Amazon Web Services Command Line Interface)は、AWSのサービスをコマンドラインから操作するためのツールです。ブラウザの画面を開かずに、バケットやファイルを一覧表示、アップロード、同期などの操作を実行できます。操作を自動化するときやスクリプトから使うと特に便利です。
CLIの特徴
- テキストベースで高速に操作できます。
- 同じコマンドを繰り返し実行して自動化できます。
- CI/CDパイプラインやサーバー上での定期処理に組み込みやすいです。
基本概念(実例で説明)
- プロファイル: 複数の認証情報を切り替えられます(例: aws configure –profile prod)。
- リージョン: 資源の配置先を指定します(例: –region ap-northeast-1)。
- コマンド構造: aws <サービス> <操作> <オプション>(例: aws s3 ls s3://my-bucket)。
簡単な例
- バケット一覧: aws s3 ls
- ファイルアップロード: aws s3 cp ./local.txt s3://my-bucket/remote.txt
- 同期: aws s3 sync ./local-dir s3://my-bucket/dir
注意点
- 認証情報(アクセスキー)は安全に管理してください。誤って公開すると不正利用されます。
- 大量データの操作では通信量や課金に注意してください。
この章では、まずCLIの役割と基本的な使い方を理解しておくと、以降のS3操作がスムーズになります。
S3を操作する基本コマンド一覧
S3を日常的に管理するときによく使うコマンドを、使い方と注意点を交えて分かりやすくまとめます。これらを組み合わせることで、アップロード・ダウンロード・同期・削除などが効率よく行えます。
代表的なコマンドと簡単な説明
aws s3 ls
- 全バケットの一覧を表示します。
aws s3 ls s3://バケット名/パス
- 指定したバケット内のファイルやフォルダを一覧表示します。
aws s3 mb s3://バケット名
- 新しいバケットを作成します。リージョン指定が必要な場合があります。
aws s3 rb s3://バケット名
- 空のバケットを削除します。中身があると失敗します。
aws s3 rb s3://バケット名 --force
- バケットの中身を含めて強制的に削除します。取り消しできないので注意してください。
aws s3 cp ファイルパス s3://バケット名/パス
- ローカルファイルをS3にコピー(アップロード)します。フォルダは
--recursive
で再帰的にコピーできます。 aws s3 cp s3://バケット名/ファイルパス ローカルパス
- S3からローカルへダウンロードします。
aws s3 sync フォルダパス s3://バケット名/パス
- フォルダを丸ごと同期します。差分だけ転送するため効率的です。テスト時は
--dryrun
で挙動確認できます。 aws s3 mv ファイルパス s3://バケット名/パス
- S3内またはローカルとS3間でファイルを移動します。
aws s3 rm s3://バケット名/ファイルパス
- S3内のファイルを削除します。フォルダごと削除する際は
--recursive
を付けます。
よく使うオプション
--recursive
:ディレクトリを再帰的に処理します。--exclude
/--include
:特定ファイルを除外・指定できます。--dryrun
:実際の変更を行わずに結果を確認します。
注意点
削除や強制操作は元に戻せません。特に--force
や--recursive
を使うときは、--dryrun
で確認する習慣をつけると安心です。
AWS CLIのインストールとセットアップ
インストールの概要
AWS CLIはコマンドラインからAWSを操作するためのツールです。まずローカルにインストールし、認証情報を設定します。公式が推奨する方法を使うと安全です。
OS別の簡単な手順
- macOS: Homebrewを使うと簡単です。
- brew install awscli
- Windows: MSIインストーラーをダウンロードして実行します。
- Linux: パッケージマネージャや公式のインストーラー(curlで取得して実行)を使います。
aws configureでの初期設定
インストール後、次のコマンドで対話的に設定します。
– aws configure
入力する項目: AWS Access Key ID(アクセスキー)、AWS Secret Access Key(シークレットキー)、デフォルトリージョン名、出力フォーマット(json等)。
プロファイルを分ける場合は –profile オプションを使います。
例: aws configure –profile myprofile
設定確認とよくあるトラブル
- 確認: aws sts get-caller-identity や aws s3 ls で認証確認します。
- 認証ファイル: ~/.aws/credentials と ~/.aws/config を確認してください。
- 権限エラーが出る場合はIAMの権限やキーの有効性を確認します。
注意点
アクセスキーは第三者に漏らさないでください。必要に応じてIAMロールやMFAの併用を検討してください。
S3バケット操作の基本
「S3のバケットを作ったり削除したりするのがわからない……」という方へ。ここでは、AWS CLIでのバケット操作の基本コマンドと、実用的な注意点をやさしく解説します。
基本コマンド
- バケット作成
aws s3 mb s3://my-bucket-name
説明: 指定した名前でバケットを作成します。リージョンを指定したい場合は –region オプションを追加します。
- バケット一覧表示
aws s3 ls
説明: 自分のアカウントにあるバケット一覧を表示します。リージョンごとの表示は aws s3api を使うと詳細が見えます。
- バケット削除(空であることが必要)
aws s3 rb s3://my-bucket-name
説明: バケットが空でないと削除できません。中身があるとエラーになります。
- バケットを中身ごと強制削除
aws s3 rb s3://my-bucket-name --force
説明: バケット内のオブジェクトを再帰的に削除してからバケットを削除します。バージョニングが有効なバケットではバージョン付きオブジェクトの削除に追加作業が必要です。
実践ポイント
- バケット名はグローバルで一意です。わかりやすい名前にしてください。
- 削除時は誤削除に注意してください。特に –force は取り消せません。
- 権限エラーが出たらIAMポリシーやACLを確認してください。
よくあるトラブル
- “BucketNotEmpty” が出る: 中身が残っています。必要なら –force で削除するか、個別にオブジェクトを消してください。
- 権限拒否: IAMロールやユーザーにs3:DeleteBucketやs3:DeleteObjectなどの権限があるか確認します。
- バージョニング対応: バージョニング有効なバケットはバージョンごと削除する必要があります。
S3のファイル検索や応用的な操作
概要
最近はS3バケットをローカルのように扱える「マウント」方式が使いやすくなりました。CloudShellと組み合わせれば、vimやgrepで直接ファイル中身を調べられ、アプリケーションログの調査が簡単になります。
Mountpointを使った基本的な流れ
- マウントする(例: mountpointをインストールしてマウント)
- マウント先に移動して、通常のファイル操作を実行
- grepやvimで中身を検索・編集
具体例(概念的なコマンド例):
– マウント後: cd /mnt/s3bucket
– 中身検索: grep -R “ERROR” ./logs/
– ファイル編集: vim ./app/logs/2025-01-01.log
利点と注意点
- 利点: ローカル作業と同じ感覚で操作でき、短時間の調査が楽になります。
- 注意点: 大量ファイルや高頻度の小さな操作では遅延が出ることがあります。ネットワークやAPIのレート制限により応答が遅くなる場合があります。
- 権限: IAMポリシーで適切な権限を付与してください。読み書きの範囲を限定すると安全です。
使い分けのヒント
- 単発のログ調査やファイル中身の確認にはマウントが便利です。
- 大量データの集計や全文検索にはAthenaやKendraなど専用サービスを使う方が効率的です。したがって目的に応じて使い分けてください。
応用例
- CloudShell上でgrepと組み合わせ、特定のログ行を抽出して即時対応する
- スクリプトでバッチ検索を実行し、該当ファイルを絞り込んでダウンロードする
以上の方法を知っておくと、S3のファイル調査がぐっと楽になります。
S3の最新機能:ベクトル検索(S3 Vectors)
概要
2025年からS3 Vectorsというプレビュー機能が提供され、S3上でベクトル型データの格納と近似検索(ベクトル検索)が可能になりました。ベクトルとは、文章や画像を数値に変換した「意味の数値表現」です。これを使うと類似コンテンツ検索やレコメンドが容易になります。
CLIでの利用イメージ
CLI経由でベクトルをアップロードし、検索できます。例として簡易的な流れを示します。
– インデックス作成: aws s3vectors create-index –name my-index –dimension 768
– ベクトル登録: aws s3vectors put-item –index my-index –id doc1 –vector ‘[0.12,0.34,…]’ –metadata ‘{“title”:”例文”}’
– 類似検索: aws s3vectors query –index my-index –vector ‘[0.11,0.33,…]’ –top-k 5
これらはイメージコマンドです。実際のオプションはプレビューのドキュメントを参照してください。
実務でのポイント
- 埋め込み生成はローカルや別サービスで行い、次にS3 Vectorsへ登録します。モデルの次元(例: 768)が一致していることを確認してください。
- 正規化や量子化でストレージと検索速度を改善できます。検索は近似法を使うため、精度と速度のトレードオフがあります。
- アクセス制御や暗号化を設定し、機密データを保護してください。
ユースケース例
- ドキュメント検索: 大量のマニュアルから意味的に近い段落を見つける。
- チャットボット: ユーザー発話に近いFAQを高速で取得して回答候補を作る。
CLIでの操作に慣れておくと、AI向けデータ基盤を素早く構築できます。プレビュー段階のため、利用前に提供される仕様を確認してください。