dev.json ファイルを作成し、config ディレクトリ下に配置。
設定ファイルと認証情報ファイルの設定を参考に、credentialsファイルを作成する。
今回は、~/.aws/credentials
に以下のようprofileがdecidim
になるよう作成。(違う名前にした場合、以下読み変えが必要です。)
[decidim]
aws_access_key_id=YOUR_ACCESS_KEY
aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
Amazon Simple Email Service を設定するや、Setup emailを参考に、AWS SESの準備を行う。
2-1. dev.json を編集する
dev.jsonの’smtpDomain’を用意したドメインに書き換える。
AWS Systems Manager のパラメータストアで以下のようなパラメータを手動で作成する。
/decidim-cfj/${props.stage}/AWS_ACCESS_KEY_ID
/decidim-cfj/${props.stage}/AWS_SECRET_ACCESS_KEY
/decidim-cfj/${props.stage}/AWS_CLOUD_FRONT_END_POINT
/decidim-cfj/${props.stage}/RDS_DB_NAME
/decidim-cfj/${props.stage}/RDS_USERNAME
/decidim-cfj/${props.stage}/RDS_PASSWORD
/decidim-cfj/${props.stage}/SECRET_KEY_BASE
/decidim-cfj/${props.stage}/NEW_RELIC_LICENSE_KEY
/decidim-cfj/${props.stage}/SMTP_ADDRESS
/decidim-cfj/${props.stage}/SMTP_USERNAME
/decidim-cfj/${props.stage}/SLACK_API_TOKEN
プライベートリポジトリを作成する を参考に AWS ECRのリポジトリを用意する。
デフォルトのままだと接続されるドメインを拒否してしまうため、Decidim の config/environments/development.rb に該当のドメイン(ホスト名)、もしくは全てのホスト名をconfigに追記する。
追記例
config.hosts << "something_your_domain.example.com"
# No precompilation on demand on first request
end
config.hosts.clear
# No precompilation on demand on first request
end
Blocked host: something_your_domain.example.com
To allow requests to local.example.com make sure it is a valid hostname (containing only numbers, letters, dashes and dots), then add the following to your environment configuration:
手元の環境で、decidim-cfjのdocker imageをbuildする。
Docker イメージをプッシュするを参考にbuildしたdocker imageを用意したリポジトリにpushする。
4-2でpushしたdockerイメージのタグをexportする
$ export IMAGE_TAG=先ほどpushしたimage tag
証明書を発行して管理するを参考に証明書を発行、Arnをメモする
5-2 dev.json を編集する
dev.jsonの’certificates’部分にメモしたArnに書き換える。
使用するリージョンごとに一回実行する必要がある。2回目以降は不要。
$ npx cdk --context stage=dev tag=${IMAGE_TAG} --profile decidim bootstrap
どんなリソースが作成されるのかを確認できる。
$ npx cdk --context stage=dev tag=${IMAGE_TAG} --profile decidim diff
$ npx cdk --context stage=dev tag=${IMAGE_TAG} --profile decidim deploy --all --require-approval never
上記コマンドが成功すれば、デプロイは成功です。
devdecidimStack
とCloudFormationのスタック一覧から検索し、以下のように各StackにCREATE_COMPLETE
が表示されていることを確認してください。
$ aws ecs execute-command --region ap-northeast-1 --cluster devDecidimCluster --task ${タスク名} --container appContainer --interactive --command "/bin/bash" --profile decidim
$ ./bin/rails db:migrate
$ ./bin/rails db:seed SEED=true
dev-decidim-alb-origin.${指定したドメイン}
で管理画面にアクセス
cloudfrontの管理画面に行き作成したcloudfrontの管理画面で代替ドメインに追加したいドメインを加えて保存する
設定したい組織にドメインを設定して、対象のドメインいアクセスする
手順を変えるとエラーでアクセスに失敗します。
decidimではproduction環境のseedは以下のenvをつけて実行する必要があります SEED=true bundle exec rake db:seed