cfn-init - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

cfn-init

描述

cfn-init 協助程式指令碼可從 AWS::CloudFormation::Init 金鑰讀取範本中繼資料並相應地執行以下動作:

  • 從中擷取和剖析中繼資料 CloudFormation

  • 安裝套件

  • 將檔案寫入磁碟

  • 啟用/停用及啟動/停止服務

注意

如果您使用 cfn-init 更新現有的檔案,則會在相同的目錄中建立原始檔案的備份複本 (副檔名為 .bak)。例如,如果您更新 /path/to/file_name,此動作會產生兩個檔案:/path/to/file_name.bak 包含原始檔案的內容,而 /path/to/file_name 包含更新的內容。

如需範本中繼資料的資訊,請參閱 AWS::CloudFormation::Init

注意

cfn-init 不需要憑證,因此您不需要使用 --access-key--secret-key--role--credential-file 選項。不過,如果未指定認證,請 CloudFormation 檢查堆疊成員資格,並將呼叫範圍限制為執行個體所屬的堆疊。

語法

cfn-init --stack|-s stack.name.or.id \ --resource|-r logical.resource.id \ --region region \ --access-key access.key \ --secret-key secret.key \ --role rolename \ --credential-file|-f credential.file \ --configsets|-c config.sets \ --url|-u service.url \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --verbose|-v

選項

名稱 描述 必要

-s, --stack

堆疊名稱或堆疊 ID。

類型:字串

預設:無

範例--stack { "Ref" : "AWS::StackName" },

-r, --resource

包含中繼資料之資源的邏輯資源 ID。

類型:字串

範例--resource WebServerHost

--region

要使用的 CloudFormation 區域端點。

類型:字串

預設us-east-1

範例--region ", { "Ref" : "AWS::Region" },

--access-key

AWS 具有呼叫權限的帳戶的存DescribeStackResource取金鑰 CloudFormation。憑證檔案參數會取代此參數。

類型:字串

--secret-key

AWS 對應於指定的訪問密鑰的秘密 AWS 訪問密鑰。

類型:字串

--role

與執行個體相關聯的IAM角色名稱。

類型:字串

條件:憑證檔案參數會取代此參數。

-f, --credential-file

包含私密存取金鑰和存取金鑰的檔案。憑證檔案參數會取代 --role、--access-key 和 --secret-key 參數。

類型:字串

-c, --configsets

要 (循序) 執行的組態集逗號分隔清單。

類型:字串

預設default

-u, --url

要使用的 CloudFormation 端點。

類型:字串

--http-proxy

HTTP代理(非SSL)。使用下列格式:http://user:password@host:port

類型:字串

--https-proxy

一個HTTPS代理。使用下列格式:https://user:password@host:port

類型:字串

-v, --verbose

詳細資訊輸出。這可用於對 cfn-init 無法初始化的情況除錯。

注意

若要偵錯初始化事件,您應該開 DisableRollback 啟。您可以使用 CloudFormation 主控台,選取 [顯示進階選項],然後將 [失敗時復原] 設定為 [否] 來執行此操作。 然後,您可以SSH進入控制台並在 /var/log/cfn-init.log 讀取日誌。

-h, --help

顯示協助訊息並退出。

範例

Amazon Linux 範例

下列程式碼片段顯示執行個EC2體的UserData屬性,該執行個體會執行與WebServerInstance資源相關聯的InstallAndRun組態集。

如需完整的範例範本,請參閱在 Amazon 上部署應用 EC2

若要包含最新版本,請將 yum install -y aws-cfn-bootstrap 新增至 UserData

JSON

UserData 屬性,使用 Fn::Join 內部函數。

{ "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "", "yum install -y aws-cfn-bootstrap", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }

YAML

UserData 屬性,使用 Fn::Join 內部函數。

UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+

JSON

UserData 屬性,使用 Fn::Sub 內部函數。

{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }

YAML

UserData 屬性,使用 Fn::Sub 內部函數。

UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} # Signal the status from cfn-init /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} - {}