如何解决使用无服务器创建S3存储桶时,出现错误“存储桶名称不应包含大写字符”
我写了一个serverless.yml
,在其中创建了3个S3
存储桶资源。这是我必须完成的一些带回家的项目,它需要我必须处理的两个存储桶用于静态模板,结果需要一个存储桶。我正在定义SQS,它成功创建了队列,并且能够从我的lambda发送消息给它,并接收另一个lambda的消息。
但是,定义S3存储桶资源给了我 An error occurred: S3LanguageTemplatesBucket - Bucket name should not contain uppercase characters.
我尝试对存储桶名称使用硬编码的值,但这无济于事。
我的serverless.yml
文件的内容如下:
service: process-scores
org: osano
frameworkVersion: '2'
provider:
name: aws
runtime: nodejs12.x
profile: serverless-admin
region: us-east-1
environment:
SQS_URL: MyQueue
S3_HTML_TEMPLATES: ${self:service}-html-templates-sf68N5umh8gC8yM4
S3_LANGUAGE_TEMPLATES: ${self:service}-language-templates-gY9b7REadVPtKChV
S3_STATIC_WEBSITE: '${self:service}-static-website-pD4c7M2297pjAmST'
functions:
send:
handler: scores/producer.send
events:
- http:
path: scores
method: post
integration: lambda
cors: true
iamRoleStatements:
- Effect: Allow
Action:
- "sqs:SendMessage"
- "sqs:GetQueueUrl"
Resource:
Fn::GetAtt: [ MyQueue,Arn ]
receive:
handler: scores/consumer.receive
events:
- sqs:
arn:
Fn::GetAtt:
- MyQueue
- Arn
iamRoleStatements:
- Effect: Allow
Action:
- "s3:GetObject"
Resource:
- 'arn:aws:s3:::${self:provider.environment.S3_HTML_TEMPLATES}/*'
- 'arn:aws:s3:::${self:provider.environment.S3_LANGUAGE_TEMPLATES}/*'
- Effect: Allow
Action:
- "s3:PutObject"
Resource:
- 'arn:aws:s3:::${self:provider.environment.S3_STATIC_WEBSITE}/*'
resources:
Resources:
MyQueue:
Type: "AWS::SQS::Queue"
Properties:
QueueName: "MyQueue"
S3HTMLTemplatesBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: '${self:provider.environment.S3_HTML_TEMPLATES}'
S3LanguageTemplatesBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: '${self:provider.environment.S3_LANGUAGE_TEMPLATES}'
S3StaticWebsiteBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: '${self:provider.environment.S3_STATIC_WEBSITE}'
我不知道它是否可以帮助您,但我还在下面提供了所生成的cloudformation模板的链接:
解决方法
存储桶名称中的大写字母can't be used:
存储桶名称只能由小写字母,数字,点(。)和连字符(-)组成。
因此而不是:
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_HTML_TEMPLATES: ${self:service}-html-templates-sf68n5umh8gc8ym4
S3_LANGUAGE_TEMPLATES: ${self:service}-language-templates-gy9b7readvptkchv
S3_STATIC_WEBSITE: '${self:service}-static-website-pd4c7m2297pjamst'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。