建置無伺服器應用程式

利用 Amazon Aurora Serverless 實現

Amazon Aurora 是 MySQL 和 PostgreSQL 相容的關聯式資料庫,結合了傳統企業資料庫的效能和可用性,以及開放原始碼資料庫簡單與經濟實惠的優勢。Amazon Aurora Serverless 是適用於 Amazon Aurora (MySQL 相容版本以及 PostgreSQL 相容版本) 的隨需自動調整規模組態,其資料庫將依據您的應用程式需求自動啟動、關閉以及擴展或縮減容量。它可讓您在雲端執行資料庫,無須管理任何資料庫執行個體。它是適用於不頻繁、間歇或不可預測工作負載的簡單、經濟高效的選擇。

在本教學中,您將學習如何使用 Amazon Aurora Serverless (PostgreSQL 相容版本)、Data API for Aurora Serverless、Amazon Lambda 和 Amazon Simple Notification Service (SNS) 建立無伺服器訊息處理應用程式。本教學將提供建立 Aurora 無伺服器資料庫的逐步說明,使用 Data API 將其與 Amazon Lambda 函數連接,Amazon Lambda 函數可取用來自 Amazon SNS 的訊息,並在 Aurora Serverless 資料庫中儲存訊息。

關於本教學
時間 10-20 分鐘      
費用 低於 1 USD
使用案例 資料庫
產品 Amazon Aurora、Amazon SNS、AWS Lambda
等級 100
上次更新日期 2019 年 9 月 24 日

步驟 1:建立 Aurora Serverless 資料庫

1.1 – 開啟瀏覽器並瀏覽至 Amazon RDS 主控台。如果您已有 AWS 帳戶,請登入主控台。否則,請建立新的 AWS 帳戶來開始使用。

已經有帳戶了嗎? 登入您的帳戶

1.2 – 在右上角選擇您希望啟動 Aurora 資料庫叢集的區域。

1.3 – 在「Amazon Aurora」視窗中按一下「建立資料庫」。

在繼續之前,請先切換至新的資料庫建立流程:

引擎選項

1.4 – 對於資料庫引擎,選取「Amazon Aurora」。

1.5 – 對於「版本」,選取「與 MySQL 相容的 Amazon Aurora」。

資料庫功能

1.6 – 選取「無伺服器」。

設定

1.7 – 選擇 Aurora 資料庫叢集的識別碼,例如「database-1」。

登入資料設定

1.8 – 為您的資料庫選取「使用者名稱」和「密碼」。

容量設定

1.9 – 「Aurora 容量單位上限」請選取「2」。

連線

1.10 – 選取您要建立資料庫的 VPC。

請注意,建立之後,資料庫即無法遷移至不同的 VPC。

1.11 – 按一下「額外連線組態」。

1.12 – 選取「子網路群組」的預設值。

1.13 – 對於「VPC 安全群組」,選取「新建」。如果您剛好有安全群組允許連接埠 3306 的內送 TCP 連線,則可以選擇此安全群組。

1.14 – 在「新 VPC 安全群組名稱」中,鍵入「aurora-tutorial」。

1.15 – 啟用「資料 API」。

額外組態

1.16 – 對於「刪除保護」,取消核取「啟用刪除保護」。

最佳實務是啟用「刪除保護」,但如果想要在本教學結束時刪除資料庫,您可以取消核取該選項。

檢查並建立

在快速檢閱表單中的所有欄位後,您可以繼續。

1.17 – 按一下「建立資料庫」。

建立執行個體時,您會看到說明如何取得登入資料的橫幅。這是儲存登入資料的好機會,因為這是唯一一次檢視密碼的機會。

擷取叢集 ARN

1.18 – 按一下資料庫名稱。

1.19 – 在「組態」標籤中,複製叢集 ARN 並妥善保管以便隨時使用。您稍後需要用到。

連接至資料庫

1.20 – 開啟左側面板,然後按一下「查詢編輯器」。

1.21 – 選取「database-1」,輸入「postgres」作為資料庫使用者名稱,然後輸入您之前建立的資料庫密碼,接著在資料庫名稱欄位中鍵入「postgres」。

1.22 – 按一下「連線至資料庫」。

1.23 – 您現在可以按一下「執行」,以執行範例查詢。

1.24 – 透過執行以下查詢來建立資料庫:

CREATE DATABASE tutorial;

1.25 – 按一下「變更資料庫」。

1.26 – 變更資料庫至您剛才建立的資料庫。

1.27 – 透過查詢建立資料表:

CREATE TABLE sample_table(received_at TIMESTAMP, message VARCHAR(255));

利用「查詢編輯器」連接至資料庫後,Lambda 函數中會建立您稍後會使用到的秘密。請保持此標籤開啟,因為在教學結束前,您會需要執行查詢。

複製秘密 ARN

開啟新標籤,然後前往 AWS Secrets Manager。接著按照以下步驟來擷取秘密 ARN。 

1.28 – 尋找含有「database-1 的 RDS 數據庫 postgres 登入資料」的機密。

1.29 – 在按一下「秘密名稱」之後,複製秘密 ARN 並妥善保管以便隨時使用。

步驟 2:建立 AWS Cloud9 環境

開啟新標籤,然後前往 AWS Cloud9 主控台。接著按照以下步驟操作來建立新的環境。 

2.1 – 按一下「建立環境」:

2.2 – 為新環境輸入名稱,然後按一下「下一步」。

2.3 – 向下捲動,然後按一下「下一步」。

2.4 – 按一下「建立環境」。

2.5 – 環境準備就緒後,按一下「建立 Lambda 函數」。

2.6 – 函數的名稱請輸入「auroratest」。然後按一下「下一步」。

2.7 – 選取「empty-python」藍圖,然後按一下「下一步」。

2.8 – 在隨後的畫面中,按一下「下一步」、「下一步」,接著按一下「完成」。

現在環境已經準備就緒,接著您會看見 Lambda 函數的藍圖。

在開始編寫程式碼前,您需要設定步驟 3 描述的許可。讓此環境保持開啟,然後使用其他標籤來完成接下來的步驟。

步驟 3:設定許可

開啟新標籤,然後前往 AWS IAM 主控台。接著按照以下步驟來向 Lambda 函數指派許可。

3.1 – 按一下「角色」,然後搜尋開頭為「cloud9-」的角色。

3.2 – 按一下角色名稱,然後按一下「連接政策」。

3.3 – 選取「AmazonRDSDataFullAccess」政策,然後按一下「連接政策」。

您會看見畫面出現淺綠色的橫幅,說明政策已成功連接。

步驟 4:建立 AWS Lambda 函數

返回至您在步驟 2 建立的 Cloud9 環境,接著按照以下指示操作。

4.1 – 在主控台執行此命令,以前往 auroratest 目錄:

$ cd auroratest

4.2 – 在主控台執行此命令,以安裝 boto3 相依性:

$ pip install boto3 -t boto3

4.3 – 在 lambda_function 檔案中刪除程式碼,然後在其位置上複製此範本程式碼

4.4 – 使用在之前步驟中獲得的叢集 ARN 和秘密 ARN 值取代 cluster_arn 和 secret_arn 值。

4.5 – 按一下「檔案」>「儲存」,接著在右側面板中選取 Lambda 函數。

4.6 – 按一下向上箭頭來部署 Lambda 函數。

步驟 5:建立 Amazon SNS 主題

Lambda 函數會處理來自 Amazon Simple Notification Service (SNS) 的訊息,其為微型服務和無伺服器應用程式提供發佈/訂閱簡訊。

在新標籤中,瀏覽 SNS 儀表板,然後按照以下指示操作:

5.1 – 在「主題名稱」中,輸入「aurora-lambda-sns-test」,然後按一下「下一步」。

5.2 – 保留所有預設值,然後按一下「建立主題」。

您會看見綠色橫幅,代表主題已成功建立。

5.3 – 複製 SNS ARN,並妥善保管以便隨時使用。

請讓此標籤保持開啟,因為將 Lambda 函數設定為從您建立的主題讀取,您將需要使用此標籤來發佈訊息。

步驟 6:訂閱 AWS Lambda 函數至 Amazon SNS 主題

前往 AWS Lambda 管理主控台,然後按照以下指示操作:

6.1 – 按一下您在步驟 4 建立的 Lambda 函數名稱。

6.2 – 按一下「新增觸發」。

6.3 – 鍵入「SNS」,然後從下拉式功能表中選取「SNS」服務。

6.4 – 在「SNS 主題」欄位中輸入 SNS ARN。

6.5 – 啟用觸發,然後按一下「新增」。

步驟 7:發佈測試訊息

返回至「SNS 儀表板」,然後遵循以下指示:

7.1 – 按一下「發佈訊息」。

7.2 – 在「主旨」欄位中輸入任意值。

7.3 – 在「內文」欄位中輸入任意值。

7.4 – 向下捲動,然後按一下「發佈訊息」。

訊息發佈後,Lambda 函數將立即取用並處理訊息。在下一個部份,您將驗證資料如何寫入至 Aurora 資料庫。

驗證資料庫變更

7.5 – 前往保持開啟的查詢編輯器標籤頁面。如果您關閉了該頁面,請前往 RDS 儀表板,並連接至 1.20 所述的查詢編輯器。

7.6 – 連線至「tutorial」資料庫。

7.7 – 選取 sample_table 中的所有紀錄:

SELECT * FROM sample_table;

7.8 – 按一下「執行」,然後向下捲動來查看結果。

現在應該一切正常運行。您可以透過變更由 SNS 傳送的訊息來進行試驗,或者也可以依照您想要的方式來更改 lambda_handler 函數。

步驟 8:清除

為了完成本教學,您還將學習如何在不需要 Aurora 資料庫叢集時刪除該叢集,以及刪除 Lambda 函數、Cloud9 環境、連線至資料庫的秘密和任何其他剩餘內容。

刪除 Lambda 函數

8.1 – 前往 AWS Lambda 管理主控台,然後選取 Lambda 函數。

8.2 – 按一下「動作」>「刪除」。

刪除 SNS 主題

8.3 – 瀏覽 SNS 儀表板,然後在左側面板中按一下「主題」。

8.4 – 選取您在步驟 5 建立的主題,然後按一下「刪除」。

8.5 – 系統會要求您進行確認。鍵入「delete me」以確認,然後按一下「刪除」。

刪除 Cloud9 環境

8.6 – 前往 AWS Cloud9 主控台,然後選取您為本教學建立的環境。

8.7 – 按一下「刪除」。

8.8 – 在系統要求進行確認時,鍵入「Delete」,然後按一下「刪除」按鈕。

刪除 Aurora Serverless 資料庫

8.9 – 前往 Amazon RDS 主控台,然後選取您為本教學建立的資料庫。

8.10 – 按一下「動作」>「刪除」。

系統會向您詢問是否要建立最終快照。此選項通常很實用,但在本教學中則無需建立。

8.11 – 在系統要求進行確認時,對是否建立最終快照的問題選取「否」。接著,核取「我確認...」,然後按一下「刪除資料庫叢集」。

刪除秘密

8.12 – 前往 AWS Secrets Manager,尋找含有「database-1 的 RDS 資料庫管理員登入資料」的秘密,然後按一下秘密的名稱。

8.13 – 按一下「動作」>「刪除秘密」。

8.14 – 無法立即刪除秘密。刪除動作的最短等待時間為 7 天。選取 7 天,然後按一下「排定刪除」。

刪除 IAM 角色

8.15 – 前往 AWS IAM 主控台。按一下「角色」,然後搜尋開頭為「cloud9-」的角色。

8.16 – 選取角色,然後按一下「刪除角色」。

8.17 – 在系統要求進行確認時,請按一下「是,刪除」。

恭喜

您已建立 Aurora Serverless 資料庫,並透過 Aurora 的資料 API 將其與 AWS Lambda 函數連接。您已將 Amazon Simple Notification Service (SNS) 設置為 Lambda 函數的觸發程式,而且透過 SNS 發送的訊息也已經過處理並儲存在 Aurora Serverless 資料庫之中。

本教學對您有幫助嗎?

感謝您
請告訴我們您喜歡的部分。
抱歉,讓您失望
是有內容過時、令人困擾,或不準確嗎? 請提供意見回饋,協助我們改進此教學課程。

進一步了解 Amazon Aurora 功能

透過 Amazon Aurora 使用者指南進一步了解 Amazon Aurora 的功能。

Amazon Aurora 的最佳實務

了解使用或將資料移轉到 Amazon Aurora 資料庫叢集的一般最佳實務和選項。

進一步了解 Serverless

若要進一步了解有關無伺服器應用程式的資訊,請參閱 AWS Lambda 文件,以及 Aurora 使用者指南