使用 SDK forRDS(v3) 的 Amazon JavaScript 範例 - AWS SDK 程式碼範例

文件 AWS SDK AWS 範例 SDK 儲存庫中有更多可用的 GitHub 範例。

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

使用 SDK forRDS(v3) 的 Amazon JavaScript 範例

下列程式碼範例示範如何搭配 Amazon RDS 使用 AWS SDK for JavaScript (v3) 來執行動作和實作常見案例。

案例是程式碼範例,示範如何透過呼叫服務內的多個函數或與其他函數結合,來完成特定任務 AWS 服務。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

案例

下列程式碼範例示範如何建立 Web 應用程式,追蹤 Amazon Aurora Serverless 資料庫中的工作項目,並使用 Amazon Simple Email Service (Amazon SES) 傳送報告。

SDK for JavaScript (v3)

示範如何使用 AWS SDK for JavaScript (v3) 建立 Web 應用程式,透過使用 Amazon Simple Email Service (Amazon SES) 來追蹤 Amazon Aurora 資料庫中的工作項目和電子郵件報告。這個範例使用以 React.js 建置的前端與 Express Node.js 後端互動。

  • 將 React.js Web 應用程式與 整合 AWS 服務。

  • 列出、新增和更新 Aurora 資料表中的項目。

  • 使用 Amazon SES 傳送已篩選工作項目的電子郵件報告。

  • 使用隨附的 AWS CloudFormation 指令碼部署和管理範例資源。

如需有關如何設定和執行的完整原始程式碼和指示,請參閱 GitHub 上的完整範例。

此範例中使用的服務
  • Aurora

  • Amazon RDS

  • Amazon RDS Data Service

  • Amazon SES

無伺服器範例

下列程式碼範例示範如何實作連線至 RDS 資料庫的 Lambda 函數。函數會提出簡單的資料庫請求並傳回結果。

SDK for JavaScript (v3)
注意

還有更多 on GitHub。尋找完整範例,並了解如何在無伺服器範例儲存庫中設定和執行。

使用RDS 連線至 Lambda 函數中的 Amazon JavaScript 資料庫。

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 /* Node.js code here. */ // ES6+ example import { Signer } from "@aws-sdk/rds-signer"; import mysql from 'mysql2/promise'; async function createAuthToken() { // Define connection authentication parameters const dbinfo = { hostname: process.env.ProxyHostName, port: process.env.Port, username: process.env.DBUserName, region: process.env.AWS_REGION, } // Create RDS Signer object const signer = new Signer(dbinfo); // Request authorization token from RDS, specifying the username const token = await signer.getAuthToken(); return token; } async function dbOps() { // Obtain auth token const token = await createAuthToken(); // Define connection configuration let connectionConfig = { host: process.env.ProxyHostName, user: process.env.DBUserName, password: token, database: process.env.DBName, ssl: 'Amazon RDS' } // Create the connection to the DB const conn = await mysql.createConnection(connectionConfig); // Obtain the result of the query const [res,] = await conn.execute('select ?+? as sum', [3, 2]); return res; } export const handler = async (event) => { // Execute database flow const result = await dbOps(); // Return result return { statusCode: 200, body: JSON.stringify("The selected sum is: " + result[0].sum) } };

使用RDS 連線至 Lambda 函數中的 Amazon TypeScript 資料庫。

import { Signer } from "@aws-sdk/rds-signer"; import mysql from 'mysql2/promise'; // RDS settings // Using '!' (non-null assertion operator) to tell the TypeScript compiler that the DB settings are not null or undefined, const proxy_host_name = process.env.PROXY_HOST_NAME! const port = parseInt(process.env.PORT!) const db_name = process.env.DB_NAME! const db_user_name = process.env.DB_USER_NAME! const aws_region = process.env.AWS_REGION! async function createAuthToken(): Promise<string> { // Create RDS Signer object const signer = new Signer({ hostname: proxy_host_name, port: port, region: aws_region, username: db_user_name }); // Request authorization token from RDS, specifying the username const token = await signer.getAuthToken(); return token; } async function dbOps(): Promise<mysql.QueryResult | undefined> { try { // Obtain auth token const token = await createAuthToken(); const conn = await mysql.createConnection({ host: proxy_host_name, user: db_user_name, password: token, database: db_name, ssl: 'Amazon RDS' // Ensure you have the CA bundle for SSL connection }); const [rows, fields] = await conn.execute('SELECT ? + ? AS sum', [3, 2]); console.log('result:', rows); return rows; } catch (err) { console.log(err); } } export const lambdaHandler = async (event: any): Promise<{ statusCode: number; body: string }> => { // Execute database flow const result = await dbOps(); // Return error is result is undefined if (result == undefined) return { statusCode: 500, body: JSON.stringify(`Error with connection to DB host`) } // Return result return { statusCode: 200, body: JSON.stringify(`The selected sum is: ${result[0].sum}`) }; };