Lambda 함수와 DB 인스턴스 자동 연결 - Amazon Relational Database Service

Lambda 함수와 DB 인스턴스 자동 연결

Amazon RDS 콘솔을 사용하여 Lambda 함수와 DB 인스턴스 간의 연결 설정을 간소화할 수 있습니다. DB 인스턴스가 VPC 내 프라이빗 서브넷에 있는 경우가 많습니다. 애플리케이션에서 프라이빗 DB 인스턴스에 액세스하는 데 Lambda 함수를 사용할 수 있습니다.

Lambda 함수와 다중 AZ DB 클러스터 간의 연결 설정에 대한 지침은 Lambda 함수와 다중 AZ DB 클러스터 자동 연결 섹션을 참조하세요.

다음 이미지는 DB 인스턴스와 Lambda 함수 간의 직접 연결을 보여줍니다.

DB 인스턴스와 Lambda 함수 자동 연결

RDS 프록시를 통해 Lambda 함수와 DB 인스턴스 간의 연결을 설정하여 데이터베이스 성능과 복원력을 개선할 수 있습니다. Lambda 함수는 RDS 프록시가 제공하는 연결 풀링의 이점을 누릴 수 있는 단기 데이터베이스 연결을 자주 만드는 경우가 많습니다. Lambda 애플리케이션 코드에서 데이터베이스 보안 인증 정보를 관리하는 대신 Lambda 함수에 대해 이미 가지고 있는 AWS Identity and Access Management(IAM) 인증을 활용할 수 있습니다. 자세한 내용은 Amazon RDS 프록시 사용 섹션을 참조하세요.

콘솔을 사용하여 기존 프록시에 연결하면 Amazon RDS가 DB 인스턴스와 Lambda 함수 간의 연결을 허용하도록 프록시 보안 그룹을 업데이트합니다.

동일한 콘솔 페이지에서 새 프록시를 만들 수도 있습니다. 콘솔에서 프록시를 만들 때 DB 인스턴스에 액세스하려면 데이터베이스 보안 인증 정보를 입력하거나 AWS Secrets Manager 보안 암호를 선택해야 합니다.

RDS 프록시를 통해 DB 인스턴스와 Lambda 함수 자동 연결

Lambda 함수와의 자동 연결 개요

다음은 Lambda 함수를 RDS DB 인스턴스와 연결하기 위한 요구 사항입니다.

  • Lambda 함수가 DB 인스턴스와 같은 VPC에 있어야 합니다.

  • 연결을 설정하는 사용자는 다음과 같은 Amazon RDS, Amazon EC2, Lambda, Secrets Manager 및 IAM 작업을 수행할 권한이 있어야 합니다.

    • Amazon RDS

      • rds:CreateDBProxies

      • rds:DescribeDBInstances

      • rds:DescribeDBProxies

      • rds:ModifyDBInstance

      • rds:ModifyDBProxy

      • rds:RegisterProxyTargets

    • Amazon EC2

      • ec2:AuthorizeSecurityGroupEgress

      • ec2:AuthorizeSecurityGroupIngress

      • ec2:CreateSecurityGroup

      • ec2:DeleteSecurityGroup

      • ec2:DescribeSecurityGroups

      • ec2:RevokeSecurityGroupEgress

      • ec2:RevokeSecurityGroupIngress

    • Lambda

      • lambda:CreateFunctions

      • lambda:ListFunctions

      • lambda:UpdateFunctionConfiguration

    • Secrets Manager

      • secretsmanager:CreateSecret

      • secretsmanager:DescribeSecret

    • IAM

      • iam:AttachPolicy

      • iam:CreateRole

      • iam:CreatePolicy

    • AWS KMS

      • kms:describeKey

참고

DB 인스턴스 및 Lambda 함수가 서로 다른 가용 영역에 있는 경우 계정에 교차 가용 영역 비용이 발생할 수 있습니다.

Lambda 함수와 RDS 데이터베이스 간의 연결을 자동으로 설정할 때 RDS는 함수 및 DB 인스턴스에 대한 VPC 보안 그룹을 구성합니다. RDS 프록시를 사용하는 경우 Amazon RDS는 프록시에 대한 VPC 보안 그룹도 구성합니다. Amazon RDS는 다음 테이블에 설명된 것과 같이 DB 인스턴스, Lambda 함수 및 프록시와 관련된 보안 그룹의 현재 구성에 따라 작동합니다.

현재 RDS 보안 그룹 구성 현재 Lambda 보안 그룹 구성 현재 프록시 보안 그룹 구성 RDS 작업

이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 하나 이상 있습니다. 또는 프록시가 이미 DB 인스턴스에 연결되어 있는 경우, RDS는 연결된 프록시의 TargetHealth가 AVAILABLE인지 확인합니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙이 하나만 있습니다.

이름이 lambda-rds-n 또는 lambda-rdsproxy-n(n은 숫자를 나타냄) 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 하나 이상 있습니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙이 하나만 있습니다.

이름이 rdsproxy-lambda-n(n은 숫자를 나타냄) 패턴과 일치하며 프록시와 연결된 보안 그룹이 하나 이상 있습니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 Lambda 함수 및 DB 인스턴스의 VPC 보안 그룹이 포함된 인바운드 및 아웃바운드 규칙이 있습니다.

Amazon RDS는 아무런 조치도 취하지 않습니다.

Lambda 함수, 프록시(선택 사항) 및 DB 인스턴스 간에 연결이 이미 자동으로 구성되었습니다. 함수, 프록시, 데이터베이스 사이에 이미 연결이 존재하기 때문에 보안 그룹은 수정되지 않습니다.

다음 중 하나의 조건이 적용됩니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다. 하지만 이러한 보안 그룹 중 어느 것도 Lambda 함수와의 연결에 사용할 수 없습니다.

Amazon RDS는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다. 수정 사항의 예로는 규칙 추가 또는 기존 규칙의 포트 변경이 있습니다.

다음 중 하나의 조건이 적용됩니다.

  • 이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 없습니다.

  • 이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 하나 이상 있습니다. 그러나 Amazon RDS는 DB 인스턴스와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

다음 중 하나의 조건이 적용됩니다.

  • 이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 없습니다.

  • 이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 하나 이상 있습니다. 그러나 Amazon RDS는 DB 인스턴스 또는 Lambda 함수와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 DB 인스턴스 및 Lambda 함수의 VPC 보안 그룹을 대상으로 하는 인바운드 및 아웃바운드 규칙이 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.
RDS action: create new security groups

이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙이 하나만 있습니다.

이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 하나 이상 있습니다.

그러나 Amazon RDS는 DB 인스턴스와의 연결에 이러한 보안 그룹을 사용할 수 없습니다. Amazon RDS는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 하나 이상 있습니다.

그러나 Amazon RDS는 DB 인스턴스 또는 Lambda 함수와의 연결에 이러한 보안 그룹을 사용할 수 없습니다. Amazon RDS는 DB 인스턴스 및 Lambda 함수의 VPC 보안 그룹을 대상으로 하는 인바운드 및 아웃바운드 규칙이 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

RDS action: create new security groups

이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙이 하나만 있습니다.

연결에 유효한 Lambda 보안 그룹이 존재하지만 Lambda 함수와 연결되어 있지 않습니다. 이 보안 그룹의 이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치합니다. 수정되지 않았습니다. DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙이 하나만 있습니다.

연결에 유효한 프록시 보안 그룹이 있지만 프록시와 연결되어 있지 않습니다. 이 보안 그룹의 이름이 rdsproxy-lambda-n 패턴과 일치합니다. 수정되지 않았습니다. DB 인스턴스와 Lambda 함수의 VPC 보안 그룹이 포함된 인바운드 및 아웃바운드 규칙이 있습니다.

RDS action: associate Lambda security group

다음 중 하나의 조건이 적용됩니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다. 그러나 Amazon RDS는 Lambda 함수 또는 프록시와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 하나 이상 있습니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙이 하나만 있습니다.

이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 하나 이상 있습니다.

해당 패턴과 일치하는 보안 그룹이 수정되지 않았습니다. 이 보안 그룹에는 DB 인스턴스 및 Lambda 함수의 VPC 보안 그룹이 포함된 인바운드 및 아웃바운드 규칙이 있습니다.

RDS action: create new security groups

다음 중 하나의 조건이 적용됩니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

  • 이름이 rds-lambda-n 패턴과 일치하며 DB 인스턴스와 연결된 보안 그룹이 없거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다. 그러나 Amazon RDS는 Lambda 함수 또는 프록시와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

다음 중 하나의 조건이 적용됩니다.

  • 이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 없습니다.

  • 이름이 lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하며 Lambda 함수와 연결된 보안 그룹이 하나 이상 있습니다. 그러나 Amazon RDS는 DB 인스턴스와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 소스로 하는 아웃바운드 규칙 하나가 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.

다음 중 하나의 조건이 적용됩니다.

  • 이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 없습니다.

  • 이름이 rdsproxy-lambda-n 패턴과 일치하며 프록시와 연결된 보안 그룹이 하나 이상 있습니다. 그러나 Amazon RDS는 DB 인스턴스 또는 Lambda 함수와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

Amazon RDS는 DB 인스턴스 및 Lambda 함수의 VPC 보안 그룹을 대상으로 하는 인바운드 및 아웃바운드 규칙이 포함되지 않은 보안 그룹을 사용할 수 없습니다. 또한 수정된 보안 그룹을 사용할 수 없습니다.
RDS action: create new security groups
RDS 작업: 새 보안 그룹 생성

Amazon RDS에서 다음 작업을 수행합니다.

  • RDS 프록시를 사용하도록 선택하는 경우, rds-lambda-n 또는 rds-rdsproxy-n 패턴과 일치하는 새 보안 그룹을 생성합니다. 이 보안 그룹에는 Lambda 함수 또는 프록시의 VPC 보안 그룹을 소스로 하는 인바운드 규칙이 하나 있습니다. 이 보안 그룹은 DB 인스턴스와 연결되어 있으며, 함수가 DB 인스턴스에 액세스하도록 허용합니다.

  • lambda-rds-n 또는 lambda-rdsproxy-n 패턴과 일치하는 새 보안 그룹을 생성합니다. 이 보안 그룹에는 DB 인스턴스 또는 프록시의 VPC 보안 그룹을 대상으로 하는 아웃바운드 규칙이 하나 있습니다. 이 보안 그룹은 Lambda 함수와 연결되어 있으며, 함수가 트래픽을 DB 인스턴스로 보내거나 프록시를 통해 보내도록 허용합니다.

  • rdsproxy-lambda-n 패턴과 일치하는 새 보안 그룹을 생성합니다. 이 보안 그룹에는 DB 인스턴스 및 Lambda 함수의 VPC 보안 그룹이 포함된 인바운드 및 아웃바운드 규칙이 있습니다.

RDS 작업: Lambda 보안 그룹 연결

Amazon RDS는 유효한 기존 Lambda 보안 그룹을 Lambda 함수와 연결합니다. 이 보안 그룹은 함수가 트래픽을 DB 인스턴스로 보내거나 프록시를 통해 보내도록 허용합니다.

Lambda 함수와 RDS 데이터베이스 자동 연결

Amazon RDS 콘솔을 사용하여 Lambda 함수를 DB 인스턴스에 자동으로 연결할 수 있습니다. 이렇게 하면 이러한 리소스 간의 연결을 설정하는 프로세스가 간소화됩니다.

RDS 프록시를 사용하여 연결에 프록시를 포함할 수도 있습니다. Lambda 함수는 RDS 프록시가 제공하는 연결 풀링의 이점을 누릴 수 있는 단기 데이터베이스 연결을 자주 만듭니다. Lambda 애플리케이션 코드에서 데이터베이스 보안 인증 정보를 관리하는 대신 Lambda 함수에 대해 이미 설정한 IAM 인증을 사용할 수도 있습니다.

Lambda 연결 설정 페이지를 사용하여 기존 DB 인스턴스를 신규 및 기존 Lambda 함수에 연결할 수 있습니다. 이 설정 프로세스는 필요한 보안 그룹을 자동으로 설정합니다.

Lambda 함수와 DB 인스턴스 간의 연결을 설정하기 전에 다음 요구 사항을 충족해야 합니다.

  • Lambda 함수와 DB 인스턴스가 동일한 VPC에 있습니다.

  • 사용자 계정에 대한 올바른 권한이 있습니다. 요구 사항에 대한 자세한 내용은 Lambda 함수와의 자동 연결 개요 섹션을 참조하세요.

연결을 구성한 후에 보안 그룹을 변경할 경우 변경 사항이 Lambda 함수와 DB 인스턴스 간의 연결에 영향을 미칠 수 있습니다.

참고

AWS Management Console에서만 DB 인스턴스와 Lambda 함수의 연결을 자동으로 설정할 수 있습니다. Lambda 함수를 연결하려면 DB 인스턴스가 사용 가능 상태여야 합니다.

Lambda 함수와 DB 인스턴스를 자동으로 연결하는 방법
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택한 다음, Lambda 함수에 연결할 DB 인스턴스를 선택합니다.

  3. 작업에서 Lambda 연결 설정을 선택합니다.

  4. Lambda 연결 설정 페이지의 Lambda 함수 선택에서 다음 중 하나를 수행합니다.

    • DB 인스턴스와 동일한 VPC에 기존 Lambda 함수가 있는 경우 기존 함수 선택을 선택하고 해당 함수를 선택합니다.

    • 동일한 VPC에 Lambda 함수가 없는 경우 새 함수 생성을 선택한 다음 함수 이름을 입력합니다. 기본 런타임은 Nodejs.18로 설정되어 있습니다. 연결 설정을 완료한 후 Lambda 콘솔에서 새 Lambda 함수의 설정을 수정할 수 있습니다.

  5. (선택 사항) RDS 프록시에서 RDS 프록시를 사용하여 연결을 선택하고 다음 중 하나를 수행합니다.

    • 사용하려는 기존 프록시가 있는 경우 기존 프록시 선택을 선택하고 해당 프록시를 선택합니다.

    • 프록시가 없고 Amazon RDS에서 자동으로 프록시를 생성하도록 하려면 새 프록시 생성을 선택합니다. 그런 다음, 데이터베이스 보안 인증 정보에서 다음 중 하나를 수행합니다.

      1. 데이터베이스 사용자 이름 및 암호를 선택한 다음, DB 인스턴스의 사용자 이름과 암호를 입력합니다.

      2. Secrets Manager 보안 암호를 선택합니다. 그런 다음, 보안 암호 선택에서 AWS Secrets Manager 보안 암호를 선택합니다. Secrets Manager 보안 암호가 없다면 새 Secrets Manager 보안 암호 생성을 선택하여 새 보안 암호를 생성합니다. 보안 암호를 생성한 후 보안 암호 선택에서 새 보안 암호를 선택합니다.

      새 프록시를 생성한 후 기존 프록시 선택을 선택하고 해당 프록시를 선택합니다. 프록시를 연결에 사용하려면 다소 시간이 걸릴 수 있습니다.

  6. (선택 사항) 연결 요약을 확장하고 리소스에서 강조 표시된 업데이트를 확인합니다.

  7. Set up(설정)을 선택합니다.

연결된 컴퓨팅 리소스 보기

AWS Management Console을 사용하여 DB 인스턴스에 연결된 Lambda 함수를 볼 수 있습니다. 표시되는 리소스에는 Amazon RDS가 자동으로 설정한 컴퓨팅 리소스 연결이 포함됩니다.

나열된 컴퓨팅 리소스에는 DB 인스턴스에 수동으로 연결된 컴퓨팅 리소스가 포함되지 않습니다. 예를 들어 데이터베이스와 연결된 VPC 보안 그룹에 규칙을 추가하여 컴퓨팅 리소스가 DB 인스턴스에 수동으로 액세스하도록 허용할 수 있습니다.

콘솔에 Lambda 함수를 나열하려면 다음 조건을 적용해야 합니다.

  • 컴퓨팅 리소스와 연결된 보안 그룹의 이름이 lambda-rds-n 또는 lambda-rdsproxy-n(n은 숫자를 나타냄) 패턴과 일치합니다.

  • 컴퓨팅 리소스와 연결된 보안 그룹에 포트 범위가 DB 인스턴스 또는 프록시의 포트로 설정된 아웃바운드 규칙이 있습니다. 아웃바운드 규칙의 대상이 DB 인스턴스 또는 관련 프록시와 연결된 보안 그룹으로 설정되어 있어야 합니다.

  • 구성에 프록시가 포함된 경우 데이터베이스와 연결된 프록시에 연결된 보안 그룹의 이름이 rdsproxy-lambda-n(n은 숫자를 나타냄) 패턴과 일치합니다.

  • 함수와 연결된 보안 그룹에 포트가 DB 인스턴스 또는 관련 프록시가 사용하는 포트로 설정된 아웃바운드 규칙이 있습니다. 대상이 DB 인스턴스 또는 관련 프록시와 연결된 보안 그룹으로 설정되어 있어야 합니다.

DB 인스턴스에 자동으로 연결된 컴퓨팅 리소스를 보는 방법
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택하고 DB 인스턴스를 선택합니다.

  3. 연결 및 보안 탭의 연결된 컴퓨팅 리소스에서 컴퓨팅 리소스를 확인합니다.