この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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'
追加できました。
実験: 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
パラメータストアを確認する
同じ値のため、更新自体は行われませんでした。
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
パラメータストアを確認する
変更されていました!!
さいごに
パラメータストアの値を手動からCloudFormation管理に変えてみました。 初回デプロイ時に手動設定するのは大変なので、最初からCloudFormationなどで管理しておくと楽ですね。