

 適用於 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/)。

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

# Node.js 入門
<a name="getting-started-nodejs"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/zh_tw/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**這個 Node.js 程式碼範例會說明：**
+ 如何為專案建立 `package.json` 資訊清單。
+ 如何安裝並加入專案所使用的模組。
+ 如何從`AWS.S3`用戶端類別建立 Amazon Simple Storage Service (Amazon S3) 服務物件。
+ 如何建立 Amazon S3 儲存貯體，並將物件上傳至該儲存貯體。

## 使用案例
<a name="getting-started-nodejs-scenario"></a>

此範例示範如何設定和執行簡單的 Node.js 模組來建立 Amazon S3 儲存貯體，然後將文字物件新增至其中。

由於 Amazon S3 中的儲存貯體名稱必須是全域唯一的，此範例包含第三方 Node.js 模組，可產生您可以併入儲存貯體名稱的唯一 ID 值。這個額外的模組名為 `uuid`。

## 先決條件任務
<a name="getting-started-nodejs-prerequisites"></a>

若要設定和執行此範例，您必須先完成這些任務：
+ 建立可用來開發 Node.js 模組的工作目錄，並將該目錄命名為 `awsnodesample`。請注意，目錄必須建立在可由應用程式更新的位置。例如，請勿在 Windows 環境的「C:\$1Program Files」下建立目錄。
+ 安裝 Node.js。如需詳細資訊，請參閱 [Node.js](https://nodejs.org) 網站。您可以前往 [https://nodejs.org/en/download/current/](https://nodejs.org/en/download/current/)，尋找並下載適用於各種作業系統的 Node.js 目前版本和 LTS 版本。

**Contents**
+ [使用案例](#getting-started-nodejs-scenario)
+ [先決條件任務](#getting-started-nodejs-prerequisites)
+ [步驟 1：安裝 SDK 和相依性](#getting-started-nodejs-install-sdk)
+ [步驟 2：設定您的登入資料](#getting-started-nodejs-credentials)
+ [步驟 3：建立專案的套件 JSON](#getting-started-nodejs-download)
+ [步驟 4：編寫 Node.js 程式碼](#getting-started-nodejs-js-code)
+ [步驟 5：執行範例](#getting-started-nodejs-run-sample)

## 步驟 1：安裝 SDK 和相依性
<a name="getting-started-nodejs-install-sdk"></a>

您可以使用 npm (Node.js 套件管理員） 安裝適用於 JavaScript 的 SDK 套件。 [https://www.npmjs.com](https://www.npmjs.com)

移至套件中的 `awsnodesample` 目錄，並將下列指令輸入命令列。

```
npm install aws-sdk
```

此命令會在您的專案中安裝適用於 JavaScript 的 SDK，並更新`package.json`以將 SDK 列為專案相依性。您可以在 [npm 網站](https://www.npmjs.com)搜尋「aws-sdk」，找到​有關此套件的資訊。

接下來，請將 `uuid` 模組安裝至專案，方法是在命令列中輸入下列指令；該指令會隨即安裝模組並更新 `package.json`。如需 `uuid` 的詳細資訊，請參閱 [https://www.npmjs.com/package/uuid](https://www.npmjs.com/package/uuid) 上的模組頁面。

```
npm install uuid
```

系統會在專案的 `node_modules` 子目錄中安裝這些套件及其相關聯的程式碼。

如需安裝 Node.js 套件的詳細資訊，請參閱在[本機下載和安裝套件](https://docs.npmjs.com/getting-started/installing-npm-packages-locally)，以及 [npm (Node.](https://www.npmjs.com)[js 套件管理員） 網站上的建立 Node.js 模組](https://docs.npmjs.com/getting-started/creating-node-modules)。如需下載和安裝 的詳細資訊 適用於 JavaScript 的 AWS SDK，請參閱 [安裝適用於 JavaScript 的 SDK](installing-jssdk.md)。

## 步驟 2：設定您的登入資料
<a name="getting-started-nodejs-credentials"></a>

您需要提供登入資料給 ， AWS 以便只有您的帳戶及其資源可供 SDK 存取。如需取得帳戶登入資料的詳細資訊，請參閱[使用 進行 SDK 身分驗證 AWS](getting-your-credentials.md)。

建議您建立一個共用登入資料檔案，以便保留此資訊。若要了解作法，請參閱[從共用登入資料檔案中在 Node.js 中載入登入資料](loading-node-credentials-shared.md)。登入資料檔案應該如下方範例所示。

```
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
```

您可以使用 Node.js 執行下列程式碼，判斷是否已正確設定登入資料：

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

AWS.config.getCredentials(function(err) {
  if (err) console.log(err.stack);
  // credentials not loaded
  else {
    console.log("Access key:", AWS.config.credentials.accessKeyId);
  }
});
```

同樣地，如果您在 `config` 檔案中正確設定區域，您可以將`AWS_SDK_LOAD_CONFIG`環境變數設定為任何值並使用下列程式碼來顯示該值：

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

console.log("Region: ", AWS.config.region);
```

## 步驟 3：建立專案的套件 JSON
<a name="getting-started-nodejs-download"></a>

`awsnodesample` 專案目錄建立完畢後，您便能建立和新增 `package.json` 檔案，藉此保留 Node.js 專案的中繼資料。如需在 Node.js 專案`package.json`中使用 的詳細資訊，請參閱[建立 package.json 檔案](https://docs.npmjs.com/creating-a-package-json-file)。

在專案目錄中，建立稱為 `package.json` 的新檔案。接著，將下列 JSON 新增至檔案。

```
{
  "dependencies": {},
  "name": "aws-nodejs-sample",
  "description": "A simple Node.js application illustrating usage of the SDK for JavaScript.",
  "version": "1.0.1",
  "main": "sample.js",
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "NAME",
  "license": "ISC"
}
```

儲存檔案。在您安裝所需模組時，系統會完成檔案的 `dependencies` 部分。您可以在 [GitHub 的此處](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/nodegetstarted/example_package.json)找到​說明這些相依性的 JSON 範例檔案。

## 步驟 4：編寫 Node.js 程式碼
<a name="getting-started-nodejs-js-code"></a>

建立名為 `sample.js` 的新檔案，其中包含範例程式碼。首先新增`require`函數呼叫，以包含適用於 JavaScript 的 SDK 和`uuid`模組，讓您可以使用它們。

建置唯一儲存貯體名稱，用於透過將唯一 ID 值附加至可辨識的字首來建立 Amazon S3 儲存貯體，在此情況下為 `'node-sdk-sample-'`。請呼叫 `uuid` 模組來產生唯一 ID。然後，為 `Key` 參數建立一個名稱，該參數可用來上傳物件至儲存貯體。

建立 `promise` 物件，以便呼叫 `AWS.S3` 服務物件的 `createBucket` 方法。收到成功回應後，建立將文字上傳至新建儲存貯體所需的參數。使用另一個 promise 來呼叫 `putObject` 方法，並上傳文字物件至儲存貯體。

```
// Load the SDK and UUID
var AWS = require("aws-sdk");
var uuid = require("uuid");

// Create unique bucket name
var bucketName = "node-sdk-sample-" + uuid.v4();
// Create name for uploaded object key
var keyName = "hello_world.txt";

// Create a promise on S3 service object
var bucketPromise = new AWS.S3({ apiVersion: "2006-03-01" })
  .createBucket({ Bucket: bucketName })
  .promise();

// Handle promise fulfilled/rejected states
bucketPromise
  .then(function (data) {
    // Create params for putObject call
    var objectParams = {
      Bucket: bucketName,
      Key: keyName,
      Body: "Hello World!",
    };
    // Create object upload promise
    var uploadPromise = new AWS.S3({ apiVersion: "2006-03-01" })
      .putObject(objectParams)
      .promise();
    uploadPromise.then(function (data) {
      console.log(
        "Successfully uploaded data to " + bucketName + "/" + keyName
      );
    });
  })
  .catch(function (err) {
    console.error(err, err.stack);
  });
```

您可以在 [GitHub 上](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/nodegetstarted/sample.js)找到這個範本程式碼。

## 步驟 5：執行範例
<a name="getting-started-nodejs-run-sample"></a>

輸入下列命令執行範例。

```
node sample.js
```

如果上傳成功，您就會在命令列看到確認訊息。您也能夠在 [Amazon S3 主控台](https://console.aws.amazon.com/s3/)中尋找儲存貯體，以及上傳的文字物件。