기존 RDS 인스턴스를 Elastic Beanstalk 환경에 연결하는 방법은 무엇입니까?


22

Elastic Beanstalk 환경을 생성하기 전에 RDS 인스턴스를 생성했습니다. 두 사람은 아무런 문제없이 함께 일하고 있지만 서로 연결하고 RDS_*환경 변수 를 통해 RDS 매개 변수에 액세스 할 수 있기를 바랍니다 .

Elastic Beanstalk 구성 페이지에는 다음이 표시됩니다.

데이터베이스가 없습니다.  새 RDS 데이터베이스를 만들거나 기존 데이터베이스를 사용할 수 있습니다.

첫 번째 링크는 RDS 인스턴스를 현재 위치에 작성하고 현재 환경에 링크하지만 두 번째 링크는 이 문서 페이지로 리디렉션됩니다 . 불행히도 새 RDS 인스턴스를 만드는 방법 만 설명하고 기존 인스턴스를 연결하는 방법은 설명하지 않습니다.

기존 RDS 인스턴스를 Elastic Beanstalk 환경에 어떻게 연결합니까?

답변:


24

"선택된"답변은 정확하지만, EB와 RDS를 함께 사용하는 대부분의 사람들이 아직 모르는 경우에도 동일한 요구 사항을 가져야하므로 추가 정보를 추가하고 싶었습니다.

첫 번째 질문 : 왜 RDS 인스턴스가 EB 환경 외부에 존재하기를 원하십니까? 답변 : RDS 인스턴스의 수명이 EB 환경의 수명과 연결되지 않도록합니다. 즉, 환경을 제거 할 때 환경을 사용하여 DB를 삭제하고 싶지 않습니다. RDS 인스턴스를 실제로 환경에 연결하려는 이유는 거의 없습니다.

EB와 독립적으로 RDS를 설정하는 문제는 RDS_ * 변수가 자동으로 채워지지 않으므로 값을 검색하여 웹 콘솔 또는 .ebextensions를 통해 값을 채워야한다는 것입니다. 그러나 보안 허점이 될 수 있으므로 코드에 자격 증명을 추가하지 않는 것이 좋습니다.

그러나 다음 문제는 프로그래밍 방식으로 환경 (예 : 청록색 제로 다운 타임 배포)을 만들려면 매번 민감한 RDS 값 (예 : 비밀번호)을 채우는 방법에 대한 솔루션이 필요하다는 것입니다. 불행히도이를 위해서는 AWS 스택을 추가로 드롭 다운하고 CloudFormation 템플릿을 사용해야합니다.

이상적인 솔루션은 EB를 개선하여 질문에 언급 된 "기존 데이터베이스 사용"링크를 사용하면 실제로 기존 RDS 데이터베이스를 수동으로 연결 한 다음 RDS_ * 환경 변수를 도움이되지 않는 문서로 리디렉션하지 않고 자동으로 다시 채울 수 있습니다. . AWS Support는이 기능 요청이 기능 요청으로 제기되었지만 당연히 정해진 시간이 없다고 밝혔다.


1 년 후에도 여전히 그런 것 같습니다.
lifeofguenter

1
내가 아는 한 여전히 그렇습니다.
rgareth

이 AWS를 어떻게 부딪 히나요?
matthew

일년 후에도 여전히 동일합니다.
Karan Kumar

rds docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 를 추가하는 단계 (나를 검색하는 사람에게만 해당) 환경 구성을 작성하지 않고 작성시 구성 파일을 통해로드합니다. 이것은 환경 변수를 추가해야하므로 변경되지 않는 한 괜찮을까요?
Manuel

18

AWS 지원의 답변 :

기존 데이터베이스를 EB 환경에 연결하려면 관리 콘솔을 통해 스냅 샷을 생성 한 다음 데이터 계층에서 "새 RDS 데이터베이스 생성"을 선택해야합니다. RDS 인스턴스가 Beanstalk 환경의 기본 Cloudformation 스택에 연결되는 방식으로 인해 스냅 샷에서 새 인스턴스를 시작하지 않고 실행중인 RDS 인스턴스를 기존 EB 환경에 연결하는 방법이 없습니다. 현재 RDS 인스턴스의 스냅 샷을 생성하는 경우 원하는 경우 EB에서 새로 시작할 수 있습니다.

RDS 인스턴스가 환경 외부에 존재하게하려면 EB 콘솔을 통해 환경 변수로 연결 매개 변수를 제공하면됩니다 (구성-> 웹 계층-> 소프트웨어 구성). 그런 다음 PHP를 통해 환경 변수를 읽을 수 있습니다 .


규칙을 따르기 위해 RDS_ * 이름으로 환경 변수를 정의하는 두 번째 방법을 사용했습니다. 보안 그룹은 매우 엄격하게 설정되어 있지만 환경 변수에 DB 암호를 넣는 것은 여전히 ​​느슨합니다.
Joseph Sheedy

@velotron 나에게도 동일하지만 익숙해졌습니다!
Benjamin

2

최근에이 작업이 필요했고 AWS CLI / EB CLI를 사용하여 단계를 자동화하고 싶었습니다. 어쨌든 다음은 기본적으로 내가 수행 한 단계입니다 (이미 RDS 인스턴스를 생성했다고 가정).

  1. VDS 기본 그룹이 아닌 RDS 인스턴스에 대해 다른 보안 그룹 설정이 있는지 확인하십시오. 이를 위해 aws ec2 create-security-group(AWS CLI)를 사용하고 (AWS CLI)를 사용하여 RDS 인스턴스와 연결할 수 aws rds modify-db-instance있습니다.
  2. Beanstalk 애플리케이션을 초기화하십시오 (저는 eb init(EB CLI)를 사용했습니다).
  3. RDS 데이터베이스 (DB 이름, 호스트 이름, 포트 등)에서 관련 구성 데이터를 읽습니다. 나는 그것을 위해 사용 aws rds describe-db-instances했다.
  4. 해당 데이터 RDS_*를 사용하여 환경을 만들 때 (또는 나중에 환경을 배포 할 때) EB 인스턴스 에서 환경 변수를 설정하십시오 . eb create/ eb deploy(EB CLI)를 사용 하여이 작업을 수행 할 수 있습니다 . 처음에 환경을 만들면 RDS 데이터베이스에 액세스하기위한 보안 그룹이 올바르게 설정되지 않아 환경이 저하됩니다.
  5. EB 구성에서 관련 보안 그룹을 가져옵니다. 자동 확장 그룹 및 탄력적로드 밸런서에 필요한 그룹이 필요합니다. 이를 위해 aws elasticbeanstalk describe-configuration-settings(AWS CLI)를 사용할 수 있습니다 .
  6. 1 단계에서 설정 한 보안 그룹에 대해 데이터베이스로의 인바운드 트래픽에 대해 자동 확장 그룹에 권한을 부여하십시오 aws ec2 authorize-security-group-ingress. DB 보안 그룹이 아닌 VPC 보안 그룹을 사용 하는 (AWS CLI)를 사용했습니다. 해당 지역에서 지원되는 경우 DB 보안 그룹을 사용하여 동일하게 달성 할 수 있습니다. 인바운드 트래픽 규칙을 설정할 때 데이터베이스 엔진에 올바른 프로토콜 및 포트를 사용해야합니다.
  7. 탄력적로드 밸런서 그룹을 RDS 인스턴스의 보안 그룹에 추가합니다 aws rds modify-db-instance((AWS CLI) 사용).
  8. Elastic Beanstalk 애플리케이션을 재부팅하거나 재배치합니다 (예 : eb deploy(EB CLI) 사용). 배포시 마이그레이션을 실행하기 때문에 재배치해야했습니다.

그것은 대부분입니다. 이제 호스트 이름과 DB 자격 증명을 동일하게 유지하면 EB 인스턴스를 관리하지 않고도 RDS 인스턴스를 확장 / 축소 할 수 있습니다. 해당 접근 방식으로 블루 / 그린 배포를 수행 할 수도 있습니다 (그러나 보안 그룹 액세스를 취소하려면 몇 가지 추가 단계를 수행해야 할 수도 있음).


0

구성별로 기존 보안 그룹을 EB EC2 인스턴스에 추가하는 가장 쉬운 방법은 https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/에 설명 된 간단한 파일을 사용하는 것입니다. security-configuration / securitygroup-addexisting.config

예를 들면 다음과 같습니다.

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1

0

나는 같은 문제에 직면하고 다음 단계를 사용하여 수정했습니다.

1) EC2 인스턴스로 이동하여 보안 그룹 예 "sg-121212121212"를 확인하십시오.

2) RDS 보안 그룹으로 이동 ad = nd 인바운드 트래픽

3) 규칙을 편집하여 모든 트래픽을 선택하고 새 ebs 보안 그룹 "sg-121212121212"를 추가하십시오.

도움이 되길 바랍니다.


-2

Elastic에서 RDS를 생성합니다. 새로운 올바른 보안 그룹이 추가됩니다. 기존 RDS의 보안 그룹을 수정합니다. 웹 구성 및 모든 작업에서 올바른 연결 문자열을 설정하십시오 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.