AWS CLI で API レベル (s3api) コマンドを使用する - AWS コマンドラインインターフェイス

Python 2.7、3.4、3.5 は AWS CLI バージョン 1 では非推奨です。詳細については、 「AWS CLI バージョンについて」 の「AWS CLI バージョン 1」セクションを参照してください。

AWS CLI で API レベル (s3api) コマンドを使用する

API レベルのコマンド (s3api コマンドセットに含まれる) は、Amazon Simple Storage Service (Amazon S3) API への直接アクセスを提供し、高レベルの s3 コマンドでは公開されていない一部の操作を有効にします。これらのコマンドは、サービスの機能への API レベルのアクセスを提供する他の AWS サービスと同等です。s3 コマンドの詳細については、「AWS CLI での高レベル (s3) コマンドの使用」を参照してください。

このトピックでは、Amazon S3 API にマッピングする低レベルコマンドの使用方法を示す例を示します。さらに、各 S3 API コマンドの例については、CLI リファレンスガイドの s3api セクションを参照してください。

前提条件

s3api コマンドを実行するには、次のことが必要です。

  • AWS CLI がインストールされること。詳細については、「AWS CLI のインストール、更新、およびアンインストール」を参照してください。

  • AWS CLI が設定されていること。詳細については、「設定の基本」を参照してください。使用するプロファイルには、例によって実行される AWS オペレーションを許可するアクセス許可が必要です。

  • Amazon S3 の以下の用語を解説します。

    • バケット - トップレベルの Amazon S3 フォルダ。

    • プレフィックス - バケット内の Amazon S3 フォルダ。

    • オブジェクト - Amazon S3 バケットでホストされているすべてのアイテム。

カスタム ACL の適用

高レベルコマンドでは、--acl オプションを使用して、事前定義されたアクセスコントロールリスト (ACL) を Amazon S3 オブジェクトに適用できます。ただし、そのコマンドを使用してバケット全体の ACL を設定することはできません。ただし、put-bucket-acl API レベルコマンドを使用すると、これを行うことができます。

次の例は、2 つの AWS ユーザー ( user1@example.comuser2@example.com) にフルコントロールを付与し、全員に読み取りアクセス許可を与える方法を示しています。「everyone」の識別子は、パラメータとして渡す特殊な URI から取得されます。

$ aws s3api put-bucket-acl --bucket MyBucket --grant-full-control 'emailaddress="user1@example.com",emailaddress="user2@example.com"' --grant-read 'uri="http://acs.amazonaws.com/groups/global/AllUsers"'

ACL の作成方法の詳細については、Amazon シンプルストレージサービス API リファレンスの「PUT Bucket acl」を参照してください。put-bucket-acl など、CLI の s3api ACL コマンドは、同様の引数の略記法を使用します。

ログ記録ポリシーの設定

API コマンド put-bucket-logging は、バケットのログ記録ポリシーを設定します。

次の例では、AWS ユーザー user@example.com にはログファイルに対する完全なコントロールが付与され、すべてのユーザーがログファイルに対する読み取り許可を持っています。put-bucket-acl コマンドは、Amazon S3 ログ配信システム (URI で指定された) に、バケットへのログの読み取りと書き込みに必要なアクセス許可を付与するためにも必要です。

$ aws s3api put-bucket-acl --bucket MyBucket --grant-read-acp 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"' --grant-write 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"' $ aws s3api put-bucket-logging --bucket MyBucket --bucket-logging-status file://logging.json

前のコマンドで logging.json ファイルの内容は、次のとおりです。

{ "LoggingEnabled": { "TargetBucket": "MyBucket", "TargetPrefix": "MyBucketLogs/", "TargetGrants": [ { "Grantee": { "Type": "AmazonCustomerByEmail", "EmailAddress": "user@example.com" }, "Permission": "FULL_CONTROL" }, { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AllUsers" }, "Permission": "READ" } ] } }

リソース

AWS CLI リファレンス

サービスリファレンス: