

 AWS Cloud9 不再提供給新客戶。 AWS Cloud9 的現有客戶可以繼續正常使用該服務。[進一步了解](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# 的 Node.js 教學課程 AWS Cloud9
<a name="sample-nodejs"></a>

本教學課程可讓您在 AWS Cloud9 開發環境中執行一些 Node.js 指令碼。

遵循本教學課程並建立此範例可能會向您的 AWS 帳戶收取費用。其中包括 Amazon EC2 和 Amazon S3 這類服務可能的費用。如需詳細資訊，請參閱 [Amazon EC2 定價](https://aws.amazon.com/ec2/pricing/)和 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)。

**Topics**
+ [先決條件](#sample-nodejs-prereqs)
+ [步驟 1：安裝必要工具](#sample-nodejs-install)
+ [步驟 2：新增程式碼](#sample-nodejs-code)
+ [步驟 3：執行程式碼](#sample-nodejs-run)
+ [步驟 4：在 Node.js 中安裝和設定適用於 JavaScript 的 AWS SDK](#sample-nodejs-sdk)
+ [步驟 5：新增 AWS SDK 程式碼](#sample-nodejs-sdk-code)
+ [步驟 6：執行 AWS SDK 程式碼](#sample-nodejs-sdk-run)
+ [步驟 7：清除](#sample-nodejs-clean-up)

## 先決條件
<a name="sample-nodejs-prereqs"></a>

在您使用此範例前，請務必確認您的設定符合下列要求：
+ **您必須擁有現有的 AWS Cloud9 EC2 開發環境。**本範例假設您已具備 EC2 環境，且該環境已連線到執行 Amazon Linux 或 Ubuntu Server 的 Amazon EC2 執行個體。如果您有不同類型的環境或作業系統，您可能需要依照此範例的說明來設定相關工具。如需詳細資訊，請參閱[在 中建立環境 AWS Cloud9](create-environment.md)。
+ **您已開啟現有環境的 AWS Cloud9 IDE。**當您開啟環境時，請在 Web 瀏覽器中 AWS Cloud9 開啟該環境的 IDE。如需詳細資訊，請參閱[在 中開啟環境 AWS Cloud9](open-environment.md)。

## 步驟 1：安裝必要工具
<a name="sample-nodejs-install"></a>

在此步驟中，您將安裝 Node.js，其為執行本範例的必要元件。

1. 在 IDE AWS Cloud9 的終端機工作階段中，執行 **`node --version`**命令以確認是否已安裝 Node.js。(若要啟動新終端機工作階段，請在選單列上，選擇 **Window** (視窗)、**New Terminal** (新增終端機)。如果成功，輸出會包含 Node.js 版本編號。若 Node.js 已安裝，請跳至[步驟 2：新增程式碼](#sample-nodejs-code)。

1. 執行 **`yum update`** (適用於 Amazon Linux) 或 **`apt update`** (適用於 Ubuntu Server) 命令，協助確保已安裝最新安全性更新和錯誤修正。

   針對 Amazon Linux：

   ```
   sudo yum -y update
   ```

   針對 Ubuntu Server：

   ```
   sudo apt update
   ```

1. 若要安裝 Node.js，請執行此命令來下載 Node Version Manager (nvm)。(nvm 是一種簡單的 Bash shell 指令碼，適用於安裝和管理 Node.js 版本。如需詳細資訊，請參閱 GitHub 網站的 [Node Version Manager](https://github.com/creationix/nvm/blob/master/README.md)。)

   ```
   curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
   ```

1. 若要開始使用 nvm，請先關閉終端機工作階段並再次啟動，或是援引 `~/.bashrc` 檔案，其中包含的命令將會載入 nvm。

   ```
   . ~/.bashrc
   ```

1. 執行此命令以在 Amazon Linux 2、Amazon Linux 1 和 Ubuntu 18.04 上安裝 Node.js 16。Amazon Linux 1 和 Ubuntu 18.04 執行個體僅支援 Node.js 至 v16。

   ```
   nvm install 16
   ```

   執行此命令以在 Amazon Linux 2023 和 Ubuntu 22.04 上安裝最新版本的 Node.js：

   ```
   nvm install --lts && nvm alias default lts/*
   ```
**注意**  
最新的 AL2023 AWS Cloud9 image 已安裝 Node.js 20，而最新的 Amazon Linux 2 AWS Cloud9 image 已安裝 Node.js 18。如果您想要 AWS Cloud9 手動在 Amazon Linux 2 上安裝 Node.js 18，請在 IDE AWS Cloud9 終端機中執行下列命令：  

   ```
   C9_NODE_INSTALL_DIR=~/.nvm/versions/node/v18.17.1
   C9_NODE_URL=https://d3kgj69l4ph6w4.cloudfront.net/static/node-amazon/node-v18.17.1-linux-x64.tar.gz
   mkdir -p $C9_NODE_INSTALL_DIR
   curl -fSsl $C9_NODE_URL  | tar xz --strip-components=1 -C "$C9_NODE_INSTALL_DIR"
   nvm alias default v18.17.1
   nvm use default
   echo -e 'nvm use default' >> ~/.bash_profile
   ```

## 步驟 2：新增程式碼
<a name="sample-nodejs-code"></a>

在 AWS Cloud9 IDE 中，建立具有此內容的檔案，並使用名稱 儲存檔案`hello.js`。(若要建立檔案，請在選單列上選擇 **File** (檔案)、**New File** (新增檔案)。若要儲存檔案，請選擇 **File** (檔案)、**Save** (儲存)。)

```
console.log('Hello, World!');

console.log('The sum of 2 and 3 is 5.');

var sum = parseInt(process.argv[2], 10) + parseInt(process.argv[3], 10);

console.log('The sum of ' + process.argv[2] + ' and ' +
  process.argv[3] + ' is ' + sum + '.');
```

## 步驟 3：執行程式碼
<a name="sample-nodejs-run"></a>

1. 在 AWS Cloud9 IDE 的選單列中，選擇**執行**、**執行組態**、**新執行組態**。

1. 在 **[New] - Idle** ([新增] - 閒置) 標籤上，選擇 **Runner: Auto** (執行器: 自動)，然後選擇 **Node.js**。

1. 在 **Command (命令)** 中輸入 `hello.js 5 9`。在程式碼中，`5` 代表 `process.argv[2]`，而 `9` 代表 `process.argv[3]`。(`process.argv[0]` 代表名稱執行時間 (`node`)，而 `process.argv[1]` 代表檔案名稱 (`hello.js`))。

1. 選擇 **Run** (執行) 按鈕，然後對照您的輸出。

   ```
   Hello, World!
   The sum of 2 and 3 is 5.
   The sum of 5 and 9 is 14.
   ```

![\[在 IDE 中執行程式碼之後的 Node.js AWS Cloud9 輸出\]](http://docs.aws.amazon.com/zh_tw/cloud9/latest/user-guide/images/ide-nodejs-simple.png)


## 步驟 4：在 Node.js 中安裝和設定適用於 JavaScript 的 AWS SDK
<a name="sample-nodejs-sdk"></a>

在 中執行 Node.js 指令碼時 AWS Cloud9，您可以選擇適用於 JavaScript 的 AWS SDK 第 3 版 (V3) 和適用於 JavaScript 的較舊 AWS SDK 第 2 版 (V2)。與 V2 一樣，V3 讓您能夠輕鬆地使用 Amazon Web Services 工作，但此版本已經以 TypeScript 撰寫，並且增加了數個呼聲不斷的功能，例如模組化套件。

------
#### [ AWS SDK for JavaScript (V3) ]

您可以增強此範例，以使用 Node.js 中適用於 JavaScript 的 AWS SDK 來建立 Amazon S3 儲存貯體、列出可用的儲存貯體，然後刪除您剛建立的儲存貯體。

在此步驟中，您會以 Node.js 安裝並設定 JavaScript 的 AWS SDK 中的 Amazon S3 服務用戶端模組，它提供便利的方法，讓您從 JavaScript 程式碼與 Amazon S3 AWS 服務互動。

如果您想要使用其他 AWS 服務，您需要分別安裝。如需安裝 AWS 模組的詳細資訊，請參閱《 [*AWS 開發人員指南》 (V3)* 中的 。](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/working-with-services)如需有關如何開始使用 Node.js 和適用於 JavaScript 的 AWS SDK (V3) 的資訊，請參閱*AWS 《適用於 JavaScript 的 SDK 開發人員指南 (V3)*》中的 [ Node.js 入門](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started-nodejs.html#getting-started-nodejs-setup-structure)。

 在 Node.js 中安裝適用於 JavaScript 的 AWS SDK 之後，您必須在環境中設定登入資料管理。Node.js 中適用於 JavaScript 的 AWS SDK 需要這些登入資料才能與服務 AWS 互動。

**在 Node.js 中安裝適用於 JavaScript 的 AWS SDK**

使用 npm 執行 **`install`** 命令。

```
npm install @aws-sdk/client-s3
```

如需詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK 開發人員指南*中的[安裝 JavaScript 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-up.html#installing-jssdk)。

**在環境中設定憑證管理**

每次使用 Node.js 中適用於 JavaScript 的 AWS SDK 來呼叫 AWS 服務時，您必須隨呼叫提供一組登入資料。這些憑證會判斷 Node.js 的 JavaScript 專用 AWS SDK 是否具備適當許可，能夠發出該次呼叫。若登入資料未涵蓋適當許可，呼叫即會失敗。

在此步驟中，您會在環境中存放您的憑證。若要這麼做，請遵循 [AWS 服務 從 中的環境呼叫 AWS Cloud9](credentials.md) 中的指示，然後返回本主題。

如需詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK 開發人員指南*中的[以 Node.js 設定憑證](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/setting-credentials-node.html)。

------
#### [ AWS SDK for JavaScript (V2) ]

您可以增強此範例，以使用 Node.js 中適用於 JavaScript 的 AWS SDK 來建立 Amazon S3 儲存貯體、列出可用的儲存貯體，然後刪除您剛建立的儲存貯體。

在此步驟中，您會在 Node.js 中安裝和設定適用於 JavaScript 的 AWS SDK，這可讓您透過 JavaScript 程式碼與 Amazon S3 等 AWS 服務互動。在 Node.js 中安裝適用於 JavaScript 的 AWS SDK 之後，您必須在環境中設定登入資料管理。Node.js 中適用於 JavaScript 的 AWS SDK 需要這些登入資料才能與 AWS 服務互動。

**在 Node.js 中安裝適用於 JavaScript 的 AWS SDK**

使用 npm 執行 **`install`** 命令。

```
npm install aws-sdk
```

如需詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK 開發人員指南*中的[安裝 JavaScript 的 SDK](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/installing-jssdk.html)。

**在環境中設定憑證管理**

每次使用 Node.js 中適用於 JavaScript 的 AWS SDK 來呼叫 AWS 服務時，您必須隨呼叫提供一組登入資料。這些憑證會判斷 Node.js 的 JavaScript 專用 AWS SDK 是否具備適當許可，能夠發出該次呼叫。若登入資料未涵蓋適當許可，呼叫即會失敗。

在此步驟中，您會在環境中存放您的憑證。若要這麼做，請遵循 [AWS 服務 從 中的環境呼叫 AWS Cloud9](credentials.md) 中的指示，然後返回本主題。

如需詳細資訊，請參閱 *適用於 JavaScript 的 AWS SDK 開發人員指南*中的[以 Node.js 設定憑證](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/setting-credentials-node.html)。

------

## 步驟 5：新增 AWS SDK 程式碼
<a name="sample-nodejs-sdk-code"></a>

------
#### [ AWS SDK for JavaScript (V3) ]

在此步驟中，您會再新增其他程式碼，這次是要與 Amazon S3 互動，藉此建立儲存貯體、列出可用的儲存貯體，然後刪除您剛建立的儲存貯體。您稍後將執行此程式碼。

在 AWS Cloud9 IDE 中，建立具有此內容的檔案，並使用名稱 儲存檔案`s3.js`。

```
import {
  CreateBucketCommand,
  DeleteBucketCommand,
  ListBucketsCommand,
  S3Client,
} from "@aws-sdk/client-s3";

const wait = async (milliseconds) => {
  return new Promise((resolve) => setTimeout(resolve, milliseconds));
};

export const main = async () => {
  const client = new S3Client({});
  const now = Date.now();
  const BUCKET_NAME = `easy-bucket-${now.toString()}`;

  const createBucketCommand = new CreateBucketCommand({ Bucket: BUCKET_NAME });
  const listBucketsCommand = new ListBucketsCommand({});
  const deleteBucketCommand = new DeleteBucketCommand({ Bucket: BUCKET_NAME });

  try {
    console.log(`Creating bucket ${BUCKET_NAME}.`);
    await client.send(createBucketCommand);
    console.log(`${BUCKET_NAME} created`);

    await wait(2000);

    console.log(`Here are your buckets:`);
    const { Buckets } = await client.send(listBucketsCommand);
    Buckets.forEach((bucket) => {
      console.log(` • ${bucket.Name}`);
    });

    await wait(2000);

    console.log(`Deleting bucket ${BUCKET_NAME}.`);
    await client.send(deleteBucketCommand);
    console.log(`${BUCKET_NAME} deleted`);
  } catch (err) {
    console.error(err);
  }
};

main();
```

------
#### [ AWS SDK for JavaScript (V2) ]

在此步驟中，您會再新增其他程式碼，這次是要與 Amazon S3 互動，藉此建立儲存貯體、列出可用的儲存貯體，然後刪除您剛建立的儲存貯體。您稍後將執行此程式碼。

在 AWS Cloud9 IDE 中，建立具有此內容的檔案，並使用名稱 儲存檔案`s3.js`。

```
if (process.argv.length < 4) {
  console.log(
    "Usage: node s3.js <the bucket name> <the AWS Region to use>\n" +
      "Example: node s3.js my-test-bucket us-east-2"
  );
  process.exit(1);
}

var AWS = require("aws-sdk"); // To set the AWS credentials and region.
var async = require("async"); // To call AWS operations asynchronously.

AWS.config.update({
  region: region,
});

var s3 = new AWS.S3({ apiVersion: "2006-03-01" });
var bucket_name = process.argv[2];
var region = process.argv[3];

var create_bucket_params = {
  Bucket: bucket_name,
  CreateBucketConfiguration: {
    LocationConstraint: region,
  },
};

var delete_bucket_params = { Bucket: bucket_name };

// List all of your available buckets in this AWS Region.
function listMyBuckets(callback) {
  s3.listBuckets(function (err, data) {
    if (err) {
    } else {
      console.log("My buckets now are:\n");

      for (var i = 0; i < data.Buckets.length; i++) {
        console.log(data.Buckets[i].Name);
      }
    }

    callback(err);
  });
}

// Create a bucket in this AWS Region.
function createMyBucket(callback) {
  console.log("\nCreating a bucket named " + bucket_name + "...\n");

  s3.createBucket(create_bucket_params, function (err, data) {
    if (err) {
      console.log(err.code + ": " + err.message);
    }

    callback(err);
  });
}

// Delete the bucket you just created.
function deleteMyBucket(callback) {
  console.log("\nDeleting the bucket named " + bucket_name + "...\n");

  s3.deleteBucket(delete_bucket_params, function (err, data) {
    if (err) {
      console.log(err.code + ": " + err.message);
    }

    callback(err);
  });
}

// Call the AWS operations in the following order.
async.series([
  listMyBuckets,
  createMyBucket,
  listMyBuckets,
  deleteMyBucket,
  listMyBuckets,
]);
```

------

## 步驟 6：執行 AWS SDK 程式碼
<a name="sample-nodejs-sdk-run"></a>

1. 使用 npm 執行 **`install`** 命令，讓程式碼能以非同步方式呼叫 Amazon S3 操作。

   ```
   npm install async
   ```

1. 在 AWS Cloud9 IDE 的選單列中，選擇**執行**、**執行組態**、**新執行組態**。

1. 在 **[New] - Idle** ([新增] - 閒置) 標籤上，選擇 **Runner: Auto** (執行器: 自動)，然後選擇 **Node.js**。

1. 如果您使用的是適用於 JavaScript 的 AWS SDK (V3)，適用於**命令**類型 `s3.js`。如果您使用的是適用於 Javascript (v2) 的 AWS SDK`s3.js my-test-bucket us-east-2`，對於**命令**類型 ，其中 `my-test-bucket`是您要建立和刪除的儲存貯體名稱，而 `us-east-2`是您要建立儲存貯體 AWS 的區域 ID。其他區域的 ID 請參閱《[》章節 ](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)Amazon Simple Storage Service (Amazon S3)*Amazon Web Services 一般參考*。
**注意**  
Amazon S3 儲存貯體名稱必須是唯一的 AWS，而不只是您的帳戶 AWS 。

1. 選擇 **Run** (執行) 按鈕，然後對照您的輸出。

   ```
   My buckets now are:
   
   Creating a new bucket named 'my-test-bucket'...
   
   My buckets now are:
   
   my-test-bucket
   
   Deleting the bucket named 'my-test-bucket'...
   
   My buckets now are:
   ```

## 步驟 7：清除
<a name="sample-nodejs-clean-up"></a>

為了避免在您完成使用此範例後持續向您的 AWS 帳戶收取費用，您應該刪除環境。如需說明，請參閱「[在 中刪除環境 AWS Cloud9](delete-environment.md)」。