3

"로드 균형 조정 템플릿"을 사용하여 배포 할 때 Visual Studio 용 AWS Toolkit에서 만든 템플릿을 기반으로 CloudFormation 스택을 현재 설정하고 있습니다. 우리는 EC2-instances를 약간 사용자 정의하는 스크립트를 생성해야합니다. 더 구체적으로 우리가 원하는 : 1. 인증서 저장소에 두 개의 인증서를 설치하십시오. 2. 인증서 중 하나를 사용하도록 IIS를 구성합니다. 3. IIS에서 TLS 1.2를 사용하도록 설정합니다.사용자 지정 AMI를 사용하지 않고 EC2 Windows 인스턴스 사용자 지정

우리는 클라이언트 인증서 인증을 지원해야하기 때문에이 인증서를로드 밸런서 대신 IIS에 설치해야합니다.

새 버전이 출시되면 쉽게 AMI를 업데이트 할 수 있기를 원하기 때문에 사용자 지정 AMI를 만들지 않고도이 작업을 수행하고 싶습니다. 우리는 다음을 사용하고 있습니다 : ami-f6803f9f (템플릿이 사용하는 기본값).

따라서 이러한 사용자 지정을 CloudFormation 템플릿의 일부로 수행하려고합니다. 스크립트의 "AWS :: CloudFormation :: Init"부분을 사용하여 간단한 파일을 만들려고했습니다. 그러나 스택을 시작하면 파일이 생성되지 않습니다. 파일을 작성하도록되어 템플릿의 일부는 다음과 같습니다

"Metadata" : { 
    "AWS::CloudFormation::Init" : { 
     "config" : { 
     "files" : { 
     "C:/ClientCA.pfx" : { 
      "content" : { "Fn::Join" : ["", [ 
      "test1\n", 
      "test2\n" 
      ]]} 
     } 
     } 
    } 
    } 
} 

내 질문

그러므로 다음과 같습니다 1. 왜 파일이 ​​없습니다 생성되는? 템플릿에 문제가 있거나 init 스크립트의 경우이 AMI가 이러한 유형을 지원하지 않기 때문입니까? 2. S3에서 "AWS :: CloudFormation :: Init"을 사용하여 certs를 다운로드하고 UserData에 추가하는 PowerShell 스크립트를 사용하여 설치합니다. 이것은 좋은 접근 방법입니까 아니면 우리가 다르게해야합니까?

답변

1

저는 현재 Windows Server 2012 AMI로 스 니펫을 테스트 한 결과 정상적으로 작동했습니다. 따라서 가장 좋은 추측은 ami-f6803f9f이 이미 커스텀 AMI (적어도 내가 공식적인 곳에서는 찾을 수 없음)이고 Deploying Applications with AWS CloudFormation에 대한 필수 오케스트레이션이 없다는 것입니다 (이것은 유닉스/리눅스에 대한 일반적인 설명이며, 짧은 Windows 지향적 인 예제는 Bootstrapping AWS CloudFormation Windows Stacks을 참조하십시오).)

AWS CloudFormation은 헬퍼 애플리케이션 세트 ( CFN-INIT 포함

, 클라우드 INIT에 기초 CFN-신호 CFN-얻 메타 및 CFN-HUP). 이러한 도우미 응용 프로그램은 cloud-init와 유사한 기능 을 제공 할뿐만 아니라 인스턴스 및 응용 프로그램이 실행되고 실행 된 후에 메타 데이터 을 업데이트 할 수 있습니다. [...] [강조 광산]

강조된 애플리케이션

은 예에 C:/ClientCA.pfx을 만드는 즉, 템플릿에 정의 된 메타 데이터에 읽기에 대한 책임이있는 사람들과 행동이다. 이 도우미 응용 프로그램은 현재 모든 현재 Amazon EBS-Backed Windows Server 2012 RTM AMIs에 포함되어 있지만 Amazon EBS-Backed Windows Server 2008 R2 English 64-bit - Base for CloudFormation과 같은 전용 요소를 제외하고는 일반적으로 Amazon EBS-Backed Windows Server 2008 R2 AMIs에 없습니다.

분명히 사용자 정의 AMI에이 CloudFormation Helper Scripts을 설치하고 거기에서 이동할 수도 있지만 특별한 이유가 없으면이 부분과 몇 가지를 제공하는 현재 Amazon EBS-Backed Windows Server 2012 RTM AMI부터 시작하는 것이 좋습니다. 다른 유사한 관리 생산성 구성 요소 (예 : Windows PowerShell 3.0 및 신품 AWS Tools for Winodws PowerShell).

1

이전 질문 -하지만 파일이 생성되지 않는 이유는 cloudformation 스크립트가 cfn-init을 실행하지 않는다는 것입니다.

의 핵심 부분은

   "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ 
       "<script>\n", 
        "powershell.exe add-windowsfeature web-webserver -includeallsubfeature -logpath $env:temp\\webserver_addrole.log \n", 
        "powershell.exe add-windowsfeature web-mgmt-tools -includeallsubfeature -logpath $env:temp\\mgmttools_addrole.log \n", 
        "cfn-init.exe -v -s ", {"Ref" : "AWS::StackId"}, " -r WebServerLaunchConfiguration --region ", {"Ref" : "AWS::Region"}, "\n", 
       "</script>\n", 
       "<powershell>\n", 
        "new-website -name", {"Ref" : "Name"}, " -port 80 -physicalpath c:\\inetpub\\", {"Ref" : "Name"}, " -ApplicationPool \".NET v4.5\" -force \n", 
        "remove-website -name \"Default Web Site\" \n", 
        "start-website -name ", {"Ref" : "Name"}, " \n", 
       "</powershell>" 

위의 스크립트는 웹 서버 기능, 관리 도구 및 CFN-INIT의 킥을 추가 ... 당신이 유저 데이터 스크립트를 업데이트했는지 확인하는 것입니다. 메타 데이터 파싱을 담당하는 것은 cfn-init입니다.

내 Kloud 블로그에 more details about bootstrapping IIS on AWS이 있습니다.

관련 문제