如何從 Fargate 上的 Amazon ECS 任務連接到資料庫?

2 分的閱讀內容
0

我想從 AWS Fargate 上的 Amazon Elastic Container Service (Amazon ECS) 任務連接到資料庫。

解決方法

在完成以下步驟之前,請確認您有一個在 Fargate 上執行的 Amazon ECS 叢集和一個 Amazon Relational Database Service (Amazon RDS) 資料庫。Amazon ECS 和 Amazon RDS 可能具有通訊問題。如需詳細資訊,請參閱如何對 Amazon EC2 啟動類型的 Amazon ECS 任務與 Amazon RDS 資料庫之間的連線問題進行疑難排解?

注意: 以下解決方法使用 MySQL 作為引擎類型。

將您的任務連接到資料庫

1.    建立一個連接到您 MySQL 資料庫的 Python 指令碼。

下列範例 rds.py 指令碼會輸出與資料庫連接到 Amazon CloudWatch 的結果:

import pymysql
import os
Database_endpoint = os.environ['ENDPOINT']
Username = os.environ['USER']
Password = os.environ['PASS']
try:
  print("Connecting to " + Database_endpoint)
  db = pymysql.connect(host = Database_endpoint, user = Username, password = Password)
  print("Connection successful to " + Database_endpoint)
db.close()
except Exception as e:
  print("Connection unsuccessful due to " + str(e))

注意:ENDPOINTUSERPASS 取代為您的資料庫值。

2.    建立包含組合影像所需指令的 Docker 檔案。例如:

FROM python
RUN pip install pymysql cryptography
COPY rds.py /
CMD [ "python", "/rds.py" ]

**重要:**務必將 rds.py 指令碼和 Dockerfile 放在同一個資料夾中。

3.    建立 Amazon ECR 儲存庫,然後將 Docker 映像檔推送至該儲存庫。

4.    建立任務定義,然後將步驟 2 中的 Docker 映像檔新增為容器映像檔。例如:

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [{
    "name": "sample-app",
    "image": "YOUR-ECR-Repository-URL",
    "essential": true
  }],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-app"
}

注意: 在您的任務定義中,設定 ENDPOINTUSERPASS 環境變數的值。您可以直接將這些值作為環境變數傳遞,或從 AWS Secrets Manager 的機密中擷取這些值。如需詳細資訊,請參閱如何將機密或敏感資訊安全地傳遞至 Amazon ECS 任務中的容器?

5.    開啟 Amazon ECS 主控台,然後從導覽窗格中選擇任務定義

6.    選取您的任務定義,選擇動作,然後選擇執行任務

7.    針對啟動類型,選擇 FARGATE

8.    針對叢集,選擇任務定義的叢集。

9.    針對任務數量,輸入您要複製的任務數量。

10.    在 VPC 和安全群組區段中,針對叢集 VPC,選擇您的 Amazon Virtual Private Cloud (Amazon VPC)。

11.    針對子網路,選擇您的子網路。

12.    針對安全群組,至少選取一個安全群組。

13.    選擇執行任務

rds.py 指令碼會停止任務並傳回下列訊息:

Essential container in task exited.

確認您的任務已連線至資料庫

1.    開啟 Amazon ECS 主控台

2.    從導覽功能表中選擇叢集,然後選擇您的叢集。

3.    選擇任務標籤。

4.    針對所需的任務狀態,選擇已停止以查看已停止任務的清單。

5.    選擇您已停止的任務。

6.    在已停止任務的詳細資訊標籤上,在容器區段中,選擇展開器圖示。

7.    選擇在 CloudWatch 檢視日誌

您應該會在 Amazon CloudWatch 主控台中看到下列訊息:

Connection successful to [Your Endpoint]
AWS 官方
AWS 官方已更新 1 年前