本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
引導窗 AWS CloudFormation 口堆棧
本主題說明如何引導 Windows 堆疊和故障診斷堆疊建立問題。如果您要建立自己的 Windows 映像檔以搭配使用 CloudFormation,請參閱 Amazon EC2 Microsoft 視窗指南中的使用設定 Windows 執行個體EC2ConfigService中的資訊以取得指示。您必須使用設定 Windows 執行個EC2ConfigService體,才能使用 AWS CloudFormation 啟動載入工具。
引導 Windows 堆疊的範例
為了說明目的,我們將檢查 AWS CloudFormation 單一執行個體 SharePoint伺服器範本。
您可以透過下列方式檢視範本的完整內容:URL
此範例將進行以下示範:
-
建立 IAM 使用者和安全性群組以存取執行個體。
-
設定初始化檔案:
cfn-credentials
、cfn-hup.conf
和cfn-auto-reloader.conf
。 -
在伺服器執行個體上下載並安裝套件,例如 SharePoint Foundation 2010。
-
使用 a WaitCondition 來確保資源已準備就緒。
-
使用 Amazon 彈性 IP (EIP) 擷取執行個體的 IP。
AWS CloudFormation 協助程式指令碼cfn-init
是用來執行每個這些動作,根據 Windows 單一伺服器 SharePoint 基礎範本中的AWS::CloudFormation::Init
資源中的資訊。
此AWS::CloudFormation::Init
區段的名稱為 SharePointFoundation "「,並以標準宣告開頭:
"SharePointFoundation": { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : {
在此之後,將宣告 AWS::CloudFormation::Init
的 files (檔案) 區段:
"files" : { "c:\\cfn\\cfn-hup.conf" : { "content" : { "Fn::Join" : ["", [ "[main]\n", "stack=", { "Ref" : "AWS::StackName" }, "\n", "region=", { "Ref" : "AWS::Region" }, "\n" ]]} }, "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf" : { "content": { "Fn::Join" : ["", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.SharePointFoundation.Metadata.AWS::CloudFormation::Init\n", "action=cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]} }, "C:\\SharePoint\\SharePointFoundation2010.exe" : { "source" : "http://d3adzpja92utk0.cloudfront.net/SharePointFoundation.exe" } },
在此建立三個檔案,並放在伺服器執行個體的 C:\cfn
目錄中。分別為:
-
cfn-hup.conf
,cfn-hup 的組態檔案。 -
cfn-auto-reloader.conf
,AWS::CloudFormation::Init
的中繼資料變更時,cfn-hup 啟動更新 (呼叫 cfn-init) 所用的掛接組態檔案。
還會下載一個檔案到伺服器:SharePointFoundation.exe
。此檔案是用來安裝 SharePoint在伺服器執行個體上。
重要
因為 Windows 上的路徑使用反斜線 ('\') 字元,因此每當您參考範本中的 Windows 路徑時,都必須記住在另一個反斜線前面加上另一個反斜線,以正確逸出所有反斜線。 AWS CloudFormation
接著是 commands (命令) 區段,它們是 cmd.exe
命令。
"commands" : { "1-extract" : { "command" : "C:\\SharePoint\\SharePointFoundation2010.exe /extract:C:\\SharePoint\\SPF2010 /quiet /log:C:\\SharePoint\\SharePointFoundation2010-extract.log" }, "2-prereq" : { "command" : "C:\\SharePoint\\SPF2010\\PrerequisiteInstaller.exe /unattended" }, "3-install" : { "command" : "C:\\SharePoint\\SPF2010\\setup.exe /config C:\\SharePoint\\SPF2010\\Files\\SetupSilent\\config.xml" }
因為執行個體中的命令是依「名稱字母順序」處理,所以每個命令前會附加一個數字指示其所需的執行順序。因此,我們可以確保首先提取安裝包,然後安裝所有先決條件,最後開始安裝。 SharePoint
接著是 Properties (屬性) 區段:
"Properties": { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ {"Ref" : "SharePointFoundationSecurityGroup"} ], "KeyName" : { "Ref" : "KeyPairName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "<script>\n", "cfn-init.exe -v -s ", { "Ref" : "AWS::StackName" }, " -r SharePointFoundation", " --region ", { "Ref" : "AWS::Region" }, "\n", "cfn-signal.exe -e %ERRORLEVEL% ", { "Fn::Base64" : { "Ref" : "SharePointFoundationWaitHandle" }}, "\n", "</script>" ]]}} }
在這個區段中,UserData
屬性包含將由 cfn-init
執行的 cmd.exe
指令碼 (以 <script> 標籤括住)。在此您可以用 <powershell> 標籤括住指令碼,以改用 Windows Powershell 指令碼。對於 Windows 堆疊,您必須使用 base64 URL 再次對等待條件控制代碼進行編碼。
SharePointFoundationWaitHandle 在這裡引用並運行cfn-signal
. WaitConditionHandle和相關聯WaitCondition會在範本中宣告下一步:
"SharePointFoundationWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle" }, "SharePointFoundationWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "SharePointFoundation", "Properties" : { "Handle" : {"Ref" : "SharePointFoundationWaitHandle"}, "Timeout" : "3600" } }
由於執行所有步驟和安裝 SharePoint 可能需要一段時間,但不是整個小時,因此在逾時之前會 WaitCondition 等待一個小時 (3600 秒)。
如果一切順利,則會使用彈性 IP 來提供對 SharePoint執行個體的存取權:
"Outputs" : { "SharePointFoundationURL" : { "Value" : { "Fn::Join" : ["", ["http://", { "Ref" : "SharePointFoundationEIP" } ]] }, "Description" : "SharePoint Team Site URL. Please retrieve Administrator password of the instance and use it to access the URL" }
堆疊建立完成後,由提供的 IP 位址EIP將顯示在 AWS CloudFormation 主控台的 [輸出] 索引標籤中。但是,您需要先擷取產生的執行個體暫時管理員密碼,才可以存取執行個體。如需詳細資訊,請參閱 Amazon 使用EC2者指南RDP中的使用連線到 Windows 執行個體。
如何管理 Windows 服務
您管理 Windows 服務的方式與管理 Linux 服務的方式相同,但使用 windows
鍵,而不是 sysvinit
。下列範例會啟動 cfn-hup
服務並將其設為 Automatic (自動),如果 cfn-init 修改 c:\cfn\cfn-hup.conf
或 c:\cfn\hooks.d\cfn-auto-reloader.conf
組態檔案,則會重新啟動服務。
"services" : { "windows" : { "cfn-hup" : { "enabled" : "true", "ensureRunning" : "true", "files" : ["c:\\cfn\\cfn-hup.conf", "c:\\cfn\\hooks.d\\cfn-auto-reloader.conf"] } } }
您可以透過使用名稱(非顯示名稱)來參考服務,以相同的方式管理其他 Windows 服務。
如何故障診斷堆疊建立問題
如果您的堆疊在建立期間失敗,預設的行為會是復原故障。雖然這樣的預設行為一般而言是好的,因其可避免不必要的額外費用,但卻會對堆疊建立失敗原因進行除錯時造成困難。
若要關閉此行為,請在使用 AWS CloudFormation 主控台建立堆疊時選擇「顯示進階選項」,然後選取「失敗時還原」旁邊的「否」選取器。這可讓您登入您的執行個體並檢視日誌檔案,以找出執行啟動指令碼時發生的問題。
要查看的重要日誌如下:
-
EC2配置日誌位於
C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
-
cfn-init 日誌,位於
C:\cfn\log\cfn-init.log
有關更多日誌,請參閱以下EC2指南: