配置AWS S3作为Rails Active Storage存储后Heroku返回503错误如何解决
解决方案
配置Heroku环境变量
本地使用的.env文件不会被Heroku默认读取,你需要手动在Heroku平台配置对应的环境变量,变量名需要和storage.yml中调用的ENV键完全一致:
可通过Heroku CLI执行命令配置:heroku config:set ACCESS_KEY=你的AWS_ACCESS_KEY值 SECRET_ACCESS_KEY=你的AWS_SECRET_ACCESS_KEY值 S3_BUCKET=你的S3存储桶名称也可以在Heroku对应应用的后台设置页面,找到Config Vars板块手动添加三个变量。
修正
storage.yml语法错误
你贴出的storage.yml配置片段最后一行末尾存在多余的反引号,会导致YAML解析失败,直接触发Rails启动崩溃,删除多余的反引号即可,修正后的配置参考:amazon: service: S3 access_key_id: <%=ENV['ACCESS_KEY']%> secret_access_key: <%=ENV['SECRET_ACCESS_KEY']%> region: us-west-2 bucket: <%=ENV['S3_BUCKET']%>检查依赖包分组
确认Gemfile中的aws-sdk-s3没有被放在development或者test分组下,需要放在全局分组或production分组内,修改后执行bundle install更新Gemfile.lock再重新提交部署。排查完整报错日志
如果完成以上操作后服务依然崩溃,可执行heroku logs --tail查看完整的启动日志,定位具体崩溃原因,常见后续问题包括S3区域配置和存储桶实际区域不匹配、AWS密钥缺少S3操作权限等。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

