跳至内容

如何通过 Fargate 上的 Amazon ECS 任务连接到数据库?

2 分钟阅读
0

我想通过 AWS Fargate 上的 Amazon Elastic Container Service(Amazon ECS)任务连接到数据库。

解决方法

先决条件:

**注意:**以下示例使用 MySQL 作为引擎类型。有关引擎类型的更多信息,请参阅 Amazon RDS 入门

将任务连接到数据库

完成以下步骤:

  1. 创建一个连接到 MySQL 数据库的 Python 脚本。以下示例 rds.py 脚本将与数据库连接的结果发送到 Amazon CloudWatch:
    import pymysqlimport 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. 要组装映像,请创建一个包含所需命令的 Dockerfile。例如:
    FROM pythonRUN pip install pymysql cryptography
    COPY rds.py /
    CMD [ "python", "/rds.py" ]
    **重要事项:**请务必将 rds.py 脚本和 Dockerfile 放在同一个文件夹中。
  3. 创建 Amazon ECR 存储库,然后将 Docker 映像推送到该存储库。
  4. 创建任务定义,然后将 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. 选择任务定义,选择操作,然后选择运行任务
  8. 启动类型处,选择 FARGATE
  9. 集群处,选择任务定义的集群。
  10. 任务数量处,输入要复制的任务数量。
  11. VPC 和安全组部分中的集群 VPC 处,选择相应的 Amazon Virtual Private Cloud(Amazon VPC)。
  12. 子网处,选择子网。
  13. 安全组处,至少选择一个安全组。
  14. 选择运行任务

rds.py 脚本会停止任务并返回以下消息:

“Essential container in task exited.”

确认任务已连接到数据库

完成以下步骤:

  1. 打开 Amazon ECS 控制台
  2. 在导航面板中,选择集群,然后选择集群。
  3. 选择任务选项卡。
  4. 预期任务状态处,选择已停止以查看已停止任务的列表。
  5. 选择已停止的任务。
  6. 在已停止任务的详细信息选项卡上,找到容器部分,然后展开该部分。
  7. 选择查看 CloudWatch 中的日志

您将在 CloudWatch 控制台中看到以下消息:

“成功连接到 [您的端点]”

AWS 官方已更新 1 年前