首页 > 解决方案 > 使用 AWS SAM 时出现“存储桶名称必须与正则表达式匹配”错误

问题描述

使用 aws-sam-cli==0.48.0 我正在尝试在 AWS S3 存储桶的现有文件夹中上传 lambda。路径是“我的建模/lambdas”

当我在 MacOS 命令行上执行此命令时:

sam package --template-file template.yaml --output-template-file deploy --s3-bucket my-modelling/lambdas

我得到:

Error: Unable to upload artifact module/ referenced by CodeUri parameter of MyFunction resource.
Parameter validation failed:
Invalid bucket name "my-modelling/lambdas": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$" or be an ARN matching the regex "^arn:(aws).*:s3:[a-z\-0-9]+:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-]{1,63}$"

请注意,如果我只指定存储桶名称,这可以正常工作:

sam package --template-file template.yaml --output-template-file deploy --s3-bucket my-modelling

你能让我知道指定文件夹的正确语法是什么吗?

标签: amazon-web-servicesamazon-s3aws-lambdaaws-samaws-sam-cli

解决方案


来自文档

存储桶名称只能由小写字母、数字、点 (.) 和连字符 (-) 组成。

因此,您的存储桶名称my-modelling/lambdas不正确,因为它包含/.

添加前缀使用--s3-prefix

添加到上传到 Amazon S3 存储桶的工件名称的前缀。前缀名称是 Amazon S3 存储桶的路径名称(文件夹名称)


推荐阅读