翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
で高レベル (s3) コマンドを使用する AWS CLI
このトピックでは、 AWS CLIで aws s3
aws s3
高レベル aws s3
コマンドを使用すると、Amazon S3 オブジェクトの管理が容易になります。これらのコマンドにより、Amazon S3 のコンテンツの管理をそれ自体の内部およびローカルディレクトリ内で管理することができます。
トピック
前提条件
s3
コマンドを実行するには、次のことが必要です。
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
名前空間 AWS CLI のバージョン 2 コマンドは、すべてのタグとプロパティのセットをソースからコピー先コピーに転送します。content-type
、content-language
、content-encoding
、content-disposition
、cache-control
expires
、、および metadata
。
これにより、Amazon S3 エンドポイントへの追加の AWS API呼び出しが発生する可能性があり、 AWS CLI バージョン 1 を使用した場合、その呼び出しは行われなかった可能性があります。これには、HeadObject
、GetObjectTagging
、および PutObjectTagging
が含まれます。
AWS CLI バージョン 2 コマンドでこのデフォルトの動作を変更する必要がある場合は、 --copy-props
パラメータを使用して、次のいずれかのオプションを指定します。
-
default - デフォルト値。コピーに、ソースオブジェクトにアタッチされたすべてのタグと、マルチパートコピー以外に使用される
--metadata-directive
パラメータの次のプロパティが含まれることを指定します。content-type
、content-language
、content-encoding
、content-disposition
、cache-control
,expires
、metadata
。 -
metadata-directive -
--metadata-directive
マルチパートコピー以外に使用されるパラメータによって包含されるプロパティのみがコピーに含まれることを指定します。タグはコピーされません。 -
none - コピーにソースオブジェクトのプロパティを含みません。
バケットを作成する
s3 mb
バケット名には、小文字の英文字、数字、ハイフン、およびピリオドを使用することができます。バケット名の先頭と末尾は文字または数値とし、ハイフンまたは別のピリオドの横にピリオドを使用することはできません。
[Syntax (構文)]
$
aws s3 mb <target> [--options]
次の例では、s3://bucket-name
バケットを作成します。
$
aws s3 mb s3://
bucket-name
バケットとオブジェクトの一覧表示
バケット、フォルダ、オブジェクトのいずれかを一覧表示するには、s3 ls
[Syntax (構文)]
$
aws s3 ls <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。使用可能なオプションの完全なリストについては、AWS CLI コマンドリファレンスの s3 ls
次の例では、すべての Amazon S3 バケットを一覧表示します。
$
aws s3 ls
2018-12-11 17:08:50 my-bucket 2018-12-14 14:55:44 my-bucket2
次のコマンドでは、バケット内のすべてのオブジェクトとプレフィックスを一覧表示します。この出力例では、プレフィックス example/
内に MyFile1.txt
という名前のファイル が 1 つあります。
$
aws s3 ls
s3://bucket-name
PRE example/ 2018-12-04 19:05:48 3 MyFile1.txt
コマンドに含めることによって、出力を特定のプレフィックスに絞り込むことができます。次のコマンドは、 のオブジェクトを一覧表示します。bucket-name/example/
(つまり、 のオブジェクト bucket-name
プレフィックスでフィルタリング example/
).
$
aws s3 ls
s3://bucket-name/example/
2018-12-06 18:59:32 3 MyFile1.txt
バケットの削除
バケットを削除するには、s3 rb
[Syntax (構文)]
$
aws s3 rb <target> [--options]
次の例では、s3://bucket-name
バケットを削除します。
$
aws s3 rb
s3://bucket-name
デフォルトでは、オペレーションが成功するにはバケットが空である必要があります。空でないバケットを削除するには、--force
オプションを含める必要があります。以前に削除されたが保持されているオブジェクトを含む、バージョニングされたバケットを使用している場合、このコマンドでバケットを削除することはできません。すべての内容を削除しておく必要があります。
次の例では、バケット内のすべてのオブジェクトとプレフィックスを削除し、さらにバケット自体を削除します。
$
aws s3 rb
s3://bucket-name
--force
オブジェクトの削除
バケット内またはローカルディレクトリ内のオブジェクトを削除するには、s3 rm
[Syntax (構文)]
$
aws s3 rm <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。オプションの完全なリストについては、AWS CLI コマンドリファレンスの「s3 rm
以下の例では、filename.txt
から s3://bucket-name/example
が削除されます。
$
aws s3 rm s3://bucket-name/example/filename.txt
以下の例では、s3://bucket-name/example
オプションを使用して --recursive
からすべてのオブジェクトが削除されます。
$
aws s3 rm s3://bucket-name/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://bucket-name/example
から s3://my-bucket/
に移動します。
$
aws s3 mv s3://bucket-name/example s3://my-bucket/
次の例では、s3 mv
コマンドを使用して、ローカルファイルを現在の作業ディレクトリから Amazon S3 バケットに移動します。
$
aws s3 mv filename.txt s3://bucket-name
次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリに移動します。./
では、現在の作業ディレクトリを指定します。
$
aws s3 mv s3://bucket-name/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://bucket-name/example
から s3://my-bucket/
にコピーします。
$
aws s3 cp s3://bucket-name/example s3://my-bucket/
次の例では、s3 cp
コマンドを使用して、現在の作業ディレクトリから Amazon S3 バケットにローカルファイルをコピーします。
$
aws s3 cp filename.txt s3://bucket-name
次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリにコピーします (./
では現在の作業ディレクトリを指定します)。
$
aws s3 cp s3://bucket-name/filename.txt ./
次の例では、echo を使用して「hello world」というテキストを s3://bucket-name/filename.txt
ファイルにストリームします。
$
echo "hello world" | aws s3 cp - s3://bucket-name/filename.txt
次の例では、s3://bucket-name/filename.txt
ファイルを stdout
にストリーミングし、その内容をコンソールに出力します。
$
aws s3 cp s3://bucket-name/filename.txt -
hello world
次の例では、s3://bucket-name/pre
の内容を stdout
にストリーミングし、bzip2
コマンドを使用してファイルを圧縮します。この圧縮したファイルを key.bz2
という名前で s3://bucket-name
にアップロードします。
$
aws s3 cp s3://bucket-name/pre - | bzip2 --best | aws s3 cp - s3://bucket-name/key.bz2
オブジェクトの同期
s3 sync
s3 sync
は欠落しているか古くなったファイルやオブジェクトを、ソースとターゲットの間でコピーします。ただし、--delete
オプションを指定して、ソースに存在しないファイルまたはオブジェクトをターゲットから削除することもできます。
[Syntax (構文)]
$
aws s3 sync <source> <target> [--options]
このコマンドで使用するいくつかの一般的なオプションと例については、「s3 コマンドでよく使用されるオプション」を参照してください。オプションの完全なリストについては、AWS CLI コマンドリファレンスの s3 sync
次の例では、my-bucket という名前のバケット内の path という名前の Amazon S3 プレフィックスの内容を現在の作業ディレクトリと同期します。
s3 sync
は、同期先で同じ名前を持つファイルと、サイズや変更時間が異なるファイルを更新します。出力には、同期中に実行された特定のオペレーションが表示されます。このオペレーションでは、サブディレクトリ MySubdirectory
とその内容を s3://my-bucket/path/MySubdirectory
と再帰的に同期することに注意してください。
$
aws s3 sync . s3://my-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt
次の例 (前の例の拡張) では、--delete
オプションの使用方法を示します。
// Delete local file
$
rm ./MyFile1.txt
// Attempt sync without --delete option - nothing happens
$
aws s3 sync . s3://my-bucket/path
// Sync with deletion - object is deleted from bucket
$
aws s3 sync . s3://my-bucket/path --delete
delete: s3://my-bucket/path/MyFile1.txt // Delete object from bucket
$
aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://my-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted
$
aws s3 sync s3://my-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class
$
aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
--delete
オプションを使用する場合、--exclude
オプションと --include
オプションによって、s3
sync
オペレーション中に削除するファイルやオブジェクトをフィルタリングできます。この場合、パラメータ文字列で、ターゲットディレクトリまたはバケットに関連して、削除から除外するか、削除に含めるファイルを指定する必要があります。例を以下に示します。
Assume local directory and s3://my-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://my-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://my-bucket/path/MyFile88.txt '''
// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$
aws s3 sync s3://my-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://my-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted
$
aws s3 sync s3://my-bucket/path . --delete
delete: MyFile2.rtf
s3 コマンドでよく使用されるオプション
このトピックで説明するコマンドでは、次のオプションがよく使用されます。コマンドで使用できるオプションの完全なリストについては、リファレンスAWS CLI バージョン 2
- acl
-
s3 sync
とs3 cp
では、--acl
オプションを使用できます。これにより、Amazon S3 にコピーされたファイルのアクセス権限を設定できます。--acl
オプションは、private
、public-read
、およびpublic-read-write
の値を受け入れます。詳細については、「Amazon S3 ユーザーガイドACL」の「既定」を参照してください。 Amazon S3$
aws s3 sync . s3://my-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://my-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://my-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://my-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://my-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://my-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://my-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://my-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://my-bucket/
--storage-class REDUCED_REDUNDANCY
-
- recursive
-
このオプションを使用すると、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます。次の例では、
s3://my-bucket/path
とそのすべての内容を削除します。$
aws s3 rm s3://my-bucket/path --recursive
リソース
AWS CLI リファレンス:
サービスリファレンス:
-
Amazon S3ユーザーガイド」の「Amazon S3 バケットの使用Amazon S3」
-
Amazon S3ユーザーガイド」の「Amazon S3 オブジェクトの使用Amazon S3」
-
「Amazon S3 ユーザーガイド」の「プレフィックスと区切り文字を使用したキーの階層的な一覧表示Amazon S3」
-
Amazon S3 ユーザーガイドの AWS SDK for .NET (低レベル) を使用して S3 バケットへのマルチパートアップロードを中止する Amazon S3