开发者问题收集

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 命令。我还 pwdls 文件目录以确认文件在那里。

# 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