PHPでSSMパラメータストアを読み書きする

AWS Systems Manager(SSM)パラメータストアを使うとAWS上のキーバリューストアに文字列データや暗号化したデータを保存できます。



DynamoDBやS3を使うより手軽にシステムパラメータを管理することができます。

このSSMパラメータストアをAWS SDKを使って読み書きしてみます。
SDKのリファレンスはこちら。

ComposerでSDKをインストールします。
>composer require aws/aws-sdk-php
インストールしたフォルダにindex.phpを作成します。
<?php
require 'vendor/autoload.php';

use Aws\Ssm\SsmClient;
use Aws\Ssm\Exception\SsmException;

$access_key = '********************';
$secret_access_key = '*******************************';

$client = new SsmClient([
    'credentials' => [
        'key'       => $access_key,
        'secret'    => $secret_access_key,
    ],
    'region' => 'ap-northeast-1',
    'version' => '2014-11-06',
]);

$key = "";
$value = "";

if(!empty($_POST)){
    // get parameter
    if(isset($_POST['get'])){
        $key    = $_POST['key'];

        try {
            $result = $client->getParameter([
                'Name' => $key,
                'WithDecryption' => false,
            ]);

            $value = $result['Parameter']['Value'];
        } catch (SsmException $e) {
            echo $e->getMessage();
        }

    // put parameter
    }elseif(isset($_POST['put'])){
        $key    = $_POST['key'];
        $value    = $_POST['value'];

        try {
            $result = $client->putParameter([
                'Name' => $key,
                'Overwrite' => true,
                'Tier' => 'Standard',
                'Type' => 'String',
                'Value' => $value,
            ]);

        } catch (SsmException $e) {
            echo $e->getMessage();
        }
    }
}
?>

<html>
    <body>
        <form method="post">
            <p><input name="key" type="text" value="<?= $key ?>" placeholder="key"/></p>
            <p><textarea rows="5" cols="100" name="value" placeholder="value"><?= $value ?></textarea></p>
            <input name="get" type="submit" value="get parameter"/>
            <input name="put" type="submit" value="put parameter"/>
        </form>
    </body>
</html>
アクセスキーとシークレットアクセスキーには、SSMへのアクセス権をもったクレデンシャルを設定しましょう。

実行するとこんな感じでパラメータの読み書きができます。