如何在 serverless.yml 中的 lambda 上配置数据库代理?

Zha*_* Yi 5 amazon-web-services amazon-rds aws-lambda serverless-framework

我正在使用serverless框架在 AWS 上配置基础设施。我需要添加database proxy我的 lambda,但我找不到如何配置它。我已阅读文档https://www.serverless.com/framework/docs/providers/aws/guide/functions/但它没有提到与数据库代理相关的任何内容。

下面的屏幕截图是 aws 控制台中 lambda 的底部。如何通过添加代理serverless.yml

在此输入图像描述

小智 2

  1. 转到您的 RDS 服务器并单击代理
  2. 复制代理 ARN
  3. 编辑您的 serverless.yml 并
provider:
  name: aws
  iam:
    role:
      statements:
        - Effect: "Allow"
          Action:
            - "rds-db:connect"
          Resource: "arn:aws:rds-db:us-east-1:123123123:admin:blah-123abc123abc/*"
Run Code Online (Sandbox Code Playgroud)

请注意,ARN 中的“rds”已更改为“rds-db”,ARN 中的“db-proxy”已更改为“admin”(数据库的管理员用户)。sls deploy并检查 lambda。您应该在数据库代理配置部分中看到代理。

例如,我从 RDS 复制的代理 ARN 是

arn:aws:rds:us-east-1:123123123:db-proxy:blah-123abc123abc

我将其编辑为

arn:aws:rds-db:us-east-1:123123123:admin:blah-123abc123abc/*

另外,请确保您的 lambda 与 RDS 代理位于同一 Vpc中,否则它将无法连接。

我在用:

% sls --version
Framework Core: 2.50.0
Plugin: 5.4.3
SDK: 4.2.3
Components: 3.13.2
Run Code Online (Sandbox Code Playgroud)