LoginSignup
17
15

More than 5 years have passed since last update.

CloudFormationを使ってSystems Managerのパラメータストアの値を登録し、取得する

Last updated at Posted at 2018-10-07

はじめに

本記事では、AWS CloudFormationを使って、Systems Managerのパラメータストアの値を登録し、取得する手順を説明しています。(初心者向け)

本記事で掲載しているテンプレートの最新版は、下記に置いてます。
https://github.com/okubo-t/aws-cloudformation

Systems Manager パラメータストアとは

Key/Value形式のパラメータを、AWSで集中管理する機能です。

参考

AWS Systems Manager パラメータストア

Systems Managerのパラメータストアに値を登録する

Stringタイプのパラメータを登録する

参考

Using AWS Systems Manager Parameter Store Secure String parameters in AWS CloudFormation templates

CloudFormationを使ってSystems ManagerのパラメータストアのStringタイプのパラメータを登録する場合のスタックのサンプルテンプレート

ssm-sample-parm-01.yml
AWSTemplateFormatVersion: "2010-09-09"
Description:
  SSM Parameter Create

# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------# 
Parameters:
  MasterUserName:
    Type: String
    NoEcho: true
    MinLength: 1
    MaxLength: 16
    AllowedPattern: "[a-zA-Z][a-zA-Z0-9]*"
    ConstraintDescription: "must begin with a letter and contain only alphanumeric characters."

# ------------------------------------------------------------#
#  SSM Parameter
# ------------------------------------------------------------#
Resources:
  Parameter:
    Type: "AWS::SSM::Parameter"
    Properties:
      Name: "MasterUsername"
      Type: "String"
      Value: !Ref MasterUserName
      Description: "MasterUsername for RDS"

AWS CLIを使って登録する場合のサンプルコマンド

aws ssm put-parameter --name MasterUsername --type String --value "MasterUsername"

Secure Stringタイプのパラメータを登録する

CloudFormationを使ってSystems ManagerのパラメータストアのSecure Stringタイプのパラメータの登録は、まだサポートされていません。(2018/10/6時点)

AWS CLIを使って登録する場合のサンプルコマンド

aws ssm put-parameter --name MasterUserPassword --type SecureString --value "MasterUserPassword"

Systems Managerのパラメータストアの値を取得する

ここでは、動的参照の機能を使用して、パラメータストアの値を取得します。

参考:
Using Dynamic References to Specify Template Values

スタックテンプレートに指定するパラメータの動的参照は、次のパターンに従って設定します。

ssm動的参照の場合

{{resolve:ssm:parameter-name:version}}

ssm-secure動的参照の場合

{{resolve:ssm-secure:parameter-name:version}}

※パラメータ名では大文字と小文字は区別されます。

スタックテンプレートには、下記のように組み込みます。

Resources:
  DBInstance:
    Type: "AWS::RDS::DBInstance"
    Properties: 

      MasterUsername: "{{resolve:ssm:MasterUsername:1}}"
      MasterUserPassword:  "{{resolve:ssm-secure:MasterUserPassword:1}}"

      DBInstanceIdentifier: !Ref DBInstanceIdentifier
      Engine: MySQL
      EngineVersion: 5.7
      DBInstanceClass: !Ref DBInstanceClass
      AllocatedStorage: 100
      StorageType: gp2
      DBName: !Ref DBName

## 以下 省略
17
15
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
17
15