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

私たちは、改善に役立つAWS SDK for JavaScriptを使用してフィードバックを提供することで、バージョン 3 (V3) のドキュメントをフィードバックリンクを作成するか、または懸案またはプルリクエストをGitHub

-AWS SDK for JavaScriptV3 API リファレンスガイドのすべての API 操作について詳しく説明しています。AWS SDK for JavaScriptバージョン 3 (V3)。

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

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


                        JavaScript code example that applies to Node.js execution

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

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

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

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

シナリオ

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

以下の方法を使用する例もある。ノード・フェッチ署名付き URL を生成します。

前提条件タスク

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

重要

これらの例は、ECMAScript6 (ES6) を使用してクライアントサービスオブジェクトおよびコマンドをインポート/エクスポートする方法を示しています。

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

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

このコードはGitHub の GitHub で

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

// Import required AWS SDK clients and commands for Node.js import { ListBucketsCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. export const run = async () => { try { const data = await s3Client.send(new ListBucketsCommand({})); console.log("Success", data.Buckets); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_listbuckets.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットの作成

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

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

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

// Get service clients module and commands using ES6 syntax. import { CreateBucketCommand } from "@aws-sdk/client-s3"; import { s3 } from "./libs/s3Client.js"; // Set the bucket parameters const bucketParams = { Bucket: "BUCKET_NAME" }; // Create the Amazon S3 bucket. const run = async () => { try { const data = await s3.send(new CreateBucketCommand(bucketParams)); console.log("Success", data.Location); return data; } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_createbucket.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットの作成

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

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

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

// Get service clients module and commands using ES6 syntax. import { CreateBucketCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Set the bucket parameters. export const bucketParams = { Bucket: "brmurbucket" }; // Create the Amazon S3 bucket. export const run = async () => { try { const data = await s3Client.send(new CreateBucketCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_createbucket.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットにファイルをアップロードする

このセクションでは、次の方法について説明します。

  • 新しいオブジェクトを作成し、Amazon S3 バケットにアップロードします。

  • Amazon S3 バケットに既存のオブジェクトをアップロードします。

Amazon S3 バケットにオブジェクトを作成およびアップロードする

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_create_and_upload_object.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

呼び出すために必要なパラメータで変数を作成します。PutObjectCommandAmazon S3 のサービスオブジェクトのメソッドを使用します。Bucket パラメータ内のターゲットバケットの名前を指定します。のKeyパラメータで、オブジェクトの名前を指定します。

注記

オブジェクトのディレクトリを作成するには、directoryY_NAME/OBJECT_NAME

// Import required AWS SDK clients and commands for Node.js import { PutObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. // Set the parameters. export const bucketParams = { Bucket: "BUCKET_NAME", // Specify the name of the new object. For example, 'index.html'. // To create a directory for the object, use '/'. For example, 'myApp/package.json'. Key: "OBJECT_NAME", // Content of the new object. Body: "BODY", }; // Create and upload the object to the specified Amazon S3 bucket. export const run = async () => { try { const data = await s3Client.send(new PutObjectCommand(bucketParams)); return data; // For unit tests. console.log( "Successfully uploaded object: " + bucketParams.Bucket + "/" + bucketParams.Key ); } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_create_and_upload_object.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットに既存のオブジェクトをアップロードする

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_upload_object.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

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

// Import required AWS SDK clients and commands for Node.js. import { PutObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. import {path} from "path"; import {fs} from "fs"; const file = "OBJECT_PATH_AND_NAME"; // Path to and name of object. For example '../myFiles/index.js'. const fileStream = fs.createReadStream(file); // Set the parameters export const uploadParams = { Bucket: "BUCKET_NAME", // Add the required 'Key' parameter using the 'path' module. Key: path.basename(file), // Add the required 'Body' parameter Body: fileStream, }; // Upload file to specified bucket. export const run = async () => { try { const data = await s3Client.send(new PutObjectCommand(uploadParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_upload_object.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットからのファイルの取得

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_getobject.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。このモジュールは 2 つのコマンドライン引数を取ります。1 つ目はターゲットバケットを指定するためのもので、もう 1 つは取得するファイルを指定するためのものです。

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

// Import required AWS SDK clients and commands for Node.js. import { GetObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY", }; export const run = async () => { try { // Create a helper function to convert a ReadableStream to a string. const streamToString = (stream) => new Promise((resolve, reject) => { const chunks = []; stream.on("data", (chunk) => chunks.push(chunk)); stream.on("error", reject); stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8"))); }); // Get the object} from the Amazon S3 bucket. It is returned as a ReadableStream. const data = await s3Client.send(new GetObjectCommand(bucketParams)); return data; // For unit tests. // Convert the ReadableStream to a string. const bodyContents = await streamToString(data.Body); console.log(bodyContents); return bodyContents; } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_upload.js

このサンプルコードは、GitHub で入手できます。

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

この例では、Amazon S3 バケットに最大 1000 個のオブジェクトを一覧表示します。

注記

1000 を超えるオブジェクトを一覧表示するには、Amazon S3 バケットに 1000 を超えるオブジェクトを一覧表示する

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_listobjects.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

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

// Import required AWS SDK clients and commands for Node.js import { ListObjectsCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. // Create the parameters for the bucket export const bucketParams = { Bucket: "BUCKET_NAME" }; export const run = async () => { try { const data = await s3Client.send(new ListObjectsCommand(bucketParams)); console.log("Success", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_listobjects.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットに 1000 を超えるオブジェクトを一覧表示する

この例では、Amazon S3 バケット内の 1000 を超えるオブジェクトを一覧表示します。

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

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

whileループを使用して、すべての項目がリストされるまで、各1000項目をリストします。次に、truncatedの値を持つフラグとしてtrueと、一度に1,000個のアイテムを出力するwhileループがあり、フラグがfalse

// Import required AWS SDK clients and commands for Node.js import { ListObjectsCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. // Create the parameters for the bucket export const bucketParams = { Bucket: "BUCKET_NAME" }; export async function run() { // Declare truncated as a flag that we will base our while loop on let truncated = true; // Declare a variable that we will assign the key of the last element in the response to let pageMarker; // While loop that runs until response.truncated is false while (truncated) { try { const response = await s3Client.send(new ListObjectsCommand(bucketParams)); // return response; //For unit tests response.Contents.forEach((item) => { console.log(item.Key); }); // Log the Key of every item in the response to standard output truncated = response.IsTruncated; // If 'truncated' is true, assign the key of the final element in the response to our variable 'pageMarker' if (truncated) { pageMarker = response.Contents.slice(-1)[0].Key; // Assign value of pageMarker to bucketParams so that the next iteration will start} from the new pageMarker. bucketParams.Marker = pageMarker; } // At end of the list, response.truncated is false and our function exits the while loop. } catch (err) { console.log("Error", err); truncated = false; } } } run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_list1000plusobjects.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットの削除

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_deletebucket.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

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

// Import required AWS SDK clients and commands for Node.js import { DeleteBucketCommand } from "@aws-sdk/client-s3/"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. // Set the bucket parameters export const bucketParams = { Bucket: "BUCKET_NAME" }; export const run = async () => { try { const data = await s3Client.send(new DeleteBucketCommand(bucketParams)); return data; // For unit tests. console.log("Success - bucket deleted"); } catch (err) { console.log("Error", err); } }; // Invoke run() so these examples run out of the box. run();

この例を実行するには、コマンドプロンプトで以下のように入力します。

node s3_deletebucket.js

このサンプルコードは、GitHub で入手できます。

署名付き URL の作成

このセクションでは、署名付き URL を作成して Amazon S3 バケットにオブジェクトを取得および配置する方法について説明しました。

Amazon S3 バケットにオブジェクトをアップロードするための署名付き URL を作成する

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_presignedURL_v3.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

バケットとアップロードするオブジェクトを作成し、オブジェクトをアップロードする署名付き URL を作成し、オブジェクトをアップロードする関数を作成します。この例では、不要な費用が発生しないように、オブジェクトとバケットは自動的に削除されます。

呼び出すために必要なパラメータで変数を作成します。PutObjectCommandAmazon S3 のサービスオブジェクトのコマンドを実行します。この例では、バケット名、ファイル名、キー、本文、有効期限までの期間が事前に入力されています。

署名付き URL の作成の詳細については、」を参照してください。https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

// Import the required AWS SDK clients and commands for Node.js import { CreateBucketCommand, DeleteObjectCommand, PutObjectCommand, DeleteBucketCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; import fetch from "node-fetch"; // Set parameters // Create a random names for the Amazon Simple Storage Service (Amazon S3) bucket and key export const bucketParams = { Bucket: `test-bucket-${Math.ceil(Math.random() * 10 ** 10)}`, Key: `test-object-${Math.ceil(Math.random() * 10 ** 10)}`, Body: "BODY" }; export const run = async () => { try { // Create an Amazon S3 bucket. console.log(`Creating bucket ${bucketParams.Bucket}`); await s3Client.send(new CreateBucketCommand({ Bucket: bucketParams.Bucket })); console.log(`Waiting for "${bucketParams.Bucket}" bucket creation...`); } catch (err) { console.log("Error creating bucket", err); } try { // Create the command. const command = new PutObjectCommand(bucketParams); // Create the presigned URL. const signedUrl = await getSignedUrl(s3Client, command, { expiresIn: 3600, }); console.log( `\nPutting "${params.Key}" using signedUrl with body "${bucketParams.Body}" in v3` ); console.log(signedUrl); const response = await fetch(signedUrl); console.log( `\nResponse returned by signed URL: ${await response.text()}\n` ); return response; } catch (err) { console.log("Error creating presigned URL", err); } try { // Delete the object. console.log(`\nDeleting object "${bucketParams.Key}"} from bucket`); await s3Client.send( new DeleteObjectCommand({ Bucket: bucketParams.Bucket, Key: params.Key }) ); } catch (err) { console.log("Error deleting object", err); } try { // Delete the Amazon S3 bucket. console.log(`\nDeleting bucket ${bucketParams.Bucket}`); await s3.send(new DeleteBucketCommand({ Bucket: bucketParams.Bucket })); } catch (err) { console.log("Error deleting bucket", err); } }; run();

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

node s3_put_presignedURL_v3.js

このサンプルコードは、GitHub で入手できます。

Amazon S3 バケットからオブジェクトを取得する署名付き URL を作成します。

の作成libsディレクトリを作成し、というファイル名で Node.js モジュールを作成します。s3Client.js。以下のコードをコピーして貼り付けます。これにより、Amazon S3 クライアントオブジェクトが作成されます。置換リージョン側のAWSリージョン。

import { S3Client} from "@aws-sdk/client-s3"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an Amazon S3 service client object. const s3Client = new S3Client({ region: REGION }); export { s3Client };

このコードはGitHub の GitHub で

s3_get_presignedURL_v3.js というファイル名で Node.js モジュールを作成します。前に示したように、SDK が設定されていることを確認します。これには、SDK が設定されていることを確認します。

バケットを作成し、アップロードし、オブジェクトを作成し、署名付き URL を作成してバケットからオブジェクトを取得する関数を作成します。この例では、不要な費用が発生しないように、オブジェクトとバケットは自動的に削除されます。

呼び出すために必要なパラメータで変数を作成します。GetObjectCommandAmazon S3 のサービスオブジェクトのコマンドを実行します。この例では、バケット名、ファイル名、キー、本文、有効期限までの期間が事前に入力されています。

署名付き URL の作成の詳細については、」を参照してください。https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

// Import the required AWS SDK clients and commands for Node.js import { CreateBucketCommand, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, DeleteBucketCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js"; // Helper function that creates Amazon S3 service client module. import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; const fetch = require("node-fetch"); // Set parameters // Create random names for the Amazon Simple Storage Service (Amazon S3) bucket and key. export const bucketParams = { Bucket: `test-bucket-${Math.ceil(Math.random() * 10 ** 10)}`, Key: `test-object-${Math.ceil(Math.random() * 10 ** 10)}`, Body: "BODY" }; export const run = async () => { // Create an Amazon S3 bucket. try { console.log(`Creating bucket ${bucketParams.Bucket}`); const data = await s3Client.send( new CreateBucketCommand({ Bucket: bucketParams.Bucket }) ); return data; // For unit tests. console.log(`Waiting for "${bucketParams.Bucket}" bucket creation...\n`); } catch (err) { console.log("Error creating bucket", err); } // Put the object in the Amazon S3 bucket. try { console.log(`Putting object "${bucketParams.Key}" in bucket`); const data = await s3Client.send( new PutObjectCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key, Body: bucketParams.Body, }) ); return data; // For unit tests. } catch (err) { console.log("Error putting object", err); } // Create a presigned URL. try { // Create the command. const command = new GetObjectCommand(bucketParams); // Create the presigned URL. const signedUrl = await getSignedUrl(s3Client, command, { expiresIn: 3600, }); console.log( `\nGetting "${bucketParams.Key}" using signedUrl with body "${bucketParams.Body}" in v3` ); console.log(signedUrl); const response = await fetch(signedUrl); console.log( `\nResponse returned by signed URL: ${await response.text()}\n` ); } catch (err) { console.log("Error creating presigned URL", err); } // Delete the object. try { console.log(`\nDeleting object "${bucketParams.Key}"} from bucket`); const data = await s3Client.send( new DeleteObjectCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key }) ); return data; // For unit tests. } catch (err) { console.log("Error deleting object", err); } // Delete the bucket. try { console.log(`\nDeleting bucket ${bucketParams.Bucket}`); const data = await s3Client.send( new DeleteBucketCommand({ Bucket: bucketParams.Bucket, Key: bucketParams.Key }) ); return data; // For unit tests. } catch (err) { console.log("Error deleting object", err); } }; run();

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

node s3_get_presignedURL_v3.js

このサンプルコードは、GitHub で入手できます。