

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Relational Database Service(RDS)에서 Infrastructure Composer 사용
<a name="using-composer-services-rds"></a>

AWS 인프라 컴포저 는 Amazon Relational Database Service(RDS)와의 통합을 지원합니다. Infrastructure Composer에서 **RDS 데이터베이스(외부)** 향상된 구성 요소 카드를 사용하여 애플리케이션을 다른 CloudFormation 또는 AWS Serverless Application Model (AWS SAM) 템플릿에 정의된 Amazon RDS DB 클러스터, 인스턴스 및 프록시에 연결할 수 있습니다.

**RDS 데이터베이스(외부)** 향상된 구성 요소 카드는 다른 템플릿에 정의된 Amazon RDS 리소스를 나타냅니다. 여기에는 다음이 포함됩니다.
+ 다른 템플릿에 정의된 Amazon RDS DB 클러스터 또는 인스턴스
+ Amazon RDS DB 프록시

**RDS 데이터베이스(외부)** 향상된 구성 요소 카드는 **리소스** 팔레트에서 사용할 수 있습니다.

![Amazon RDS 데이터베이스(외부) 향상된 구성 요소 카드.](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_01.png)


이 카드를 사용하려면 Infrastructure Composer 캔버스로 끌어서 구성하고 다른 리소스에 연결합니다.

Lambda 함수를 통해 애플리케이션을 외부 Amazon RDS DB 클러스터 또는 인스턴스에 연결할 수 있습니다.

## 요구 사항
<a name="using-composer-services-rds-requirements"></a>

이 기능을 사용하려면 다음 요구 사항을 충족해야 합니다.

1. 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시는를 사용하여 사용자 암호를 AWS Secrets Manager 관리해야 합니다. 자세한 내용은 [Amazon RDS 사용 설명서의 Amazon RDS를 사용한 암호 관리 및 AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html) 섹션을 참조하세요. ** 

1. Infrastructure Composer의 애플리케이션은 새 프로젝트이거나 Infrastructure Composer에서 원래 생성되었어야 합니다.

## 절차
<a name="using-composer-services-rds-connect"></a>

### 1단계: 외부 RDS 데이터베이스 카드 구성
<a name="using-composer-services-rds-connect-step1"></a>

**리소스** 팔레트에서 **RDS 데이터베이스(외부)** 향상된 구성 요소 카드를 캔버스로 드래그합니다.

카드를 선택하고 **세부 정보를** 선택하거나 카드를 두 번 클릭하여 **리소스 속성** 패널을 불러옵니다. 카드의 리소스 속성 패널이 나타납니다.

![RDS 데이터베이스(외부) 향상된 구성 요소 카드의 리소스 속성 패널입니다.](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_03.png)


여기에서 다음을 구성할 수 있습니다.
+ **논리적 ID** - 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 고유한 이름입니다. 이 ID는 외부 Amazon RDS DB 리소스의 논리적 ID 값과 일치할 필요가 없습니다.
+ **데이터베이스 보안** 암호 - Amazon RDS DB 클러스터, 인스턴스 또는 프록시와 연결된 AWS Secrets Manager 보안 암호의 식별자입니다. 이 필드는 다음 값을 허용합니다.
  + **정적 값** - 보안 암호 ARN과 같은 데이터베이스 보안 암호의 고유 식별자입니다. 예를 들면, `arn:aws:secretsmanager:us-west-2:123456789012:secret:my-path/my-secret-name-1a2b3c`입니다. 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [AWS Secrets Manager 개념](https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html)을 참조하세요.
  + **출력 값** - Secrets Manager 보안 암호가 배포되면 AWS CloudFormation출력 값이 생성됩니다. `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)` 내장 함수를 사용하여 여기에서 출력 값을 지정할 수 있습니다. 예를 들어 `!ImportValue MySecret`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 보안 암호를 저장하고 동적 참조를 사용하여 해당 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MySecret}}`입니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [SSM 파라미터를](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-ssm) 참조하세요.
+ **데이터베이스 호스트 이름** - Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 연결하는 데 사용할 수 있는 호스트 이름입니다. 이 값은 Amazon RDS 리소스를 정의하는 외부 템플릿에 지정됩니다. 허용되는 값은 다음과 같습니다.
  + **정적 값** - 엔드포인트 주소와 같은 데이터베이스 호스트 이름의 고유 식별자입니다. 예를 들면, `mystack-mydb-1apw1j4phylrk.cg034hpkmmjt.us-east-2.rds.amazonaws.com`입니다.
  + **출력 값** - 배포된 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 출력 값입니다. `[Fn::ImportValue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html)` 내장 함수를 사용하여 출력 값을 지정할 수 있습니다. 예를 들어 `!ImportValue myStack-myDatabase-abcd1234`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 데이터베이스 호스트 이름을 저장하고 동적 참조를 사용하여 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MyDatabase}}`입니다.
+ **데이터베이스 포트** - Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 연결하는 데 사용할 수 있는 포트 번호입니다. 이 값은 Amazon RDS 리소스를 정의하는 외부 템플릿에 지정됩니다. 허용되는 값은 다음과 같습니다.
  + **정적 값** - 데이터베이스 포트입니다. 예를 들어 `3306`입니다.
  + **출력 값** - 배포된 Amazon RDS DB 클러스터, 인스턴스 또는 프록시의 출력 값입니다. 예를 들어 `!ImportValue myStack-MyRDSInstancePort`입니다.
  + **SSM 파라미터 스토어의 값 **- SSM 파라미터 스토어에 데이터베이스 호스트 이름을 저장하고 동적 참조를 사용하여 값을 지정할 수 있습니다. 예를 들어 `{{resolve:ssm:MyRDSInstancePort}}`입니다.

**참고**  
논리적 ID 값만 여기에서 구성해야 합니다. 원하는 경우 배포 시 다른 속성을 구성할 수 있습니다.

### 2단계: Lambda 함수 카드 연결
<a name="using-composer-services-rds-connect-step2"></a>

**리소스** 팔레트에서 **Lambda 함수** 향상된 구성 요소 카드를 캔버스로 드래그합니다.

**Lambda 함수** 카드의 왼쪽 포트를 **RDS 데이터베이스(외부)** 카드의 오른쪽 포트에 연결합니다.

![RDS 데이터베이스(외부) 향상된 구성 요소 카드에 연결된 Lambda 함수 카드입니다.](http://docs.aws.amazon.com/ko_kr/infrastructure-composer/latest/dg/images/aac_use_rds_02.png)


Infrastructure Composer는이 연결을 용이하게 하기 위해 템플릿을 프로비저닝합니다.

## 연결을 생성하기 위해 Infrastructure Composer가 수행하는 작업
<a name="using-composer-services-rds-ref-how"></a>

위에 나열된 절차를 완료하면 Infrastructure Composer는 Lambda 함수를 데이터베이스에 연결하는 특정 작업을 수행합니다.

### 외부 Amazon RDS DB 클러스터, 인스턴스 또는 프록시를 지정하는 경우
<a name="using-composer-services-rds-ref-how-specify"></a>

**RDS 데이터베이스(외부)** 카드를 캔버스로 드래그하면 Infrastructure Composer는 필요에 따라 템플릿의 `Metadata` 및 `Parameters` 섹션을 업데이트합니다. 다음은 예제입니다.

```
Metadata:
  AWS::Composer::ExternalResources:
    ExternalRDS:
      Type: externalRDS
      Settings:
        Port: !Ref ExternalRDSPort
        Hostname: !Ref ExternalRDSHostname
        SecretArn: !Ref ExternalRDSSecretArn
Parameters:
  ExternalRDSPort:
    Type: Number
  ExternalRDSHostname:
    Type: String
  ExternalRDSSecretArn:
    Type: String
```

[메타데이터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html)는 CloudFormation 템플릿에 대한 세부 정보를 저장하는 데 사용되는 템플릿 섹션입니다. Infrastructure Composer와 관련된 메타데이터는 `AWS::Composer::ExternalResources` 메타데이터 키 아래에 저장됩니다. 여기서 Infrastructure Composer는 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 대해 지정한 값을 저장합니다.

 CloudFormation 템플릿의 [ 파라미터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 섹션은 배포 시 템플릿 전체에 삽입할 수 있는 사용자 지정 값을 저장하는 데 사용됩니다. 제공하는 값의 유형에 따라 Infrastructure Composer는 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 대한 값을 여기에 저장하고 템플릿 전체에서 지정할 수 있습니다.

`Metadata` 및 `Parameters` 섹션의 문자열 값은 **RDS 데이터베이스(외부)** 카드에 지정한 논리적 ID 값을 사용합니다. 논리적 ID를 업데이트하면 문자열 값이 변경됩니다.

### Lambda 함수를 데이터베이스에 연결하는 경우
<a name="using-composer-services-rds-ref-how-connecting"></a>

**Lambda 함수** 카드를 **RDS 데이터베이스(외부)** 카드에 연결하면 Infrastructure Composer는 환경 변수 및 AWS Identity and Access Management (IAM) 정책을 프로비저닝합니다. 다음은 예제입니다.

```
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      ...
      Environment:
        Variables:
          EXTERNALRDS_PORT: !Ref ExternalRDSPort
          EXTERNALRDS_HOSTNAME: !Ref ExternalRDSHostname
          EXTERNALRDS_SECRETARN: !Ref ExternalRDSSecretArn
      Policies:
        - AWSSecretsManagerGetSecretValuePolicy:
            SecretArn: !Ref ExternalRDSSecretArn
```

[환경](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-environment) 변수는 런타임 시 함수에서 사용할 수 있는 변수입니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda 환경 변수 사용을](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html) 참조하세요.

[정책은](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-policies) 함수에 대한 권한을 프로비저닝합니다. 여기서 Infrastructure Composer는 함수에서 Secrets Manager로의 읽기 액세스를 허용하는 정책을 생성하여 Amazon RDS DB 클러스터, 인스턴스 또는 프록시에 액세스하기 위한 암호를 가져옵니다.