Amazon S3 バケットの作成と使用 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

Amazon S3 バケットの作成と使用

JavaScript code example that applies to Node.js execution

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

  • アカウントの Amazon S3 バケットのリストを取得して表示する方法。

  • Amazon S3 バケットを作成する方法。

  • 指定バケットにオブジェクトをアップロードする方法。

シナリオ

この例では、一連の Node.js モジュールを使用して既存の Amazon S3 バケットのリストを取得し、バケットを作成して、指定したバケットにファイルをアップロードします。これらの Node.js モジュールは SDK for JavaScript を使用し、 Amazon S3 クライアントクラスのこれらのメソッドを使用して、Amazon S3 バケットから情報を取得し、Amazon S3 バケットにファイルをアップロードします。

前提条件タスク

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

SDK の設定

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

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

Amazon S3 バケットのリストを表示する

s3_listbuckets.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。Amazon Simple Storage Service にアクセスするには、AWS.S3 サービスオブジェクトを作成します。Amazon S3 サービスオブジェクトの listBuckets メソッドを呼び出して、バケットのリストを取得します。コールバック関数の data パラメータには、バケットを表すマップの配列を含む Buckets プロパティがあります。コンソールにログ記録してバケットリストを表示します。

// 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" }); // Call S3 to list the buckets s3.listBuckets(function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Buckets); } });

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

node s3_listbuckets.js

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

Amazon S3 バケットの作成

s3_createbucket.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。このモジュールでは、単一のコマンドライン引数を取り、新しいバケットの名前を指定します。

新しく作成したバケットの名前など、Amazon S3 サービスオブジェクトの createBucket メソッドの呼び出しに使用されるパラメータを保持する変数を追加します。Amazon S3 が正常に作成した後、コールバック関数は新しいバケットのロケーションをコンソールにログ記録します。

// 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" }); // Create the parameters for calling createBucket var bucketParams = { Bucket: process.argv[2], }; // call S3 to create the bucket s3.createBucket(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); } });

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

node s3_createbucket.js BUCKET_NAME

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

Amazon S3 バケットへのファイルのアップロード

s3_upload.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。このモジュールは 2 つのコマンドライン引数を取ります。1 つ目は送信先バケットを指定するためのもので、もう 1 つはアップロードするファイルを指定するためのものです。

Amazon S3 サービスオブジェクトの upload メソッドを呼び出すために必要なパラメータで変数を作成します。Bucket パラメータ内のターゲットバケットの名前を指定します。Key パラメータは、Node.js path モジュールを使用して取得できる、選択したファイルの名前に設定されています。The Body パラメータはファイルの内容に設定されます。これは Node.js fs モジュールから createReadStream を使用して取得できます。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create S3 service object var s3 = new AWS.S3({ apiVersion: "2006-03-01" }); // call S3 to retrieve upload file to specified bucket var uploadParams = { Bucket: process.argv[2], Key: "", Body: "" }; var file = process.argv[3]; // Configure the file stream and obtain the upload parameters var fs = require("fs"); var fileStream = fs.createReadStream(file); fileStream.on("error", function (err) { console.log("File Error", err); }); uploadParams.Body = fileStream; var path = require("path"); uploadParams.Key = path.basename(file); // call S3 to retrieve upload file to specified bucket s3.upload(uploadParams, function (err, data) { if (err) { console.log("Error", err); } if (data) { console.log("Upload Success", data.Location); } });

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

node s3_upload.js BUCKET_NAME FILE_NAME

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

Amazon S3 バケットでオブジェクトを一覧表示する

s3_listobjects.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。

読み取るバケットの名前を含め、Amazon S3 サービスオブジェクトの listObjects メソッドを呼び出すために使用されるパラメータを保持する変数を追加します。コールバック関数は、オブジェクト (ファイル) のリストまたはエラーメッセージをログに記録します。

// 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" }); // Create the parameters for calling listObjects var bucketParams = { Bucket: "BUCKET_NAME", }; // Call S3 to obtain a list of the objects in the bucket s3.listObjects(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node s3_listobjects.js

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

Amazon S3 バケットの削除

s3_deletebucket.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。AWS.S3 サービスオブジェクトを作成します。

削除するバケットの名前を含め、Amazon S3 サービスオブジェクトの createBucket メソッドを呼び出すために使用されるパラメータを保持する変数を追加します。削除するためには、バケットは空である必要があります。コールバック関数は成功または失敗のメッセージをログに記録します。

// 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" }); // Create params for S3.deleteBucket var bucketParams = { Bucket: "BUCKET_NAME", }; // Call S3 to delete the bucket s3.deleteBucket(bucketParams, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

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

node s3_deletebucket.js

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