首页 > 解决方案 > Terraform 应用失败 - InvalidUserData.Malformed:用户数据的 BASE64 编码无效

问题描述

问题:如何在cdktf中使用 base64encode Terraform 函数?

据我所知,这些Terraform 函数 尚不受支持。还是他们现在?

我的用例是“为 ec2 launchTemplate加载 BASE64 编码的 userData ”

当我尝试使用nodejs 方法做同样的事情时:

import { readFileSync } from 'fs';`
.
.
const userTemplate = readFileSync('./user_template.txt', {encoding: 'utf-8'});
.
.
const launchTemplate = new LaunchTemplate(this, "launchTemplate", {
.
.
userData: userTemplate,
.

它失败并出现此错误:

错误:InvalidUserData.Malformed:用户数据的 BASE64 编码无效。

有什么建议我可以使用 cdktf 将 userData 传递给 LaunchTemplate 吗?

标签: amazon-ec2terraformterraform-cdk

解决方案


想通了这个问题。似乎readFileSync创建的对象根据您传递的内容返回缓冲区或字符串。当我像这样通过它时

const userTemplate = readFileSync('./user_template.txt', 'base64');

它返回以 base64 编码的字符串。这正是我所追求的。


推荐阅读