部署 ruby-on-rails 项目时出现错误“Property Listeners cannot be empty”
Posted
技术标签:
【中文标题】部署 ruby-on-rails 项目时出现错误“Property Listeners cannot be empty”【英文标题】:Error "Property Listeners cannot be empty" occurs when deploy ruby-on-rails project 【发布时间】:2021-05-13 15:20:02 【问题描述】:我是 AWS Cloudformation 的新手。我的 Elastic Beanstalk Worker 使用 Ruby on Rails。 EB是一个基于cloudformation模板的Stack。
不知道为什么,最近在部署(eb deploy
)的时候,Event报错如下:
AWSEBLoadBalancer
不在模板的Resources:
中。但我在源代码的.ebextensions
中找到了。
Resources:
AWSEBLoadBalancer:
Properties:
AccessLoggingPolicy:
EmitInterval: 5
Enabled: true
S3BucketName:
Ref: LogsBucket
Type: "AWS::ElasticLoadBalancing::LoadBalancer"
DependsOn: "LogsBucketPolicy"
LogsBucket:
DeletionPolicy: Retain
Type: "AWS::S3::Bucket"
LogsBucketPolicy:
Properties:
Bucket:
Ref: LogsBucket
PolicyDocument:
Statement:
-
Action:
- "s3:PutObject"
Effect: Allow
Principal:
AWS:
? "Fn::FindInMap"
:
- Region2ELBAccountId
-
Ref: "AWS::Region"
- AccountId
Resource:
? "Fn::Join"
:
- ""
-
- "arn:aws:s3:::"
-
Ref: LogsBucket
- /AWSLogs/
-
Ref: "AWS::AccountId"
你能给我一些提示来解决这个问题吗?
【问题讨论】:
可以展示一下模板吗? @Marcin 感谢您检查我的问题。我已经更新了我的问题。 【参考方案1】:错误消息显示您缺少Listeners。使用Listeners
,您的平衡器定义将类似于(需要修改为您自己的设置):
AWSEBLoadBalancer:
Properties:
Listeners:
- InstancePort: 80
InstanceProtocol: HTTP
LoadBalancerPort: 80
#PolicyNames:
# - String
Protocol: HTTP
#SSLCertificateId: String
AccessLoggingPolicy:
EmitInterval: 5
Enabled: true
S3BucketName:
Ref: LogsBucket
Type: "AWS::ElasticLoadBalancing::LoadBalancer"
DependsOn: "LogsBucketPolicy"
【讨论】:
以上是关于部署 ruby-on-rails 项目时出现错误“Property Listeners cannot be empty”的主要内容,如果未能解决你的问题,请参考以下文章
paypal 与 ruby on rails 集成的“zoid 破坏了所有错误”
在 Elastic Beanstalk 环境上部署 ruby on rails 应用程序时出现 AWS 数据库迁移错误
Ruby on Rails 部署到阿里巴巴 ECS 后无法加载
使用 Capistrano 将 Ruby on Rails 应用程序部署到 Windows Azure VM 时出现超时错误