#はじめに
本記事では、AWS CloudFormationを使って、Systems Managerのパラメータストアの値を登録し、取得する手順を説明しています。(初心者向け)
本記事で掲載しているテンプレートの最新版は、下記に置いてます。
https://github.com/okubo-t/aws-cloudformation
#Systems Manager パラメータストアとは
Key/Value形式のパラメータを、AWSで集中管理する機能です。
####参考
[AWS Systems Manager パラメータストア]
(https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-paramstore.html)
#Systems Managerのパラメータストアに値を登録する
###Stringタイプのパラメータを登録する
####参考
[Using AWS Systems Manager Parameter Store Secure String parameters in AWS CloudFormation templates]
(https://aws.amazon.com/jp/blogs/mt/using-aws-systems-manager-parameter-store-secure-string-parameters-in-aws-cloudformation-templates/)
CloudFormationを使ってSystems ManagerのパラメータストアのStringタイプのパラメータを登録する場合のスタックのサンプルテンプレート
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]
(https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/dynamic-references.html)
スタックテンプレートに指定するパラメータの動的参照は、次のパターンに従って設定します。
###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
## 以下 省略