AWS Systems Managerのパラメータストアの値を手動管理からCloudFormation管理に変えてみた

できた! かんたん!
2022.03.29

AWS Systems Managerにパラメータストアがあります。 この管理を手動でやっていたのですが、CloudFormationを使った管理に切り替える実験をしてみました。

  • 変更前: パラメータストアの値を人間が手動で設定する
  • 変更後: パラメータストアの値をCloudFormationで設定する

おすすめの方

  • CloudFormationでSNSトピックを作りたい方
  • CloudFormationでパラメータストアを設定したい方
  • パラメータストアの管理を手動からCloudFormation管理に変えてみたい方

事前準備: パラメータストアに値を手動で追加する

SNSトピックを追加する

適当にSNSトピックを作成し、このトピック名を手動でパラメータストアに設定します。

sns.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: Sample Stack

Resources:
  ReplaceSampleTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: replace-sample-topic

デプロします。

aws cloudformation deploy \
    --template-file sns.yaml \
    --stack-name Replace-Ssm-Sample-Stack \
    --capabilities CAPABILITY_NAMED_IAM

SSMパラメータストアにSNSトピック名を手動で追加する

aws ssm put-parameter \
    --type 'String' \
    --name '/Replace/Sample/SampleTopicName' \
    --value 'replace-sample-topic'

追加できました。

SSMパラメータストアに値を手動で追加した

実験: CloudFormationでパラメータストアの値を設定する

CloudFormationテンプレートを更新して、パラメータストアにSNSトピック名を設定する

sns.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: Sample Stack

Resources:
  ReplaceSampleTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: replace-sample-topic

  ReplaceSampleTopicParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: /Replace/Sample/SampleTopicName
      Type: String
      Value: !GetAtt ReplaceSampleTopic.TopicName

デプロイします。

aws cloudformation deploy \
    --template-file sns.yaml \
    --stack-name Replace-Ssm-Sample-Stack \
    --capabilities CAPABILITY_NAMED_IAM

パラメータストアを確認する

同じ値のため、更新自体は行われませんでした。

SSMパラメータストアの値は更新されない

SNSトピック名を変更して、再デプロイする

sns.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: Sample Stack

Resources:
  ReplaceSampleTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: replace-sample-aaa-topic

  ReplaceSampleTopicParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: /Replace/Sample/SampleTopicName
      Type: String
      Value: !GetAtt ReplaceSampleTopic.TopicName

デプロイします。

aws cloudformation deploy \
    --template-file sns.yaml \
    --stack-name Replace-Ssm-Sample-Stack \
    --capabilities CAPABILITY_NAMED_IAM

パラメータストアを確認する

変更されていました!!

SSMパラメータストアの値が更新された

SSMパラメータストアの値が更新された(履歴)

さいごに

パラメータストアの値を手動からCloudFormation管理に変えてみました。 初回デプロイ時に手動設定するのは大変なので、最初からCloudFormationなどで管理しておくと楽ですね。