で高レベル (s3) コマンドを使用する AWS CLI - AWS Command Line Interface

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

で高レベル (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 オペレーションを許可するアクセス許可が必要です。

  • 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-typecontent-languagecontent-encodingcontent-dispositioncache-controlexpires、、および metadata

これにより、Amazon S3 エンドポイントへの追加の AWS API呼び出しが発生する可能性があり、 AWS CLI バージョン 1 を使用した場合、その呼び出しは行われなかった可能性があります。これには、HeadObjectGetObjectTagging、および PutObjectTagging が含まれます。

AWS CLI バージョン 2 コマンドでこのデフォルトの動作を変更する必要がある場合は、 --copy-propsパラメータを使用して、次のいずれかのオプションを指定します。

  • default - デフォルト値。コピーに、ソースオブジェクトにアタッチされたすべてのタグと、マルチパートコピー以外に使用される --metadata-directive パラメータの次のプロパティが含まれることを指定します。content-typecontent-languagecontent-encodingcontent-dispositioncache-control, expiresmetadata

  • metadata-directive - --metadata-directive マルチパートコピー以外に使用されるパラメータによって包含されるプロパティのみがコピーに含まれることを指定します。タグはコピーされません。

  • none - コピーにソースオブジェクトのプロパティを含みません。

バケットを作成する

s3 mb コマンドを使用して、バケットを作成します。バケット名はグローバルに一意 (Amazon S3 全体で一意) で、DNS準拠している必要があります。

バケット名には、小文字の英文字、数字、ハイフン、およびピリオドを使用することができます。バケット名の先頭と末尾は文字または数値とし、ハイフンまたは別のピリオドの横にピリオドを使用することはできません。

[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 コマンドはバケットとディレクトリの内容、または 2 つのバケットの内容を同期します。通常、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 syncs3 cp では、--acl オプションを使用できます。これにより、Amazon S3 にコピーされたファイルのアクセス権限を設定できます。--acl オプションは、privatepublic-read、および public-read-write の値を受け入れます。詳細については、「Amazon S3 ユーザーガイドACL」の「既定」を参照してください。 Amazon S3

$ aws s3 sync . s3://my-bucket/path --acl public-read
exclude

s3 cps3 mvs3 syncs3 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 cps3 mvs3 syncs3 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 cps3 mvs3 sync の各コマンドには、指定したユーザーやグループにオブジェクトへのアクセス許可を付与できる --grants オプションが含まれています。次の構文を使用して、--grants オプションをアクセス許可リストに設定します。PermissionGrantee_TypeGrantee_ID を独自の値に置き換えます。

[Syntax (構文)]

--grants Permission=Grantee_Type=Grantee_ID [Permission=Grantee_Type=Grantee_ID ...]

各値には以下の要素が含まれます。

  • Permission – 付与されたアクセス許可を指定します。readreadaclwriteaclfull のいずれかに設定できます。

  • Grantee_Type – 被付与者を識別する方法を指定します。uriemailaddressid のいずれかに設定できます。

  • Grantee_ID – に基づいて被付与者を指定します。Grantee_Type.

    • uri – グループの URI。詳細については、「被付与者とは」を参照してください。

    • emailaddress – アカウントの E メールアドレス。

    • id – アカウントの正規 ID。

Amazon S3 アクセスコントロールの詳細については、「アクセスコントロール」を参照してください。

次の例では、バケットにオブジェクトをコピーします。これは、オブジェクトへの read アクセス許可を全員に付与し、full アクセス許可 (readreadaclwriteacl) を 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 リファレンス:

サービスリファレンス: