Amazon web services 使用serverless创建S3存储桶时,出现错误“存储桶名称不应包含大写字符”

Amazon web services 使用serverless创建S3存储桶时,出现错误“存储桶名称不应包含大写字符”,amazon-web-services,amazon-s3,amazon-cloudformation,serverless,Amazon Web Services,Amazon S3,Amazon Cloudformation,Serverless,我编写了一个serverless.yml,在这里我创建了3个S3bucket资源。这是一个我必须完成的带回家的项目,它需要两个bucket来处理静态模板,一个bucket来处理结果。我正在定义SQS,它成功地创建了队列,我能够从我的lambda向它发送消息,并通过另一个lambda接收消息 但是,定义S3 bucket resources给了我一个错误:S3LanguageTemplatesBucket-bucket名称不应该包含大写字符。 我尝试使用硬编码的值作为bucket名称,但没有任何帮

我编写了一个
serverless.yml
,在这里我创建了3个
S3
bucket资源。这是一个我必须完成的带回家的项目,它需要两个bucket来处理静态模板,一个bucket来处理结果。我正在定义SQS,它成功地创建了队列,我能够从我的lambda向它发送消息,并通过另一个lambda接收消息

但是,定义S3 bucket resources给了我一个错误:S3LanguageTemplatesBucket-bucket名称不应该包含大写字符。

我尝试使用硬编码的值作为bucket名称,但没有任何帮助

my
serverless.yml
文件的内容如下:

服务:过程分数
组织:奥萨诺
框架版本:“2”
供应商:
名称:aws
运行时:nodejs12.x
配置文件:无服务器管理员
地区:美国东部1
环境:
SQS_URL:MyQueue
S3_HTML_模板:${self:service}-HTML-TEMPLATES-sf68N5umh8gC8yM4
S3_语言_模板:${self:service}-LANGUAGE-TEMPLATES-gY9b7REadVPtKChV
S3_STATIC_网站:'${self:service}-STATIC-WEBSITE-pD4c7M2297pjAmST'
功能:
发送:
处理程序:scores/producer.send
活动:
-http:
路径:分数
方法:邮寄
集成:lambda
科尔斯:是的
IAM声明:
-效果:允许
行动:
-“sqs:SendMessage”
-“sqs:GetQueueUrl”
资源:
Fn::GetAtt:[MyQueue,Arn]
收到:
处理程序:scores/consumer.receive
活动:
-sqs:
arn:
Fn::GetAtt:
-我的队列
-阿恩
IAM声明:
-效果:允许
行动:
-“s3:GetObject”
资源:
-'arn:aws:s3:::${self:provider.environment.s3\u HTML\u TEMPLATES}/*'
-'arn:aws:s3:::${self:provider.environment.s3\u LANGUAGE\u TEMPLATES}/*'
-效果:允许
行动:
-“s3:PutObject”
资源:
-'arn:aws:s3:::${self:provider.environment.s3\u STATIC\u WEBSITE}/*'
资源:
资源:
我的队列:
类型:“AWS::SQS::队列”
特性:
队列名称:“MyQueue”
S3HTMLTemplatesBucket:
类型:“AWS::S3::Bucket”
特性:
BucketName:“${self:provider.environment.S3_HTML_TEMPLATES}”
S3LanguageTemplatesBucket:
类型:“AWS::S3::Bucket”
特性:
BucketName:“${self:provider.environment.S3_LANGUAGE_TEMPLATES}”
S3StaticWebsiteBucket:
类型:“AWS::S3::Bucket”
特性:
BucketName:“${self:provider.environment.S3\u STATIC\u WEBSITE}”
我不知道这是否有帮助,但我还提供了以下指向生成的cloudformation模板的链接:

桶名称中的大写字母:

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

因此,不是:

    S3_HTML_TEMPLATES: ${self:service}-html-templates-sf68N5umh8gC8yM4
    S3_LANGUAGE_TEMPLATES: ${self:service}-language-templates-gY9b7REadVPtKChV
    S3_STATIC_WEBSITE: '${self:service}-static-website-pD4c7M2297pjAmST'
您可以尝试(仅小写字母):


S3\u STATIC\u网站
和其他环境变量的值是什么?
self:service
应返回文件顶部设置的过程分数值。然后在添加剩余的
S3_STATIC_WEBSITE
变量后,应该等于
process-scores-STATIC-WEBSITE-pD4c7M2297pjAmST
噢,天哪,我真傻。我知道命名规则,但出于某种原因,我甚至没有注意到名字的最后部分有大写字母。只是改变了它并重新部署。一切顺利。谢谢没问题。如果答案有帮助,我们将不胜感激。对于添加的答案,请添加
/
以访问任何内部文件,如果连接任何文件名(如绝对路径中的文件名)。帮了我的忙。@kishore嗨。你能举个例子吗。我不确定是否必须更新答案,因为它缺少
/
?事实上,我想添加答案,但无法。可能是因为,它(问题)已标记为已结束。
    S3_HTML_TEMPLATES: ${self:service}-html-templates-sf68n5umh8gc8ym4
    S3_LANGUAGE_TEMPLATES: ${self:service}-language-templates-gy9b7readvptkchv
    S3_STATIC_WEBSITE: '${self:service}-static-website-pd4c7m2297pjamst'