如何在 Pulumi 中使用本地磁盘中的文件?
How can I use a file from the local disk in Pulumi?
我正在尝试使用位于磁盘上的 Pulumi AWS 的长政策文档。
const policyDocument = new pulumi.asset.FileAsset("./policy.json");
但是,当我稍后尝试像这样使用变量时:
export const jobPolicy = new aws.iam.Policy(`${ jobName }-policy`, {
path: `/${ stage }`,
description: `Policy for ETL job ${ jobName }`,
policy: JSON.stringify(policyDocument)
});
我得到以下信息:
+ policy : "{\"__pulumiAsset\":true,\"path\":{}}"
有没有办法在 Pulumi + TypeScript 中以某种方式使用 JSON 文件?
我也试过:
import * as fs from 'fs';
const policyDocument = fs.readFileSync('policy.json', 'utf8');
结果是:
Error: ENOENT: no such file or directory, open 'policy.json'
at Object.openSync (node:fs:585:3)
A pulumi.asset.FileAsset
创建新资源,有输入和输出。它通常用于创建 lambda 函数。
policy
参数采用标准的 TypeScript 字符串,因此您使用 fs.readFileSync
在正确的行上,但我认为您忘记将路径添加到 json
文件。你可能会这样做:
const policyDocument = fs.readFileSync('./policy.json','utf8');
注意那里的 ./
。但是,更安全的方法是使用 path
解析目录。尝试这样的事情
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as fs from 'fs';
const path = require('path');
const policyDocument = fs.readFileSync(path.resolve(__dirname, 'policy.json'), 'utf8');
const jobPolicy = new aws.iam.Policy('file-policy', {
policy: policyDocument
});
我正在尝试使用位于磁盘上的 Pulumi AWS 的长政策文档。
const policyDocument = new pulumi.asset.FileAsset("./policy.json");
但是,当我稍后尝试像这样使用变量时:
export const jobPolicy = new aws.iam.Policy(`${ jobName }-policy`, {
path: `/${ stage }`,
description: `Policy for ETL job ${ jobName }`,
policy: JSON.stringify(policyDocument)
});
我得到以下信息:
+ policy : "{\"__pulumiAsset\":true,\"path\":{}}"
有没有办法在 Pulumi + TypeScript 中以某种方式使用 JSON 文件?
我也试过:
import * as fs from 'fs';
const policyDocument = fs.readFileSync('policy.json', 'utf8');
结果是:
Error: ENOENT: no such file or directory, open 'policy.json'
at Object.openSync (node:fs:585:3)
A pulumi.asset.FileAsset
创建新资源,有输入和输出。它通常用于创建 lambda 函数。
policy
参数采用标准的 TypeScript 字符串,因此您使用 fs.readFileSync
在正确的行上,但我认为您忘记将路径添加到 json
文件。你可能会这样做:
const policyDocument = fs.readFileSync('./policy.json','utf8');
注意那里的 ./
。但是,更安全的方法是使用 path
解析目录。尝试这样的事情
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as fs from 'fs';
const path = require('path');
const policyDocument = fs.readFileSync(path.resolve(__dirname, 'policy.json'), 'utf8');
const jobPolicy = new aws.iam.Policy('file-policy', {
policy: policyDocument
});