Amazon S3 バケットのポリシーを使用する - AWS SDK for JavaScript

AWS SDK for JavaScript v2 の近日発表 end-of-support しました。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

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

Amazon S3 バケットのポリシーを使用する


                        JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • Amazon S3 バケットのバケットポリシーを取得する方法。

  • Amazon S3 バケットのバケットポリシーを追加または更新する方法。

  • Amazon S3 バケットのバケットポリシーを削除する方法。

シナリオ

この例では、一連の Node.js モジュールを使用して Amazon S3 バケットのバケットポリシーを取得、設定、または削除します。Node.js モジュールは SDK for JavaScript を使用して、Amazon S3 クライアントクラスの次のメソッドを使用して、選択した Amazon S3 バケットのポリシーを設定します。

Amazon S3 バケットのバケットポリシーの詳細については、Amazon Simple Storage Service ユーザーガイドの「バケットポリシーとユーザーポリシーの使用」を参照してください。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。

SDK の設定

グローバル設定オブジェクトを作成し、コードのリージョンを設定 JavaScript して、 の SDK を設定します。この例では、リージョンは us-west-2 に設定されています。

// Load the SDK for JavaScript var AWS = require('aws-sdk'); // Set the Region AWS.config.update({region: 'us-west-2'});

現在のバケットポリシーを取得する

s3_getbucketpolicy.js というファイル名で Node.js モジュールを作成します。モジュールは単一のコマンドライン引数を取り、必要なポリシーがあるバケットを指定します。前に示したように、SDK が設定されていることを確認します。

AWS.S3 サービスオブジェクトを作成します。渡す必要がある唯一のパラメータは、getBucketPolicy メソッドを呼び出すときに選択したバケットの名前です。バケットに現在ポリシーがある場合、そのポリシーはコールバック関数に渡される data パラメータで Amazon S3 によって返されます。

選択したバケットにポリシーがない場合、その情報は error パラメータでコールバック関数に返されます。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to retrieve policy for selected bucket s3.getBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data.Policy); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_getbucketpolicy.js BUCKET_NAME

このサンプルコードは、 にあります GitHub

シンプルバケットポリシーを設定する

s3_setbucketpolicy.js というファイル名で Node.js モジュールを作成します。モジュールは単一のコマンドライン引数を取り、適用するポリシーがあるバケットを指定します。前に示したように SDK を設定します。

AWS.S3 サービスオブジェクトを作成します。バケットポリシーは JSON で指定します。まず、バケットを識別する Resource 値を除くすべての値を含む JSON オブジェクトを作成して、ポリシーを指定します。

ポリシーに必要な Resource 文字列を選択したバケットの名前を組み込んでフォーマットします。JSON オブジェクトにその文字列を挿入します。putBucketPolicy メソッドのパラメータを準備します。これには、バケットの名前と JSON ポリシーを文字列値に変換したものを含めます。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var readOnlyAnonUserPolicy = { Version: "2012-10-17", Statement: [ { Sid: "AddPerm", Effect: "Allow", Principal: "*", Action: ["s3:GetObject"], Resource: [""], }, ], }; // create selected bucket resource string for bucket policy var bucketResource = "arn:aws:s3:::" + process.argv[2] + "/*"; readOnlyAnonUserPolicy.Statement[0].Resource[0] = bucketResource; // convert policy JSON into string and assign into params var bucketPolicyParams = { Bucket: process.argv[2], Policy: JSON.stringify(readOnlyAnonUserPolicy), }; // set the new policy on the selected bucket s3.putBucketPolicy(bucketPolicyParams, function (err, data) { if (err) { // display error message console.log("Error", err); } else { console.log("Success", data); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_setbucketpolicy.js BUCKET_NAME

このサンプルコードは、 にあります GitHub

バケットポリシーの削除

s3_deletebucketpolicy.js というファイル名で Node.js モジュールを作成します。モジュールは単一のコマンドライン引数を取り、削除するポリシーがあるバケットを指定します。前に示したように SDK を設定します。

AWS.S3 サービスオブジェクトを作成します。deleteBucketPolicy メソッドを呼び出すときに渡す必要がある唯一のパラメータは、選択したバケットの名前です。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object s3 = new AWS.S3({ apiVersion: "2006-03-01" }); var bucketParams = { Bucket: process.argv[2] }; // call S3 to delete policy for selected bucket s3.deleteBucketPolicy(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else if (data) { console.log("Success", data); } });

この例を実行するには、コマンドラインに次のように入力します。

node s3_deletebucketpolicy.js BUCKET_NAME

このサンプルコードは、 にあります GitHub