LoginSignup
5
0

More than 3 years have passed since last update.

RubyでSSM Parameter StoreとSecrets Managerを使う

Posted at

何がわかるか

シークレット情報などを保存するためのSSM Parameter StoreとSecrets Managerについて

AWSCLIでシークレットを作成し、RubyやRailsなどのアプリケーションで簡単に取得する方法を書きたいと思います。

ちなみにParameter Storeは条件付きで無料で使えて、Secrets Managerは最初から有料みたいです。

また、Parameter StoreはKMSを使用する場合は有料になります。
AWSのParameter StoreとSecrets Manager、結局どちらを使えばいいのか?比較

環境

Ruby: 2.5.7

aws-cli: 2.0.7

前提

  • aws-cliをinstallしていること
  • IAMユーザにParameter StoreとSecrets Managerの必要な権限(createとget)が備わっていること

SSM Parameter Store

gemを入れてbundle install

gem 'aws-sdk-ssm'

aws-cliでparameterを作成します

$ aws ssm put-parameter --name "<パラメータ名>" --type String --value "<パラメータの値>"

暗号化したい場合はtypeをSecureStringにしてください。--keyでkmsキーを指定することもできます。

あと、上書きしたい場合は--overwriteを付けるだけで大丈夫です。

moduleの作成

parameter_store.rb

require 'aws-sdk-ssm'

AWS_REGION = '<リージョンを入れる>'

module ParameterStore
  def self.request(name)
    client = Aws::SSM::Client.new(region: AWS_REGION)
        # KMSで暗号化している場合はwith_decryption: true
    client.get_parameter({ name: name, with_decryption: false })
  end
end

後は取得するだけです

# 生rubyの場合
require 'parameter_store.rb'

parameter = ParameterStore.request('/hoge')
puts parameter
#=> "<値>"

Secrets Manager

gemを入れてbundle install

gem 'aws-sdk-secretsmanager'

aws-cliでsecretを作成します

$ aws secretsmanager create-secret --name "<シークレット名>" --description "<説明>" --secret-string "<シークレットの値>"

moduleの作成

secrets_manager.rb
require 'aws-sdk-secretsmanager'

AWS_REGION = '<リージョンを入れる>'

module SecretsManager
  def self.request(secret_name)
    client = Aws::SecretsManager::Client.new(region: AWS_REGION)
    get_secret_value_response = client.get_secret_value(secret_id: secret_name)
    get_secret_value_response.secret_string
  end
end

後は取得するだけです

# 生rubyの場合
require 'secrets_manager.rb'

secret = SecretsManager.request('/hoge')
puts secret
#=> "<値>"

まとめ

簡単に導入できるので試してみてください!

5
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
5
0