Lambda 함수와 다중 AZ DB 클러스터 자동 연결 - Amazon Relational Database Service

Lambda 함수와 다중 AZ DB 클러스터 자동 연결

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

다음 이미지는 다중 AZ DB 클러스터와 Lambda 함수 간의 직접 연결을 보여줍니다.

다중 AZ DB 클러스터와 Lambda 함수를 자동으로 연결합니다.

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

콘솔을 사용하여 연결용 프록시를 자동으로 만들 수 있습니다. 기존 프록시를 선택할 수도 있습니다. 콘솔은 데이터베이스 및 Lambda 함수와의 연결을 허용하도록 프록시 보안 그룹을 업데이트합니다. 데이터베이스 보안 인증 정보를 입력하거나 데이터베이스에 액세스하는 데 필요한 Secrets Manager 보안 암호를 선택할 수 있습니다.

RDS 프록시를 통해 다중 AZ DB 클러스터와 Lambda 함수를 자동으로 연결합니다.

Lambda 함수와의 자동 연결 개요

Lambda 함수와 다중 AZ DB 클러스터 간의 연결을 자동으로 설정할 때 Amazon RDS는 Lambda 함수 및 DB 클러스터에 대한 VPC 보안 그룹을 구성합니다.

다음은 Lambda 함수를 다중 AZ DB 클러스터와 연결하기 위한 요구 사항입니다.

  • Lambda 함수가 다중 AZ DB 클러스터와 같은 VPC에 있어야 합니다.

    Lambda 함수가 동일한 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

      • sercetsmanager:CreateSecret

      • secretsmanager:DescribeSecret

    • IAM

      • iam:AttachPolicy

      • iam:CreateRole

      • iam:CreatePolicy

    • AWS KMS

      • kms:describeKey

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

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

모든 리소스의 보안 그룹이 올바른 명명 패턴을 따르고 올바른 인바운드 및 아웃바운드 규칙을 적용하기 때문에 Amazon RDS가 아무런 작업을 수행하지 않습니다.

이름이 rds-lambda-n 패턴(n은 숫자를 나타냄)과 일치하며 다중 AZ DB 클러스터와 연결된 보안 그룹이 하나 이상 있거나 연결된 프록시의 TargetHealth가 AVAILABLE입니다.

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

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

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

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

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

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

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

  • 이름이 rds-lambda-n 패턴과 일치하며 다중 AZ 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는 다중 AZ DB 클러스터와의 연결에 이러한 보안 그룹을 사용할 수 없습니다.

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

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

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

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

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

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

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

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

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

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

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

RDS action: create new security groups

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

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

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

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

RDS action: associate Lambda security group

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

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

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

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

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

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

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

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

RDS action: create new security groups

rds-rdsproxy-n 패턴(n은 숫자를 나타냄)과 일치하는 이름의 다중 AZ DB 클러스터와 연결된 보안 그룹이 하나 이상 있습니다.

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

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

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

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

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

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

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

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

RDS 작업: 새 보안 그룹 생성

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

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

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

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

RDS 작업: Lambda 보안 그룹 연결

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

Lambda 함수와 다중 AZ DB 클러스터 자동 연결

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

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

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

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

  • Lambda 함수와 다중 AZ DB 클러스터가 동일한 VPC에 있습니다.

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

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

참고

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

연결된 컴퓨팅 리소스 보기

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

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

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

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

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

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

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

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

  2. 탐색 창에서 데이터베이스를 선택한 후 다중 AZ DB 클러스터를 선택합니다.

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