0
0

RailsアプリケーションでAWS Parameter Storeを使用する方法

Last updated at Posted at 2024-08-15

AWS Parameter Storeは、アプリケーションの設定値や機密情報を安全に管理するための便利なサービスです。
この記事では、Railsアプリケーションのproduction環境設定でAWS Parameter Storeの値を使用する方法について説明します。

前提条件

  • AWSアカウントがあること
  • AWS CLIが設定されていること or EC2などに適切なロールが割り当てられていること
  • Railsプロジェクトがあること

1. AWS SDKのセットアップ

まず、AWS SDKをプロジェクトに追加します。Gemfileに以下を追加し、bundle installを実行します。

gem 'aws-sdk-ssm'

2. パラメータ取得用のヘルパーメソッド

次に、AWS Parameter Storeから値を取得するためのヘルパーメソッドを作成します。config/application.rbに以下のコードを追加します。

require 'aws-sdk-ssm'

module ParameterStoreHelper
  def fetch_parameter(name)
    ssm_client = Aws::SSM::Client.new(region: 'your-aws-region')
    response = ssm_client.get_parameter(name: name, with_decryption: true)
    response.parameter.value
  rescue Aws::SSM::Errors::ParameterNotFound
    nil
  end
end

class Application < Rails::Application
  # 既存の設定...
  
  extend ParameterStoreHelper
end

3. production.rbでの使用

config/environments/production.rbで、AWS Parameter Storeから取得した値を設定に使用します。

Rails.application.configure do
  # 既存の設定...

  config.secret_key_base = Rails.application.fetch_parameter('/your_app/production/secret_key_base')
  
  config.action_mailer.smtp_settings = {
    address: Rails.application.fetch_parameter('/your_app/production/smtp_address'),
    port: Rails.application.fetch_parameter('/your_app/production/smtp_port'),
    user_name: Rails.application.fetch_parameter('/your_app/production/smtp_username'),
    password: Rails.application.fetch_parameter('/your_app/production/smtp_password')
  }

  # その他の設定...
end

注意点

  • IAMロールの設定
    • EC2インスタンスやECSタスクに適切なIAMロールを割り当て、Parameter Storeへのアクセス権限を付与する必要があります。
  • パフォーマンスへの影響
    • 起動時にParameter Storeから値を取得するため、アプリケーションの起動時間が若干長くなる可能性があります。
  • エラーハンドリング
    • パラメータが見つからない場合のエラーハンドリングを適切に行うことが重要です。
  • 環境変数との併用
    • 一部の設定は環境変数で、機密性の高い情報はParameter Storeで管理するなど、柔軟に組み合わせることができます。
    • この方法を使用することで、AWSのParameter Storeに保存された値をRailsのproduction環境設定で安全に利用できます。
    • セキュリティと設定管理の両面で有効な手法です。

これで、RailsアプリケーションでAWS Parameter Storeを使用する準備が整いました。
ぜひ試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0