我第一次尝试在AWS上使用ElasticBeanstalk并设法让我的应用程序环境显示在AWS控制台上,但部署失败。我的应用程序已连接到Postgres RDS实例。
日志告诉我,由于应用程序的hstore要求,部署失败了。我正在安装此扩展程序,如果它不存在。
在我的应用程序中,我将此脚本设置为rake任务:
# lib/tasks/db_enhancements.rake
####### Important information ####################
# This file is used to setup a shared extensions #
# within a dedicated schema. This gives us the #
# advantage of only needing to enable extensions #
# in one place. #
# #
# This task should be run AFTER db:create but #
# BEFORE db:migrate. #
##################################################
namespace :db do
desc 'Also create shared_extensions Schema'
task :extensions => :environment do
# Create Schema
ActiveRecord::Base.connection.execute 'CREATE SCHEMA IF NOT EXISTS shared_extensions;'
# Enable triagram
ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS pg_trgm SCHEMA shared_extensions;'
# Enable Hstore
ActiveRecord::Base.connection.execute 'CREATE EXTENSION IF NOT EXISTS HSTORE SCHEMA shared_extensions;'
end
end
Rake::Task["db:create"].enhance do
Rake::Task["db:extensions"].invoke
end
Rake::Task["db:test:purge"].enhance do
Rake::Task["db:extensions"].invoke
end
我还要确保在我的ebextensions配置中包含postgres扩展名:
# .ebextensions/packages.config
packages:
yum:
postgresql93-devel: []
部署日志中显示的第一个错误是:
PG::UndefinedObject: ERROR: type "hstore" does not exist
有人可以指导我看看我做错了吗?
* PS。我正在使用EB CLI
答案 0 :(得分:1)
我有类似的问题,我可以通过以下步骤解决:
识别您的VpcSecurityGroupId
aws rds describe-db-instances --db-instance-identifier <DBInstanceIdentifier>
sg-xxxxxxxxx
编辑您的SecurityGroup
现在转到AWS控制台/ VCP / 安全组,然后使用您的VpcSecurityGroupId进行搜索
在入站规则中,使用类型添加其他规则:所有TCP,协议:TCP,端口范围:ALL和源:
0.0.0.0/0
连接到RDS控制台
用你的终点使用这个
psql --host=xxxxxxxxxx.xxxxxxxxxx.us-west-2.rds.amazonaws.com --port=5432 --username=dbxxxxx --dbname=ebxxx
为用户dbxxxxx和
编写密码ebdb=> CREATE EXTENSION hstore;
这就是全部。 :)