本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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|-rlogical.resource.id
\ --regionregion
\ --access-keyaccess.key
\ --secret-keysecret.key
\ --rolerolename
\ --credential-file|-fcredential.file
\ --configsets|-cconfig.sets
\ --url|-uservice.url
\ --http-proxyHTTP.proxy
\ --https-proxyHTTPS.proxy
\ --verbose|-v
選項
名稱 | 描述 | 必要 |
---|---|---|
|
堆疊名稱或堆疊 ID。 類型:字串 預設:無 範例: |
是 |
|
包含中繼資料之資源的邏輯資源 ID。 類型:字串 範例: |
是 |
|
要使用的 CloudFormation 區域端點。 類型:字串 預設: 範例: |
否 |
|
AWS 具有呼叫權限的帳戶的存 類型:字串 |
否 |
|
AWS 對應於指定的訪問密鑰的秘密 AWS 訪問密鑰。 類型:字串 |
否 |
|
與執行個體相關聯的IAM角色名稱。 類型:字串 條件:憑證檔案參數會取代此參數。 |
否 |
|
包含私密存取金鑰和存取金鑰的檔案。憑證檔案參數會取代 --role、--access-key 和 --secret-key 參數。 類型:字串 |
否 |
|
要 (循序) 執行的組態集逗號分隔清單。 類型:字串 預設: |
否 |
|
要使用的 CloudFormation 端點。 類型:字串 |
否 |
|
HTTP代理(非SSL)。使用下列格式: 類型:字串 |
否 |
|
一個HTTPS代理。使用下列格式: 類型:字串 |
否 |
|
詳細資訊輸出。這可用於對 cfn-init 無法初始化的情況除錯。 注意若要偵錯初始化事件,您應該開 DisableRollback 啟。您可以使用 CloudFormation 主控台,選取 [顯示進階選項],然後將 [失敗時復原] 設定為 [否] 來執行此操作。 然後,您可以SSH進入控制台並在 /var/log/cfn-init.log 讀取日誌。 |
否 |
|
顯示協助訊息並退出。 |
否 |
範例
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} - {}