0

AWS 예제에 따라 https 패스 스루가있는 ELB를 사용하고 있습니다. 인스턴스에서 SSL을 종료해야하기 때문에. AWS의 가이드에 따라 파일 키가있는 기존 .ebextensions YAML 파일이 있습니다. 다른 환경에서 서로 다른 인증서를 사용하기 전까지는 제대로 작동합니다.CloudForm을 통해 Beanstalk 인스턴스에서 SSL 인증서를 얻는 방법

내 문제는 내가 배포 할 환경에 따라 Cloudform을 통해 다른 SSL 인증서를 업로드 할 수 있기를 원합니다. 예를 들어, test와 dev는 테스트 인증서를, production은 프로덕션 인증서를 얻습니다.

매핑을 사용하는 방법을 알고 있으므로 문제가되지 않지만 Cloudformation에서 파일을 Elastic Beanstalk 환경으로 업로드하는 방법을 배울 수 없습니다.

CloudFormation YAML의 여러 위치에서 다음 코드 단편을 추가하려고 시도했지만 파일을 업로드하지 않았습니다. 코드 스 니펫에 문제가 있거나 다른 것을 놓치고 있습니까? EC2 :: Instance 섹션을 추가하려고 시도했지만 Beanstalk 외부에 새 EC2 인스턴스가 만들어집니다. 원하지 않는 인스턴스입니다.

Metadata: 
    AWS::CloudFormation::Authentication: 
    S3Auth: 
     type: "s3" 
     buckets: ["s3-bucket"] 
     roleName: aws-elasticbeanstalk-ec2-role 
    AWS::Cloudformation:Init: 
    config: 
     files: 
     /etc/pki/tls/certs/server.crt: 
      mode: "000400" 
      owner: root 
      group: root 
      authentication: "S3Auth" 
      source: !FindInMap [Certificates, crt-file, !Ref Environment] 
     /etc/pki/tls/certs/server.key: 
      mode: "000400" 
      owner: root 
      group: root 
      authentication: "S3Auth" 
      source: !FindInMap [Certificates, key-file, !Ref Environment] 

도움 주셔서 감사합니다.

답변

0

탄성 탄밀의 normal file creation method을 사용할 수 있습니다. .ebextensions라는 이름의 폴더에 certs.conf라는 이름의 파일을 생성하고이를 넣어 : 해당 섹션에서 작동하지 않습니다 !FindInMap 경우

Resources: 
    AWSEBAutoScalingGroup: 
    Metadata: 
     AWS::CloudFormation::Authentication: 
     S3Auth: 
      type: "s3" 
      buckets: ["s3-bucket"] 
      roleName: aws-elasticbeanstalk-ec2-role 

files: 
    "/etc/pki/tls/certs/server.crt": 
    mode: "000400" 
    owner: root 
    group: root 
    authentication: "S3Auth" 
    source: !FindInMap [Certificates, crt-file, !Ref Environment] 
    "/etc/pki/tls/certs/server.key": 
    mode: "000400" 
    owner: root 
    group: root 
    authentication: "S3Auth" 
    source: !FindInMap [Certificates, key-file, !Ref Environment] 

, 당신은 항상 호출하기 전에 장소에 올바른 인증서를두고 약간의 빌드 스크립트를 가질 수 있습니다 eb deploy.

+0

굉장합니다. 결국 환경에 대한 변수를 전달하고 env = x 다음 y를 복사하고, 그렇지 않으면 z를 복사하는 간단한 bash 스크립트를 작성했습니다. 효과는 있지만 우아하지는 않습니다. – WoodchipNZ