3

現在、「負荷分散されたテンプレート」を使用してデプロイするときに、AWS Toolkit for Visual Studio によって作成されたテンプレートに基づいて CloudFormation スタックをセットアップしています。EC2 インスタンスを多少カスタマイズするスクリプトを作成する必要があります。1. 証明書ストアに 2 つの証明書をインストールします。2. 証明書の 1 つを使用するように IIS を構成します。3. IIS で TLS 1.2 を有効にします。

クライアント証明書認証をサポートする必要があるため、これらの証明書をロード バランサーではなく 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-scripts の場合、この AMI はこれらのタイプをサポートしていませんか? 2. 「AWS::CloudFormation::Init」を使用して S3 から証明書をダウンロードし、UserData に追加した PowerShell スクリプトを使用して証明書をインストールする予定です。これは良いアプローチですか、それとも別の方法で行うべきですか?

4

2 に答える 2

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>"

上記のスクリプトは、Web サーバー機能、管理ツール、および cfn-init のキックを追加します。メタデータの解析を担当するのは cfn-init です。

私の Kloud ブログに、AWS での IIS のブートストラップに関する詳細があります。

于 2013-08-12T05:20:38.190 に答える