

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。如需如何遷移的其他詳細資訊和資訊，請參閱此[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立和呼叫服務物件
<a name="creating-and-calling-service-objects"></a>

JavaScript API 支援大多數可用的 AWS 服務。JavaScript API 中的每個服務類別皆可讓您在其服務內存取所有 API 呼叫。如需 JavaScript API 中服務類別、操作和參數的詳細資訊，請參閱 [API 參考](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html)。

在 Node.js 中使用軟體開發套件時，您能夠利用 `require` 新增軟體開發套件封裝至應用程式，其可支援所有現有服務。

```
var AWS = require('aws-sdk');
```

當您搭配使用軟體開發套件與瀏覽器 JavaScript 時，則可善用 AWS 託管的軟體開發套件封裝，將軟體開發套件封裝載入至瀏覽器指令碼。若要載入軟體開發套件封裝，請新增下列 `<script>` 標籤：

```
<script src="https://sdk.amazonaws.com/js/aws-sdk-SDK_VERSION_NUMBER.min.js"></script>
```

若要尋找目前的 SDK\$1VERSION\$1NUMBER，請參閱《 API 參考指南》中適用於 JavaScript 的 SDK 的 API 參考。 [適用於 JavaScript 的 AWS SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/)

預設託管 SDK 套件支援一部分的可用 AWS 服務。如需適用於瀏覽器的託管軟體開發套件封裝預設服務清單，請參閱 API 參考中的[支援的服務](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/#Supported_Services)。如果 CORS 安全性檢查功能遭停用，您可以搭配其他服務使用軟體開發套件。在這種情況下，您可以建置自訂版本的軟體開發套件，並視需要加入其他服務。如需建置自訂版本軟體開發套件的詳細資訊，請參閱[建立適用於瀏覽器的軟體開發套件](building-sdk-for-browsers.md)。

## 要求個別服務
<a name="requiring-individual-services"></a>

如先前所示，需要適用於 JavaScript 的 SDK 將整個 SDK 包含在程式碼中。或者，您也能選擇僅需加入程式碼所使用的個別服務。請考慮下列用來建立 Amazon S3 服務物件的程式碼。

```
// Import the AWS SDK
var AWS = require('aws-sdk');

// Set credentials and Region
// This can also be done directly on the service client
AWS.config.update({region: 'us-west-1', credentials: {YOUR_CREDENTIALS}});

var s3 = new AWS.S3({apiVersion: '2006-03-01'});
```

在上述範例中，`require` 函數會指定整個軟體開發套件。如果只包含 Amazon S3 服務所需的開發套件部分，則透過網路傳輸的程式碼量以及程式碼的記憶體負荷會大幅減少。若需要加入個別服務，請呼叫 `require` 函數，其中應包括全部小寫的服務建構函數，如下所示。

```
require('aws-sdk/clients/SERVICE');
```

以下是在僅包含 SDK 的 Amazon S3 部分時，建立先前 Amazon S3 服務物件的程式碼。

```
// Import the Amazon S3 service client
var S3 = require('aws-sdk/clients/s3');
 
// Set credentials and Region
var s3 = new S3({
    apiVersion: '2006-03-01',
    region: 'us-west-1', 
    credentials: {YOUR_CREDENTIALS}
  });
```

您仍然可以存取全域 AWS 命名空間，而無需連接每個服務。

```
require('aws-sdk/global');
```

這個技術很適合用來將相同組態套用至多個個別服務。舉例而言，您可以提供相同的登入資料給所有服務。要求個別服務應該能減少 Node.js 環境中的載入時間，以及記憶體耗用情形。使用 Browserify 或 webpack 等綁定工具時，要求個別服務只會納入軟體開發套件完整大小的一部分。這有助於處理記憶體或磁碟空間受限的環境，例如 IoT 裝置或 Lambda 函數。

## 建立服務物件
<a name="creating-service-objects"></a>

若要透過 JavaScript API 存取服務功能，您必須先建立*服務物件*，其可讓您存取基礎用戶端類別提供的一組功能。普遍來說，系統會提供一個用戶端類別給每個服務，但某些服務會將功能存取權限分成多個用戶端類別。

您必須針對提供功能存取權的類別建立執行個體，才能使用該功能。下列範例顯示從`AWS.DynamoDB`用戶端類別為 DynamoDB 建立服務物件。

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
```

在預設情況下，系統會使用設定軟體開發套件的全域設定來配置服務物件。然而，您可以利用服務物件特定的執行時間組態資料來設定該服務物件。系統會先套用全域組態設定，隨後再套用服務特定的組態資料。

在下列範例中，會使用特定區域的組態建立 Amazon EC2 服務物件，否則會使用全域組態。

```
var ec2 = new AWS.EC2({region: 'us-west-2', apiVersion: '2014-10-01'});
```

本工具除了支援套用服務特定組態至個別服務物件以外，也能讓您將服務特定組態套用至所有指定類別新建的服務物件。例如，若要設定從 Amazon EC2 類別建立的所有服務物件使用美國西部 （奧勒岡） (`us-west-2`) 區域，請將下列項目新增至`AWS.config`全域組態物件。

```
AWS.config.ec2 = {region: 'us-west-2', apiVersion: '2016-04-01'};
```

## 鎖定服務物件的 API 版本
<a name="locking-api-version-of-service-objects"></a>

您能夠在建立物件時指定 `apiVersion` 選項，藉此鎖定服務物件以使用特定的服務 API 版本。在下列範例中，會建立鎖定至特定 API 版本的 DynamoDB 服務物件。

```
var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'});
```

如需鎖定服務物件 API 版本的詳細資訊，請參閱[鎖定 API 版本](locking-api-versions.md)。

## 指定服務物件參數
<a name="specifying-service-object-parameters"></a>

在呼叫服務物件的方法時，請依照 API 所需來傳遞 JSON 格式的參數。例如，在 Amazon S3 中，若要取得指定儲存貯體和金鑰的物件，請將下列參數傳遞至 `getObject`方法。如需傳遞 JSON 參數的詳細資訊，請參閱[使用 JSON](working-with-json.md)。

```
s3.getObject({Bucket: 'bucketName', Key: 'keyName'});
```

如需 Amazon S3 參數的詳細資訊，請參閱 API 參考[https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html)中的 。

此外，當您使用 `params` 參數建立服務物件時，也能將數值繫結至個別參數。服務物件的 `params` 參數值是一個映射屬性，可指定該服務物件定義的一個或多個參數值。下列範例顯示 Amazon S3 服務物件的 `Bucket` 參數繫結至名為 的儲存貯體`amzn-s3-demo-bucket`。

```
var s3bucket = new AWS.S3({params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
```

一旦將服務物件繫結至儲存貯體，`s3bucket` 服務物件即會視 `amzn-s3-demo-bucket` 參數值為預設值，後續操作中無需再加以指定。如果將物件用於參數值不適用的操作，系統就會忽略任何繫結的參數值。您能夠指定新數值，以便在呼叫服務物件時覆寫此繫結參數。

```
var s3bucket = new AWS.S3({ params: {Bucket: 'amzn-s3-demo-bucket'}, apiVersion: '2006-03-01' });
s3bucket.getObject({Key: 'keyName'});
// ...
s3bucket.getObject({Bucket: 'amzn-s3-demo-bucket3', Key: 'keyOtherName'});
```

如需每個方法可用的參數詳細資訊，請參閱 API 參考。