如何配置我的 Lambda 函数以使用 Amazon RDS 代理来连接到 Amazon RDS 数据库?

2 分钟阅读
0

我想将我的 AWS Lambda 函数配置为使用 Amazon Relational Database Service (Amazon RDS) 代理来连接到 Amazon RDS 数据库。

解决方法

先决条件:Amazon RDS 代理必须与 Amazon RDS 数据库位于同一个 Amazon Virtual Private Cloud (Amazon VPC) VPC 中。

要将 Lambda 函数配置为使用 Amazon RDS 代理来连接到 Amazon RDS 数据库,请完成以下步骤。

在 Secrets Manager 中创建数据库凭证

完成以下步骤:

  1. 打开 AWS Secrets Manager 控制台
  2. 选择 Store a new secret(存储新密钥)。
  3. 对于 Secret type(密钥类型),选择 Credentials for RDS database(RDS 数据库凭证)。
  4. 输入您的 RDS 数据库实例的用户名密码
  5. 对于 Encryption key(加密密钥),选择 Secrets Manager 用于加密秘密值的 AWS Key Management Service (AWS KMS) 密钥。
  6. 对于 Database(数据库),选择您的数据库,然后选择 Next(下一步)。
  7. 对于 Secret name(秘密名称),输入一个名称,然后选择 Next(下一步)。
  8. 选择 Next(下一步),然后选择 Store(存储)。
  9. Secrets(秘密)中,选择 Secrets Manager 秘密。
  10. Secret ARN(秘密 ARN)中,记下秘密 ARN。

有关更多信息,请参阅创建 AWS Secrets Manager 秘密

为 Amazon RDS 代理创建 IAM 策略和角色

创建具有使用秘密的权限的 AWS Identity and Access Management (IAM) 角色。示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetResourcePolicy",
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret",
        "secretsmanager:ListSecretVersionIds"
      ],
      "Resource": [
        "[Secret_ARN]"
      ]
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetRandomPassword",
        "secretsmanager:ListSecrets"
      ],
      "Resource": "*"
    }
  ]
}

**注意:**将 Secret_ARN 替换为您的秘密 ARN。

然后,创建允许 Amazon RDS 代入角色的信任策略。示例:

{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "",
   "Effect": "Allow",
   "Principal": {
    "Service": "rds.amazonaws.com"
   },
   "Action": "sts:AssumeRole"
  }
 ]
}

创建代理并将其连接到 Lambda 函数

首先,创建 RDS 代理。然后,完成以下步骤,将您的函数配置为连接到代理端点而不是数据库端点:

  1. 打开 Lambda 控制台
  2. 选择 Functions(函数),然后选择您的 Lambda 函数。
  3. 选择 Configuration(配置),然后选择 RDS databases(RDS 数据库)。
  4. 选择 Connect to RDS database(连接到 RDS 数据库)。
  5. 选择您的 RDS 数据库。或者,选择 Create a new database(创建新数据库),然后配置以下设置:
    对于 Engine type(引擎类型),选择引擎类型。
    对于 DB instance identifier(数据库实例标识符),输入数据库实例的名称。
    对于 Master username(主用户名),输入主用户登录 ID。
    对于 VPC,使用默认设置。默认情况下,Lambda 在与该函数相同的 VPC 中设置 RDS 数据库。
  6. 选择数据库连接,然后选择 Add proxy(添加代理)。
  7. 对于 Existing proxies(现有代理),选择您的 RDS 代理。
  8. 选择 Add(添加)。

代理连接需要几分钟才能完成。有关如何配置 RDS 数据库实例以用于 Lambda 的更多信息,请参阅配置您的函数以使用 RDS 资源

(可选)验证您的 Amazon RDS 代理是否使用 IAM 身份验证

如果您使用 Lambda 执行角色向 Amazon RDS 代理进行身份验证,请完成以下步骤:

  1. 打开 Amazon RDS 控制台
  2. 在导航窗格中,选择 Proxies(代理),然后选择您的代理。
  3. 选择 Actions(操作),然后选择 Modify(修改)。
  4. Authentication(身份验证)下,验证 IAM 身份验证是否设置为Required(必需)。

如果您遇到连接问题,请参阅为什么我无法使用 Amazon RDS 代理连接到我的 Amazon RDS 数据库或 Amazon Aurora 数据库实例?

有关更多信息,请参阅在 AWS Lambda 中使用 Amazon RDS 代理

相关信息

如何对尝试访问 Amazon RDS 数据库实例时遇到的 Lambda 连接超时错误进行故障排除?

如何配置 Lambda 函数以连接到 RDS 实例?

如何解决将 Amazon RDS 代理附加到 Lambda 函数时出现的“Lambda 无法更新函数的执行角色”错误?

AWS 官方
AWS 官方已更新 2 个月前