AWS SDK for JavaScriptは何ですか。 - AWS SDK for JavaScript

AWS SDK for JavaScriptV3 API Reference Guide(V3 API リファレンスガイド)では、AWS SDK for JavaScriptのバージョン3 (V3) のすべての API オペレーションについて詳しく説明します。

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

AWS SDK for JavaScriptは何ですか。

AWS SDK for JavaScript デベロッパーガイドへようこそ。このガイドは、AWS SDK for JavaScriptのセットアップおよび設定に関する一般的な情報を提供します。AWS SDK for JavaScriptを使用してさまざまなAWSのサービスを実行する例やチュートリアルも紹介されています。

AWS SDK for JavaScriptv3 API Reference Guide は JavaScript AWSのサービスのAPIを提供します。 JavaScript API を使用して、Node.js またはブラウザ用のライブラリまたはアプリケーションを構築できます。


       JavaScript 環境、SDK、および Amazon Web Services vice の関係

SDK メジャーバージョンのメンテナンスとサポート

SDK メジャーバージョンのメンテナンスとサポート、およびその基礎的な依存関係については、AWS SDK とツール共有設定および認証情報リファレンスガイドで以下を参照してください。

バージョン 3 の新機能とは

SDK for JavaScript (V3) のバージョン3には、以下の新機能が含まれています。

モジュール化されたパッケージ

ユーザーは、サービスごとに個別のパッケージを使用できます。

新しいミドルウェアスタック

ユーザーはミドルウェアスタックを使用して、オペレーション呼び出しのライフサイクルを制御できます。

さらに、SDK はで記述されており TypeScript、静的型付けなどの多くの利点があります。

重要

このガイドの V3 のコード例は、ECMAScript 6 (ES6) で記述されています。ES6 は、コードをよりモダンで読みやすくし、より多くのことをおこなうための新しい構文と新機能を提供します。ES6 では Node.js バージョン13.x以降を使用する必要があります。Node.js の最新バージョンをダウンロードしてインストールするには、Node.js downloads.を参照してください。詳細については、「JavaScript ES6/CommonJS 構文」を参照してください。

モジュール化されたパッケージ

SDK for JavaScript (V2) のバージョン2では、AWSのSDK全体を、以下の様に使用する必要がありました。

var AWS = require("aws-sdk");

アプリケーションが多くのAWSのサービスを使用している場合、SDK 全体のロードは問題はありません。ただし、わずかのAWSのサービスしか使用する必要がない場合、不要なコードや使用しないコードを使用してアプリケーション数を増やすことを意味します。

V3では、必要な個々のAWSサービスのみをロードして使用できます。これを次の例に示します。これにより、Amazon DynamoDB(DynamoDB)にアクセスできます。

import {DynamoDB} from "@aws-sdk/client-dynamodb";

個別のAWSのサービスを読み込んで使用することができるだけでなく、必要なサービスコマンドだけを読み込んで使用することもできます。これを次の例でDynamoDB クライアントとListTablesCommandコマンドにアクセスできることを示しています。

import { DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb";
重要

サブモジュールをモジュールにインポートしないでください。例えば、次のコードはエラーになる可能性があります。

import {CognitoIdentity} from "@aws-sdk/client-cognito-identity/CognitoIdentity";

正しいコードは、次のとおりです。

import {CognitoIdentity} from "@aws-sdk/client-cognito-identity";

コードサイズの比較

バージョン2(V2)では、us-west-2の地域内のすべての「Amazon DynamoDB」(Amazon DynamoDB)表を一覧表示する簡単なコード例は次のようになります。

var AWS = require("aws-sdk"); // Set the Region AWS.config.update({region: "us-west-2"}); // Create DynamoDB service object var ddb = new AWS.DynamoDB({apiVersion: "2006-03-01"}); // Call DynamoDB to retrieve the list of tables ddb.listTables({Limit:10}, function(err, data) { if (err) { console.log("Error", err.code); } else { console.log("Tables names are ", data.TableNames); } });

V3は次のようになります。

import { DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb"; (async function () { const dbclient = new DynamoDBClient({ region: 'us-west-2'}); try { const results = await dbclient.send(new ListTablesCommand); results.Tables.forEach(function (item, index) { console.log(item.Name); }); } catch (err) { console.error(err) } })();

aws-sdkのパッケージは、アプリケーションに約40MBを追加します。var AWS = require("aws-sdk")import {DynamoDB} from "@aws-sdk/client-dynamodb"に置き換えることで、そのオーバーヘッドを約 3 MB に削減します。インポートを DynamoDB クライアントとListTablesCommandのコマンドだけに限定することで、オーバーヘッドを 100 KB 以下に削減します。

// Load the DynamoDB client and ListTablesCommand command for Node.js import { DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb"; const dbclient = new DynamoDBClient({});

V3 でコマンドを呼び出す

V2 または V3 コマンドを使用して V3 で操作をすることができます。V3 コマンドを使用するには、コマンドと必要なAWSのサービスパッケージクライアントをインポートし、非同期/待機パターンを使用する.sendのメソッドを使用するコマンドを実行します。

V2 コマンドを使用するには、必要なAWSのサービスパッケージをインポートし、コールバックまたは非同期/待機パターンのどちらかを使用するパッケージ内で直接 V2 コマンドを実行します。

V3コマンドの使用

V3 は、各AWSのサービスパッケージ用のコマンドのセットを提供し、AWSのサービスに対して操作が実行できるようにします。AWSのサービスをインストールした後、node-modules/@aws-sdk/client-PACKAGE_NAME/commands folder.のプロジェクトで利用可能なコマンドを参照できます。

使用したいコマンドをインポートする必要があります。例えば、次のコードは DynamoDB サービスおよびCreateTableCommandのコマンドをロードします。

import {DynamoDB, CreateTableCommand} from "@aws-sdk/client-dynamodb";

これらのコマンドを推奨の非同期/待機パターンで呼び出すには、次の構文を使用します。

CLIENT.send(new XXXCommand)

例えば、次の例では、推奨される非同期/待機 パターンを使用して DynamoDB テーブルを作成します。

import {DynamoDB, CreateTableCommand} from "@aws-sdk/client-dynamodb"; const dynamodb = new DynamoDB({region: 'us-west-2'}); var tableParams = { Table : TABLE_NAME }; (async function () => { try{ const data = await dynamodb.send(new CreateTableCommand(tableParams)); console.log("Success", data); } catch (err) { console.log("Error", err); } })();
V2 コマンドの使用

SDK for で V2 コマンドを使用するには JavaScript、以下のコードに示す通りAWSのサービスパッケージ全部をインポートします。

const {DynamoDB} = require('@aws-sdk/client-dynamodb');

推奨される非同期/待機パターンでV2コマンドを呼び出すには、次の構文を使用します。

client.command(parameters)

次の例では V2createTableのコマンドを使用して推奨される 非同期/待機パターンを使用して DynamoDB テーブルを作成します。

const {DynamoDB} = require('@aws-sdk/client-dynamodb'); const dymamoDB = new DynamoDB({region: 'us-west-2'}); var tableParams = { TableName : TABLE_NAME }; async function run() => { try { const data = await dymamoDB.createTable(tableParams); console.log("Success", data); } catch (err) { console.log("Error", err); } }; run();

次の例では V2createBucketのコマンドを使用して、コールバックパターンを使って Amazon S3 バケットを作成します。

const {S3} = require('@aws-sdk/client-s3'); const s3 = new S3({region: 'us-west-2'}); var bucketParams = { Bucket : BUCKET_NAME }; function run(){ s3.createBucket(bucketParams, function(err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Location); } }) };

新しいミドルウェアスタック

SDK の V2では、イベントリスナーをリクエストに添付することで、ライフサイクルの複数のステージを介してリクエストを変更できるようになりました。このアプローチでは、リクエストのライフサイクル中に問題が発生したことをデバッグすることが困難になる可能性があります。

V3 では、新しいミドルウェアスタックを使用して、オペレーション呼び出しのライフサイクルを制御できます。このアプローチには、いくつかの利点があります。スタック内の各ミドルウェアステージは、リクエストオブジェクトに変更を加えた後、次のミドルウェアステージを呼び出します。また、エラーに至るまでのミドルウェアステージが呼び出されたかを正確に確認できるため、スタック内の問題のデバッグがはるかに簡単になります。

次の例では、ミドルウェアを使用して (先ほど作成して示した) Amazon DynamoDB クライアントにカスタムヘッダーを追加します。最初の引数は呼び出すスタックの次のミドルウエアステージであるnextを受け入れる関数と、呼び出され操作に関する情報を含むオブジェクトであるcontextを受け入れる関数です。この関数は、操作とリクエストに渡されるパラメータを含むオブジェクトのargsを受け入れる関数を返します。次のミドルウェアをargsで呼び出した結果を返します

dbclient.middlewareStack.add( (next, context) => args => { args.request.headers["Custom-Header"] = "value"; return next(args); }, { step: "build" } ); dbclient.send(new PutObjectCommand(params));

Node.js で SDK を使用する

Node.js は、 JavaScript サーバーサイドアプリケーションを実行するためのクロスプラットフォームランタイムです。Node.js を Amazon Elastic Compute Cloud (Amazon EC2 )インスタンスで設定してサーバーで実行できます。Node.js を使用してオンデマンドの AWS Lambda 関数を書き込むこともできます。

Node.js 用の SDK の使用方法は、Web ブラウザを使用する方法とは異なります。 JavaScript この違いは、SDK のロード方法と、特定のウェブサービスにアクセスするために必要な認証情報の取得方法によるものです。特定の API の使用がNode.jsとブラウザの間で異なる場合、これらの違いを呼び出します。

AWS Cloud9 による SDK の使用

AWS Cloud9IDE JavaScript で SDK for for を使用して Node.js アプリケーションを開発することもできます。SDK forAWS Cloud9 での使用の詳細については JavaScript、を参照してくださいAWS Cloud9 を AWS SDK for JavaScript に使用する

AWS Amplify による SDK の使用

ブラウザベースの Web、モバイル、ハイブリッドアプリケーションの場合は、AWS Amplify上のライブラリを使用することもできます GitHub。SDK for を拡張し JavaScript、宣言タイプインターフェイスを提供します。

注記

Amplify などのフレームワークは、SDK for SDK と同じブラウザをサポートしない可能性があります JavaScript。詳細については、フレームワークドキュメントを参照してください。

ウェブブラウザで SDK を使用します。

すべての主要な Web ブラウザは、の実行をサポートしています JavaScript。 JavaScript Web ブラウザで実行されるコードは、多くの場合、クライアント側と呼ばれます JavaScript

AWS SDK for JavaScript がサポートしているブラウザのリストについては、「サポートされているウェブブラウザ」を参照してください。

JavaScript ウェブブラウザでの SDK for の使用方法は、Node.js を使用する方法とは異なります。この違いは、SDK のロード方法と、特定のウェブサービスにアクセスするために必要な認証情報の取得方法によるものです。特定の API の使用がNode.jsとブラウザの間で異なる場合、これらの違いを呼び出します。

V3 でブラウザーを使用

V3 は、 JavaScript 必要なファイルのSDK のみをバンドルしてブラウザに含め、オーバーヘッドの削減を有効にします。

SDK for JavaScript のV3をHTMLページで使用するには、 JavaScript JavaScript 必要なクライアントモジュールと必要なすべての関数をWebpackを使用して単一のファイルにバンドルし、HTMLページのスクリプトタグに追加する必要があります。<head>例:

<script src="./main.js"></script>
注記

Webpackの詳細については、Webpack でアプリケーションをバンドルしますを参照してください。

SDK の V2 を代わりに使用するには、代わりにV2 SDK の最新バージョンを指すスクリプトタグを追加します。 JavaScript 詳細については、https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html#getting-started-browser-run-sampleのSDK for JavaScript v2デベロッパーガイドを参照してください。

一般的なユースケース

JavaScript ブラウザスクリプトでSKD for JavaScriptを使用すると、多くの魅力的なユースケースを実現できます。SDK for JavaScript JavaScript を使用してさまざまなウェブサービスにアクセスすることにより、ブラウザーアプリケーションで構築できるいくつかのアイデアを次に示します。

  • AWS のサービス用にカスタムコンソールを構築して、複数のリージョンやサービスにわたる機能にアクセスし、それらを組み合わせて組織やプロジェクトのニーズが最大限に満たされるようにします。

  • Amazon Cognito アイデンティティを使用して、Facebook やその他のサードパーティーによる認証の使用を含めて、認証されたユーザーがブラウザアプリケーションやウェブサイトにアクセスできるようにします。

  • Amazon Kinesis を使用して、クリックストリームやその他のマーケティングデータをリアルタイムで処理します。

  • ウェブサイトの訪問者やアプリケーションユーザー向けの個別の優先ユーザー選定などの、サーバーレスデータの永続性のために Amazon DynamoDB を使用します。

  • AWS Lambda を使用して、ダウンロードなしで、知的財産をユーザーに公開することなくブラウザのスクリプトから呼び出すことができる独自のロジックをカプセル化する。

例について

SDK を使用して、 JavaScript AWSコードサンプルリポジトリで例を参照できます

リソース

このガイドに加えて、SDK for JavaScript デベロッパーには次のオンラインリソースが利用可能です。