如何使用AWS CLI创建AWS Lambda函数?

15

我正在尝试使用命令创建一个AWS Lambda函数

aws lambda create-function \
  --function-name foo\
  --runtime nodejs\
  --role lambda_basic_execution \
  --handler asdf --zip-file "fileb:://boom.zip"

我有一个名为 boom.zip 的文件在目录中可用,但是我无法使用上述命令进行部署。

我得到的失败消息是:

--zip-file 必须是带有 fileb:// 前缀的文件。

是否有人有一个使用AWS CLI创建lambda函数的工作示例?


在你的代码片段中,你使用了"fileb:://",这是根据错误信息不正确的。 - Matt Houser
1
我也没能让这个工作。 我正在使用的示例具有更长的 --role arn:aws:iam::$account_id:role/service-role/lambda_basic_execution,参见 https://aws.amazon.com/blogs/compute/kotlin-and-groovy-jvm-languages-with-aws-lambda/。 - MarkHu
4个回答

13

文件规范中有多余的冒号“:”。

$ aws lambda create-function --function-name foo --runtime nodejs --role lambda_basic_execution --handler asdf --zip-file "fileb:://boom.zip"

--zip-file must be a file with the fileb:// prefix.
Example usage:  --zip-file fileb://path/to/file.zip

$ aws lambda create-function --function-name foo --runtime nodejs --role lambda_basic_execution --handler asdf --zip-file "fileb://boom.zip"

Error parsing parameter '--zip-file': Unable to load paramfile fileb://boom.zip: [Errno 2] No such file or directory: 'boom.zip'

1
我们需要将.zip文件名重命名为fileb:/ /前缀吗?还是只需要在--zip-file选项中提到它时添加前缀? - Ani
@AniruddhaRaje 不要重命名,这不是一个有效的文件名。只需在使用“--zip-file”选项时添加前缀即可。 - helloV
谢谢!已经解决了,--zip-file参数需要传入.zip文件的绝对路径。 - Ani

5
在 Mac 上,我需要使用绝对路径,但是在前缀中添加时,实际上有三个斜杠。

前缀:

fileb://

路径
/Users/myuser/Apps/folder/zips/file.zip

完成
fileb:///Users/myuser/Apps/folder/zips/file.zip

AWS应该澄清fileb://不是S3存储桶的示例。如果您使用Mac,请使用此帖子中的Complete获取完整路径,使用pwd获取完整路径。 - WEBjuju

1

我在Ubuntu 18.04上遇到了同样的问题,解决方法是将函数名称和fileb:///都用双引号括起来。

aws lambda update-function-code --function-name "FUNCTION" --zip-file "fileb:///an/absolute/path/to/your/lambda/FUNCTION.zip"

0

对我来说,这个问题(在Windows中)是因为我没有正确地创建zip文件。我使用了winrar工具来创建.rar文件,将扩展名更改为.zip,并尝试以与@helloV所说的相同方式上传zip(不要双重::),但我收到了相同的错误消息。如果您在Windows中,请确保遵循this指南(针对golang),或使用任何其他适当的工具创建正确的zip文件,然后再次尝试该命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接