Pulumi 文件存档 - 没有此文件或目录
2021-04-27
1598
我感觉我在这里犯了一个愚蠢的错误,但 Pulumi 似乎无法看到我用来 [创建资产][1] 的文件。这些文件在目录中彼此相邻。以下是文件结构:
-- /resources
-- function.js
-- lambda.ts
非常简单。以下是我们尝试使用 Javascript 文件作为我们正在创建的 Lambda 的资产的文件:
// lambda.ts
import * as pulumi from '@pulumi/pulumi';
import * as aws from '@pulumi/aws';
const file = new pulumi.asset.FileAsset('./function.js');
console.log('file', file);
export const exampleFunction = new aws.lambda.Function('exampleFunction', {
role: role.arn,
runtime: 'nodejs14.x',
code: file,
});
我编写了一个脚本来运行我的 Pulumi 命令。我还
pwd
和
ls
文件目录以确认文件在那里。
# deploy.sh
#!/bin/sh
ls resources
pulumi preview
输出/错误:
- ls resources -- function.js lambda.ts
- pulumi preview -- Error: failed to register new resource exampleFunction [aws:lambda/function:Function]: 2 UNKNOWN: failed to compute archive hash: couldn't read archive path './function.js': stat ./function.js: no such file or directory
这个有点迷茫。文件就在那里。
编辑:
我意识到文件路径
必须相对于
Pulumi.yaml
文件所在的位置
,因此在这种情况下,
/resources
上方的一个目录。
2个回答
您应该使用
FileAsset
而不是
FileArchive
,因为
FileArchive
适用于 tar.gz 和相关存档文件:
https://www.pulumi.com/docs/intro/concepts/assets-archives/
至少我认为这是正在发生的事情。如果这是真的,那么错误消息就不太好,因为它没有告诉您实际问题是什么。
Komal
2021-04-27
deploy.sh
或更具体地说
pulumi preview
在哪里运行?
它是在“resources”文件夹中运行,还是在其他地方运行 - 例如在上面的文件夹中?
如果它不是从资源文件夹运行的,那么很可能就是问题所在,因此您需要提供运行 pulumi 的 function.js 的路径。
Mitch G
2021-04-27