首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cloudformation启动配置用户数据文件

Cloudformation启动配置用户数据文件
EN

Stack Overflow用户
提问于 2016-04-28 01:28:08
回答 2查看 2.2K关注 0票数 1

在使用云形成模板编写启动Config时,是否仍然要使用文件?我的启动配置对于4096字符限制来说太大了。cli允许这样做,terraformer允许这样做,创建启动配置的接口也允许这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-30 02:05:33

我还没有找到像在其他产品中那样指定用户数据文件的方法。不过,我的解决办法是将用户数据文件上传到s3,然后让用户数据在模板中下载并运行。下面是我的模板中适用的UserData部分。这是一个powershell示例。

代码语言:javascript
复制
    "UserData": {
    "Fn::Base64": {
        "Fn::Join": [
            "\n",
            [
                "<powershell>",
                "Read-S3Object -BucketName deployment -Key userdata/user-data.ps1 -File 'c:/temp/userdata.ps1'  -Region us-west-2",
                "Invoke-Expression 'c:/temp/userdata.ps1'",
                "Remove-Item -Recurse -Force C:/temp",
                "</powershell>"
            ]
        ]
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-07 11:51:36

假设您可以在linux/mac系统上预处理您的引导用户数据文件并通过cli调用cloudformation,您可以执行以下操作。

首先,在cloudformation模板中创建多个参数以接受输入。我称这些参数为UserData、UserData2、UserData3和UserData4。

删除当前目录中任何预先存在的“拆分”文件:

代码语言:javascript
复制
rm -f ./xa?

base64对引导脚本文件进行编码:

代码语言:javascript
复制
BOOTSTRAP_BASE64_ENC=$(base64 -w0 ${GENERATED_USERDATA_FILE_PATH})

将base64编码的文件内容拆分为4096字节的部分:

代码语言:javascript
复制
echo $BOOTSTRAP_BASE64_ENC | split -b 4096

在调用'aws cloudformation堆栈‘时,将拆分的文件传递到上述参数中:

代码语言:javascript
复制
ParameterKey=UserData,ParameterValue=$(cat xaa) ParameterKey=UserData2,ParameterValue=$(cat xab) ParameterKey=UserData3,ParameterValue=$(cat xac) ParameterKey=UserData4,ParameterValue=$(cat xad)

在Launchconfig的“Properties”部分,您可以从传入的参数中重新组装userdata文件,如下所示:

代码语言:javascript
复制
"UserData" : { "Fn::Join" : [ "", [ { "Ref" : "UserData" }, { "Ref" : "UserData2" }, { "Ref" : "UserData3" }, { "Ref" : "UserData4" }]]},
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36903677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档