🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1631閲覧

AWSのElastic Beanstalk(AL2環境)の.ebextensionsでsidekiqを起動したい

pandama09396862

総合スコア6

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/01/27 03:33

前提・実現したいこと

AWSのElastic Beanstalk(AL2環境)の.ebextensionsでsidekiqを起動したいです。
前提環境

rails 6.0 sidekiq #(バージョンは6ではない)

AWSのElastic Beanstalk(AL2環境)で環境構築しています。(sidekiqはdockerのコンテナ上で起動させており、ローカルでは起動を確認できています。)
sidekiqによる非同期実行を本番環境に導入することになり、ALでのsidekiqの起動に関する.ebextensionsの設定ファイルを参考にしEBを設定、buildしたのですが、ALとAL2では仕様が変更になっているらしくいくつか使えないコマンドがあるとのことで起動できず苦戦しています。
またAL2に変更後のsidekiqの設定ファイルについての記事はまだほとんど見つからず、めぼしい変更点も把握できない状態であり、こちらに投稿させて頂きました。

該当のソースコード

.ebextensions/50_sidekiq.config

# Sidekiq interaction and startup script commands: create_post_dir: command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post" ignoreErrors: true files: "/opt/elasticbeanstalk/hooks/appdeploy/post/50_restart_sidekiq.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash . /opt/elasticbeanstalk/support/envvars EB_APP_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir) EB_APP_PID_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_pid_dir) EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user) EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir) EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir) . $EB_SUPPORT_DIR/envvars . $EB_SCRIPT_DIR/use-app-ruby.sh SIDEKIQ_PID=$EB_APP_PID_DIR/sidekiq.pid SIDEKIQ_CONFIG=$EB_APP_DEPLOY_DIR/config/sidekiq.yml SIDEKIQ_LOG=$EB_APP_DEPLOY_DIR/log/sidekiq.log cd $EB_APP_DEPLOY_DIR if [ -f $SIDEKIQ_PID ] then su -s /bin/bash -c "kill -TERM `cat $SIDEKIQ_PID`" $EB_APP_USER su -s /bin/bash -c "rm -rf $SIDEKIQ_PID" $EB_APP_USER fi . /opt/elasticbeanstalk/support/envvars.d/sysenv sleep 10 su -s /bin/bash -c "bundle exec sidekiq \ -e $RACK_ENV \ -P $SIDEKIQ_PID \ -C $SIDEKIQ_CONFIG \ -L $SIDEKIQ_LOG \ -d" $EB_APP_USER "/opt/elasticbeanstalk/hooks/appdeploy/pre/03_mute_sidekiq.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash . /opt/elasticbeanstalk/support/envvars EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user) EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir) EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_dir) . $EB_SUPPORT_DIR/envvars . $EB_SCRIPT_DIR/use-app-ruby.sh SIDEKIQ_PID=$EB_APP_PID_DIR/sidekiq.pid if [ -f $SIDEKIQ_PID ] then su -s /bin/bash -c "kill -USR1 `cat $SIDEKIQ_PID`" $EB_APP_USER fi

.ebextensions/50_sidekiq_permissions.config

# Set permissions for files accessed by Sidekiq files: "/opt/elasticbeanstalk/hooks/appdeploy/post/51_chmod_logs.sh": mode: "000755" owner: root group: root content: | #!/usr/bin/env bash . /opt/elasticbeanstalk/support/envvars EB_APP_DEPLOY_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_deploy_dir) APP_LOG_DIR=$EB_APP_DEPLOY_DIR/log SIDEKIQ_LOG=$APP_LOG_DIR/sidekiq.log case $RACK_ENV in "integration") RAILS_LOG=$APP_LOG_DIR/integration.log ;; "staging") RAILS_LOG=$APP_LOG_DIR/staging.log ;; "production") RAILS_LOG=$APP_LOG_DIR/production.log ;; esac touch $SIDEKIQ_LOG chmod 0664 $SIDEKIQ_LOG touch $RAILS_LOG chmod 0664 $RAILS_LOG

試したこと

下記参考記事をもとにEB設定ファイルを作成し実行した

https://openclassrooms.com/en/courses/4567631-deploy-rails-applications/4794886-configure-elastic-beanstalk-to-run-sidekiq

https://wiki.lyrasis.org/display/~elr37/Set+up+Sidekiq+for+Rails+app+on+AWS+Elastic+Beanstalk

どんな些細なことでも構いませんのでご指摘頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/opt/elasticbeanstalk/hooks/はAmazon Linux 2のElastic Beanstalk環境では廃止されています。

プロジェクトの.platform/hooks/以下に置いたスクリプトが、状況に合わせて実行されるようになっています。

Elastic Beanstalk Linux プラットフォームの拡張(AWS公式)

投稿2021/01/27 03:44

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pandama09396862

2021/01/27 04:17

なるほど、、丁寧に教えて頂き本当にありがとうございます。 ということは環境変数の呼び方を考えなきゃですね。。 ベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問