このドキュメントは、 のバージョン 1 AWS CLI 専用です。のバージョン 2 に関連するドキュメントについては AWS CLI、バージョン 2 ユーザーガイド を参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
での高レベル (s3) コマンドの使用 AWS CLI
このトピックでは、 AWS CLIで aws
s3
コマンドを使用して、Amazon S3 のバケットとオブジェクトを管理するために使用できるコマンドの一部について説明します。このトピックで説明されていないコマンドおよびその他のコマンドの例については、AWS CLI リファレンスの aws
s3
コマンドを参照してください。
高レベル aws s3
コマンドを使用すると、Amazon S3 オブジェクトの管理が容易になります。これらのコマンドにより、Amazon S3 のコンテンツの管理をそれ自体の内部およびローカルディレクトリ内で管理することができます。
トピック
前提条件
s3
コマンドを実行するには、次のことが必要です。
AWS CLIをインストールして設定します。詳細については、「のインストール、更新、アンインストール AWS CLI」および「の認証認証情報とアクセス認証情報 AWS CLI」を参照してください。
-
使用するプロファイルには、例によって実行される AWS オペレーションを許可するアクセス許可が必要です。
-
Amazon S3 の以下の用語を解説します。
-
バケット - トップレベルの Amazon S3 フォルダ。
-
プレフィックス - バケット内の Amazon S3 フォルダ。
-
オブジェクト - Amazon S3 バケットでホストされているすべてのアイテム。
-
開始する前に
このセクションでは、aws s3
コマンドを使用する前の注意事項をいくつか示します。
大容量オブジェクトのアップロード
aws s3
コマンドを使用して大きなオブジェクトを Amazon S3 バケットにアップロードする場合、 AWS CLI は自動的にマルチパートアップロードを実行します。これらの aws s3
コマンドを使用した場合、失敗したアップロードを再開することはできません。
マルチパートアップロードがタイムアウトによって失敗した場合、または で手動でキャンセルした場合 AWS CLI、 はアップロード AWS CLI を停止し、作成されたファイルをクリーンアップします。この処理には数分かかることもあります。
マルチパートアップロードまたはクリーンアッププロセスが kill コマンドまたはシステム障害によってキャンセルされた場合、作成されたファイルは Amazon S3 バケットに残ります。マルチパートアップロードをクリーンアップするには、s3api abort-multipart-upload コマンドを使用します。
マルチパートコピーのファイルプロパティとタグ
aws s3
名前空間で AWS CLI バージョン 1 バージョンのコマンドを使用して、ある Amazon S3 バケットの場所から別の Amazon S3 バケットの場所にファイルをコピーし、そのオペレーションでマルチパートコピー を使用する場合、ソースオブジェクトからのファイルプロパティは宛先オブジェクトにコピーされません。
バケットを作成する
s3
mb
コマンドを使用して、バケットを作成します。バケット名はグローバルに一意 (Amazon S3 全体で一意) で、DNS準拠している必要があります。
バケット名には、小文字の英文字、数字、ハイフン、およびピリオドを使用することができます。バケット名の先頭と末尾は文字または数値とし、ハイフンまたは別のピリオドの横にピリオドを使用することはできません。
[Syntax] (構文)
$
aws s3 mb <target> [--options]
次の例では、s3://amzn-s3-demo-bucket
バケットを作成します。
$
aws s3 mb s3://
amzn-s3-demo-bucket
バケットとオブジェクトの一覧表示
バケット、フォルダ、オブジェクトのいずれかを一覧表示するには、s3
ls
コマンドを使用します。ターゲットまたはオプションを指定せずにコマンドを使用すると、すべてのバケットが一覧表示されます。
[Syntax] (構文)
$
aws s3 ls <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。使用可能なオプションの完全なリストについては、AWS CLI コマンドリファレンスの s3
ls
を参照してください。
次の例では、すべての Amazon S3 バケットを一覧表示します。
$
aws s3 ls
2018-12-11 17:08:50 amzn-s3-demo-bucketamzn-s3-demo-bucket1 2018-12-14 14:55:44 amzn-s3-demo-bucket2
次のコマンドでは、バケット内のすべてのオブジェクトとプレフィックスを一覧表示します。この出力例では、プレフィックス example/
内に MyFile1.txt
という名前のファイル が 1 つあります。
$
aws s3 ls
s3://amzn-s3-demo-bucket
PRE example/ 2018-12-04 19:05:48 3 MyFile1.txt
コマンドに含めることによって、出力を特定のプレフィックスに絞り込むことができます。次のコマンドは、 のオブジェクトを一覧表示します。bucket-name/example/
(つまり、bucket-name
プレフィックスでフィルタリング example/
).
$
aws s3 ls
s3://amzn-s3-demo-bucket/example/
2018-12-06 18:59:32 3 MyFile1.txt
バケットの削除
バケットを削除するには、s3
rb
コマンドを使用します。
[Syntax] (構文)
$
aws s3 rb <target> [--options]
次の例では、s3://amzn-s3-demo-bucket
バケットを削除します。
$
aws s3 rb
s3://amzn-s3-demo-bucket
デフォルトでは、オペレーションが成功するにはバケットが空である必要があります。空でないバケットを削除するには、--force
オプションを含める必要があります。以前に削除されたが保持されているオブジェクトを含む、バージョニングされたバケットを使用している場合、このコマンドでバケットを削除することはできません。すべての内容を削除しておく必要があります。
次の例では、バケット内のすべてのオブジェクトとプレフィックスを削除し、さらにバケット自体を削除します。
$
aws s3 rb
s3://amzn-s3-demo-bucket
--force
オブジェクトの削除
バケット内またはローカルディレクトリ内のオブジェクトを削除するには、s3
rm
コマンドを使用します。
[Syntax] (構文)
$
aws s3 rm <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。オプションの完全なリストについては、AWS CLI コマンドリファレンスの「s3
rm
」を参照してください。
以下の例では、filename.txt
から s3://amzn-s3-demo-bucket/example
が削除されます。
$
aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt
以下の例では、s3://amzn-s3-demo-bucket/example
オプションを使用して --recursive
からすべてのオブジェクトが削除されます。
$
aws s3 rm s3://amzn-s3-demo-bucket/example --recursive
オブジェクトの移動
バケットまたはローカルディレクトリからオブジェクトを移動するには、s3
mv
コマンドを使用します。s3 mv
コマンドは、ソースオブジェクトまたはファイルを指定された宛先にコピーし、ソースオブジェクトまたはファイルを削除します。
[Syntax] (構文)
$
aws s3 mv <source> <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。使用可能なオプションの完全なリストについては、AWS CLI コマンドリファレンスの s3
mv
を参照してください。
警告
Amazon S3 の送信元ARNsまたは送信先 で任意のタイプのアクセスポイントまたはアクセスポイントエイリアスを使用している場合はURIs、送信元と送信先 Amazon S3 がさまざまな基盤となるバケットにURIs解決するように特に注意する必要があります。ソースバケットと宛先バケットが同じ場合、ソースファイルまたはオブジェクトをそれ自体に移動できるため、ソースファイルまたはオブジェクトが誤って削除される可能性があります。送信元バケットと送信先バケットが同じでないことを確認するには、 --validate-same-s3-paths
パラメータを使用するか、環境変数AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS
を に設定しますtrue
。
次の例では、すべてのオブジェクトを s3://amzn-s3-demo-bucket/example
から s3://amzn-s3-demo-bucket/
に移動します。
$
aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
次の例では、s3 mv
コマンドを使用して、ローカルファイルを現在の作業ディレクトリから Amazon S3 バケットに移動します。
$
aws s3 mv filename.txt s3://amzn-s3-demo-bucket
次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリに移動します。./
では、現在の作業ディレクトリを指定します。
$
aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./
オブジェクトのコピー
バケットまたはローカルディレクトリからオブジェクトをコピーするには、s3
cp
コマンドを使用します。
[Syntax] (構文)
$
aws s3 cp <source> <target> [--options]
標準入力 (stdin
) または標準出力 (stdout
) へのファイルストリーミングには dash パラメータを使用できます。
警告
を使用している場合 PowerShell、シェルは のエンコーディングを変更CRLFしたり、パイプされた入力または出力CRLFに を追加したり、出力をリダイレクトしたりすることがあります。
s3 cp
コマンドでは、次の構文を使用して、stdin
から指定先のバケットにファイルストリームをアップロードします。
[Syntax] (構文)
$
aws s3 cp - <target> [--options]
s3 cp
コマンドは、次の構文を使用して stdout
用の Amazon S3 ファイルストリームをダウンロードします。
[Syntax] (構文)
$
aws s3 cp <target> [--options] -
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。オプションの完全なリストについては、AWS CLI コマンドリファレンスの s3
cp
を参照してください。
次の例では、すべてのオブジェクトを s3://amzn-s3-demo-bucket/example
から s3://amzn-s3-demo-bucket/
にコピーします。
$
aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
次の例では、s3 cp
コマンドを使用して、現在の作業ディレクトリから Amazon S3 バケットにローカルファイルをコピーします。
$
aws s3 cp filename.txt s3://amzn-s3-demo-bucket
次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリにコピーします (./
では現在の作業ディレクトリを指定します)。
$
aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./
次の例では、echo を使用して「hello world」というテキストを s3://bucket-name/filename.txt
ファイルにストリームします。
$
echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt
次の例では、s3://amzn-s3-demo-bucket/filename.txt
ファイルを stdout
にストリーミングし、その内容をコンソールに出力します。
$
aws s3 cp s3://amzn-s3-demo-bucket/filename.txt -
hello world
次の例では、s3://bucket-name/pre
の内容を stdout
にストリーミングし、bzip2
コマンドを使用してファイルを圧縮します。この圧縮したファイルを key.bz2
という名前で s3://bucket-name
にアップロードします。
$
aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2
オブジェクトの同期
s3
sync
コマンドはバケットとディレクトリの内容、または 2 つのバケットの内容を同期します。通常、s3 sync
は欠落しているか古くなったファイルやオブジェクトを、ソースとターゲットの間でコピーします。ただし、--delete
オプションを指定して、ソースに存在しないファイルまたはオブジェクトをターゲットから削除することもできます。
[Syntax] (構文)
$
aws s3 sync <source> <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。オプションの完全なリストについては、AWS CLI コマンドリファレンスの s3
sync
を参照してください。
次の例では、amzn-s3-demo-bucket という名前のバケット内のパスという名前の Amazon S3 プレフィックスの内容を現在の作業ディレクトリと同期します。
s3 sync
は、同期先で同じ名前を持つファイルと、サイズや変更時間が異なるファイルを更新します。出力には、同期中に実行された特定のオペレーションが表示されます。このオペレーションでは、サブディレクトリ MySubdirectory
とその内容を s3://amzn-s3-demo-bucket/path/MySubdirectory
と再帰的に同期することに注意してください。
$
aws s3 sync . s3://mamzn-s3-demo-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt
次の例 (前の例の拡張) では、--delete
オプションの使用方法を示します。
// Delete local file
$
rm ./MyFile1.txt
// Attempt sync without --delete option - nothing happens
$
aws s3 sync . s3://amzn-s3-demo-bucket/path
// Sync with deletion - object is deleted from bucket
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --delete
delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket
$
aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA
--delete
オプションを使用する場合、--exclude
オプションと --include
オプションによって、s3
sync
オペレーション中に削除するファイルやオブジェクトをフィルタリングできます。この場合、パラメータ文字列で、ターゲットディレクトリまたはバケットに関連して、削除から除外するか、削除に含めるファイルを指定する必要があります。例を以下に示します。
Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt '''
// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.
$
aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt '''
// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted
$
aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MyFile2.rtf
s3 コマンドでよく使用されるオプション
このトピックで説明するコマンドでは、次のオプションがよく使用されます。コマンドで使用できるオプションの完全なリストについては、AWS CLI リファレンスガイド の特定のコマンドを参照してください。
- acl
-
s3 sync
とs3 cp
では、--acl
オプションを使用できます。これにより、Amazon S3 にコピーされたファイルのアクセス権限を設定できます。--acl
オプションは、private
、public-read
、およびpublic-read-write
の値を受け入れます。詳細については、Amazon S3ユーザーガイド」の「CannedACL」を参照してください。$
aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
- exclude
-
s3 cp
、s3 mv
、s3 sync
、s3 rm
のいずれかのコマンドを使用する場合、--exclude
オプションまたは--include
オプションを使用して結果をフィルタリングできます。--exclude
オプションは、コマンドからオブジェクトのみを除外するようにルールを設定します。各オプションは、指定した順に適用されます。これを次の例で示します。Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt
// Exclude all .txt files, resulting in only MyFile2.rtf being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt"
// Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt"
// Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
- include
-
s3 cp
、s3 mv
、s3 sync
、s3 rm
のいずれかのコマンドを使用する場合、--exclude
オプションまたは--include
オプションを使用して結果をフィルタリングできます。--include
オプションは、指定したオブジェクトのみをコマンドに含めるようにルールを設定します。各オプションは、指定した順に適用されます。これを次の例で示します。Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt
// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt"
// Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt"
// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied
$
aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
- 許可
-
s3 cp
、s3 mv
、s3 sync
の各コマンドには、指定したユーザーやグループにオブジェクトへのアクセス許可を付与できる--grants
オプションが含まれています。次の構文を使用して、--grants
オプションをアクセス許可リストに設定します。Permission
、Grantee_Type
、Grantee_ID
を独自の値に置き換えます。[Syntax] (構文)
--grants
Permission
=Grantee_Type
=Grantee_ID
[Permission
=Grantee_Type
=Grantee_ID
...]各値には以下の要素が含まれます。
-
Permission
– 付与されたアクセス許可を指定します。read
、readacl
、writeacl
、full
のいずれかに設定できます。 -
Grantee_Type
– 被付与者を識別する方法を指定します。uri
、emailaddress
、id
のいずれかに設定できます。 -
Grantee_ID
— に基づいて被付与者を指定します。Grantee_Type
.-
uri
– グループの URI。詳細については、「被付与者とは」を参照してください。 -
emailaddress
– アカウントの E メールアドレス。 -
id
– アカウントの正規 ID。
-
Amazon S3 アクセスコントロールの詳細については、「アクセスコントロール」を参照してください。
次の例では、バケットにオブジェクトをコピーします。これは、オブジェクトへの
read
アクセス許可を全員に付与し、full
アクセス許可 (read
、readacl
、writeacl
) をuser@example.com
に関連付けられたアカウントに付与します。$
aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants
read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com
Amazon S3 にアップロードするオブジェクトについて、デフォルト以外のストレージクラス (
REDUCED_REDUNDANCY
またはSTANDARD_IA
) を指定することもできます。そのためには、--storage-class
オプションを使用します。$
aws s3 cp file.txt s3://amzn-s3-demo-bucket/
--storage-class REDUCED_REDUNDANCY
-
- recursive
-
このオプションを使用すると、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます。次の例では、
s3://amzn-s3-demo-bucket/path
とそのすべての内容を削除します。$
aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
リソース
AWS CLI リファレンス:
サービスリファレンス:
-
Amazon S3 ユーザーガイドの Amazon S3 バケットの使用 Amazon S3
-
Amazon S3 ユーザーガイドの Amazon S3 オブジェクトの使用 Amazon S3
-
Amazon S3 ユーザーガイドのプレフィックスと区切り文字を使用してキーを階層的に一覧表示する
-
Amazon S3 ユーザーガイドの AWS SDK for .NET (低レベル) を使用して、S3 バケットへのマルチパートアップロードを中止する Amazon S3