インフラ

パラメータストアの使い方 AWS SDK for PHPで.envを管理してみる

php sdk ssm

こんにちは、ちゃりおです。

現在、「.env」の管理がいけていなくて、なんとかしたい気持ちがあります。
SSM パラメータストアが良さそうだったので、さわってみました。

ちゃりお
ちゃりお
パラメータストアについてです!

Contents

パラメータストアとは

AWS Systems Manager パラメータストア は、設定データ管理と機密管理のための安全な階層型ストレージを提供します。パスワード、データベース文字列、ライセンスコードなどのデータをパラメータ値として保存することができます。値はプレーンテキストまたは暗号化されたデータとして保存できます。次に、パラメータの作成時に指定した一意の名前を使用して値を参照できます。スケーラビリティ、可用性、耐久性に優れた パラメータストア は、AWS クラウドによってサポートされています。

設定データを管理できるサービスです。
無料で使えます。

公式ドキュメント AWS Systems Manager パラメータストア

ハンズオン

パラメータストアに値を保存・取得をやってみます。

「AWS SDK for PHP」を使います。
aws cliでもできるのですが、「AWS SDK for PHP」使ったことなかったので勉強がてらやってみます。

今回はローカルでやります。

前提条件

  • ssmを操作可能なIAMユーザがあること(ec2でやる場合は、適切なIAMロールを割り当てる)
  • php,composerがインストールされていること
  • aws cliがインストールされていること

環境変数にアクセスキー等必要な情報を設定する

ec2などでIAMロール使う場合は、この手順は不要です。
ローカルでやるので、アクセスキーとかを環境変数に設定します。

$ export AWS_ACCESS_KEY_ID=xxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxxx
$ export AWS_SESSION_TOKEN=xxxxxxxxxx(必要があれば)

公式ドキュメント 環境変数からの認証情報の使用

AWS SDK for phpをインストールする

composerで「AWS SDK for php」をインストールします。

composer require aws/aws-sdk-php

公式ドキュメント AWS SDK for PHP バージョン 3 のインストール

パラメータストアに値を設定

パラメータストアに値を設定します。

下記のコマンドで、
「/MyService/Test/MaxConnections」に「100」
「/MyService/Test/my-password」に「p#sW*rd33」を設定しています。

$ aws ssm put-parameter --name "/MyService/Test/MaxConnections" --value 100 --allowed-pattern "\d{1,4}" --type String
$ aws ssm put-parameter --name "/MyService/Test/my-password" --value "p#sW*rd33" --allowed-pattern ".{8,20}" --type SecureString

階層構造は、「サービス名/環境/パラメータ」のようにしておくのが良さそうです。
(環境ごとに変えたいと思うので)

AWS SDK for phpで値を取得してみる

「/MyService/Test/」配下のパラメータを取得して、「.env」に出力するスクリプトを作ってみました。
この程度のことやるなら、シェルスクリプトで良さそうです。

出力結果 .env

MaxConnections=100
my-password=p#sW*rd33

まとめ

パラメータストアを触ってみました。

今回のように、「.env」に吐き出すと
サーバにログインできるユーザからは見れてしまいます。

しかし、「.env」に吐き出さないような形にできても
aws cli叩けばみえてしまうしなとも思います。

この辺が悩み中です。

aws saa
AWS初心者が3週間でAWSソリューションアーキテクト(SAA)を取った勉強法こんにちは、ちゃりお(@chari7311)です! 以前社内の事情でAWSソリューションアーキテクトを3週間で取るよう言われました。 ...
aws dev
業務で開発経験なしでも取れるAWS 認定デベロッパーアソシエイトの勉強法こんにちは、ちゃりおです。 AWS 認定デベロッパー – アソシエイトの勉強法についてまとめてみます。 私は、普段インフラを主にやっ...
Ansibleでamazon-extrasを使ってphpをインストールするこんにちは、ちゃりおです。 今回は、amazon-extras(amazonが管理しているパッケージ群)を使ってphpをインストールし...

Amazonで「AWS」の本をみてみる!!