簡體   English   中英

cloudformation- 如何在 AWS::CloudFormation::Init 部分的來源中使用 Ref?

[英]cloudformation- how to use Ref in sources of AWS::CloudFormation::Init section?

我正在嘗試在AWS::CloudFormation::Init中編寫源代碼以獲取如下參數:

"Parameters" : {
    "Environment" : {
            "Description" : "The Environment",
            "Type" : "String",
            "AllowedValues" : [
                "DEV",
                "QA",
                "UAT",
                "PROD"
            ]
        }
}

下面是我的元數據部分:

"LaunchTemplate": {
    "Type": "AWS::EC2::LaunchTemplate",
        "Metadata": {
            "Comment" : "Install application",
            "AWS::CloudFormation::Init" : {
                    "configSets" : {
                        "full_install" : [ "prepare", "app-deployment" ]
                    },
            "app-deployment" : {
                    "sources": {
                        "Fn::Join":["",["/app/",{"Ref": "Environment"},"/appname"]] : "https://xyz.s3.amazonaws.com/appname.tar"
                    },
                    "files": {
                        "Fn::Join":["",["/opt/",{"Ref": "Environment"},"/index.html"]] : {
                    "content" : "<html><title>HelloTitle</title><body><h1>header H1</h1></body></html>"
                }

這是行不通的。 我可以使用Ref function 在sourcesfiles部分中以這種方式使用參數嗎?

我不認為你能做到這一點。

但是,解決方法是使用 to use commands部分。

我可以使用yaml (我個人使用的)演示解決方法背后的想法,包括多行文件:

commands: 

  04_setup_index_html:
    command: !Sub |
      mkdir -p /opt/${Environment}

      echo "<html><title>HelloTitle</title><body><h1>header H1</h1></body></html>" \
        > /opt/${Environment}/index.html

  05_setup_index2_html_multiline:
    command: !Sub |
      mkdir -p /opt/${Environment}

      cat >/opt/${Environment}/index2.html << EOL
      <html>
          <title>HelloTitle</title>
          <body>
            <h1>header H1</h1>
          </body>
      </html>
      EOL

這樣您就可以根據模板Parameters動態創建文件和文件夾。

當然json也可以,但我現在沒有經過測試的工作示例。 yaml中的片段肯定可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM