第1回:S3コマンドの基本と環境構築
はじめに
S3は、AWSが提供するオブジェクトストレージサービスで、高い耐久性と可用性を誇ります。単にファイルを保存するだけでなく、ウェブサイトのホスティング、バックアップ、ビッグデータ分析など、多岐にわたる用途で利用されています。
S3を操作する方法はいくつかありますが、AWS CLI(Command Line Interface) を使ったコマンド操作は、自動化やスクリプトによる一括処理に非常に適しています。このシリーズでは、S3を自在に操るためのコマンドを、初心者の方でも理解しやすいように段階的に解説していきます。第1回では、S3コマンドの利用を始めるための準備として、AWS CLIの環境構築から、バケットとオブジェクトの基本的な操作方法を学びましょう。
AWS CLIのセットアップ
S3コマンドを使うには、まずローカル環境に AWS CLI をインストールする必要があります。
1. AWS CLIのインストール方法
お使いのOSに合わせて、以下の手順でインストールを進めてください。
-
macOS / Linux
以下のコマンドをターミナルで実行します。curl "https://awscli.amazonaws.com/awscli-bundle.zip" -o "awscli-bundle.zip" unzip awscli-bundle.zip sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws -
Windows
AWSの公式サイトからインストーラー(.msiファイル)をダウンロードし、ウィザードに従ってインストールします。
インストールが完了したら、以下のコマンドでバージョンを確認し、正常にインストールされているかチェックしましょう。
aws --version
2. 認証情報のセットアップ(aws configure)
AWS CLIをインストールしたら、次にAWSアカウントの認証情報を設定します。これにより、コマンドを実行した際にAWS CLIがどのユーザーとしてS3にアクセスすればよいかを認識できるようになります。
以下のコマンドを実行すると、対話形式で設定が進みます。
aws configure
-
AWS Access Key ID: IAMユーザーのアクセスキーを入力します。 -
AWS Secret Access Key: IAMユーザーのシークレットアクセスキーを入力します。 -
Default region name: S3バケットを作成するデフォルトのリージョンを指定します。例えば、東京リージョンならap-northeast-1と入力します。 -
Default output format: コマンド実行結果の出力形式を指定します。特に指定がなければjsonで問題ありません。
これらの設定は、~/.aws/credentials と ~/.aws/config に保存されます。
3. IAMユーザーの作成と権限設定
aws configure で設定するアクセスキーは、IAMユーザー のものです。AWSのベストプラクティスとして、ルートユーザーの認証情報ではなく、S3にアクセスするための専用のIAMユーザーを作成することを強く推奨します。
IAMユーザーを作成したら、S3へのアクセス権限を付与するポリシーを設定します。ここでは、S3の操作をフルに行うためのポリシーの例を示します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
このポリシーは、すべてのS3アクション(s3:*)を、すべてのリソース(Resource: "*")に対して許可するものです。
本番環境では、必要最小限の権限のみを付与するよう、ポリシーをより細かく設定しましょう。
S3バケット操作の基本
環境設定が完了したら、いよいよS3コマンドを使ってみましょう。まずは、S3の基本単位である「バケット」を操作するコマンドです。
1. バケットの作成(aws s3 mb)
S3にファイルを保存するには、まずバケットを作成する必要があります。バケット名は、AWS全体で一意である必要があります。
aws s3 mb s3://my-first-bucket-2023-01-01
-
s3://は、S3リソースを指定するためのプレフィックスです。 -
my-first-bucket-2023-01-01の部分は、作成したいバケット名に置き換えてください。
2. バケットの一覧表示(aws s3 ls)
現在のアカウントに存在するバケットの一覧を表示するには、以下のコマンドを実行します。
aws s3 ls
実行結果は、バケットの作成日時とバケット名が一覧で表示されます。
3. バケットの削除(aws s3 rb)
バケットを削除する際は、まずバケットの中身を空にする必要があります。中身が空でないバケットを削除しようとするとエラーになります。
バケットを削除するには、--force オプションを付けて実行するのが便利です。これにより、バケット内のオブジェクトを強制的に削除し、その後にバケット自体を削除します。
aws s3 rb s3://my-first-bucket-2023-01-01 --force
オブジェクト操作の基本
次に、バケット内に保存する「オブジェクト」(ファイル)を操作するコマンドです。
1. バケット内のオブジェクト一覧表示(aws s3 ls)
特定のバケット内に保存されているオブジェクトの一覧を表示するには、バケット名を指定して ls コマンドを実行します。
aws s3 ls s3://my-first-bucket-2023-01-01
2. ローカルとS3間のコピー(aws s3 cp)
cp コマンドは、ローカルとS3間でファイルをコピーする際に使用します。
-
ローカルからS3へファイルをアップロード
aws s3 cp local_file.txt s3://my-first-bucket-2023-01-01/ -
S3からローカルへファイルをダウンロード
aws s3 cp s3://my-first-bucket-2023-01-01/local_file.txt ./ -
S3からS3へファイルをコピー
aws s3 cp s3://source-bucket/file.txt s3://destination-bucket/
ディレクトリごとコピーしたい場合は、--recursive オプションを付けます。
aws s3 cp ./local_folder s3://my-first-bucket-2023-01-01/remote_folder --recursive
3. ローカルとS3間の移動(aws s3 mv)
mv コマンドは、cp と同様にファイルを移動します。移動元からファイルが削除される点が cp と異なります。使い方は cp と同じです。
-
ローカルからS3へファイルを移動
aws s3 mv local_file.txt s3://my-first-bucket-2023-01-01/ -
S3からローカルへファイルを移動
aws s3 mv s3://my-first-bucket-2023-01-01/local_file.txt ./
まとめ
第1回では、S3コマンドを使い始めるための準備と、基本的なバケット・オブジェクト操作について学びました。
本記事のポイント
-
AWS CLIのインストール と
aws configureによる認証情報のセットアップが、S3コマンド利用の第一歩です。 - IAMユーザー を作成し、最小限の権限を付与することがセキュリティの観点から重要です。
-
aws s3 mb,ls,rbコマンドでバケットを操作できます。 -
aws s3 cp,mvコマンドでローカル環境とS3間でファイルをやり取りできます。
次回の記事では、これらの基本コマンドをさらに応用し、sync コマンドを使った大規模なデータ同期や、効率的なデータ管理方法について解説します。