Systems Manager Parameter Store からプレーンテキスト値を取得する - AWS CloudFormation

Systems Manager Parameter Store からプレーンテキスト値を取得する

CloudFormation テンプレートを作成する際には、Parameter Store に保存されているプレーンテキスト値を使用することをお勧めします。パラメータストアは AWS Systems Manager の一機能です。Parameter Store の概要については、「AWS Systems Manager ユーザーガイド」の「AWS Systems Manager Parameter Store」を参照してください。

テンプレート内で Parameter Store のプレーンテキスト値を使用するには、ssm 動的リファレンスを使用します。この参照では、Parameter Store のタイプ String または StringList のパラメータの値にアクセスできます。

スタック操作で使用する ssm 動的参照のバージョンを確認するには、スタック操作の変更セットを作成します。次に、[テンプレート] タブで処理済みテンプレートをレビューします。詳細については、CloudFormation スタックの変更セットを作成するおよびCloudFormation スタックの変更セットを表示するを参照してください。

ssm 動的参照を使用する場合、留意すべき重要な点がいくつかあります。

  • CloudFormation は、動的参照でのドリフト検出をサポートしていません。パラメータのバージョンを指定していない ssm 動的参照の場合、Systems Manager でパラメータのバージョンを更新する際は、最新バージョンのパラメータに変更するために、ssm 動的参照を含むすべてのスタックでスタックの更新オペレーションも実施することをお勧めします。

  • CloudFormation テンプレートの Parameters セクションで ssm 動的参照を使用するには、バージョン番号を含める必要があります。CloudFormation では、このセクションのバージョン番号なしで Parameter Store 値を参照することはできません。あるいは、テンプレートで Systems Manager パラメータタイプとしてパラメータを定義することもできます。これを行う際には、Systems Manager パラメータキーを、パラメータのデフォルト値として指定できます。その後、バージョン番号を指定しなくても、CloudFormation は Parameter Store から最新バージョンのパラメータ値を取得します。これにより、テンプレートをよりシンプルかつ簡単にメンテナンスできます。詳細については、「CloudFormation が提供するパラメータタイプを使用して、実行時に既存のリソースを指定する」を参照してください。

  • カスタムリソースの場合、CloudFormation はリクエストをカスタムリソースに送信する前に ssm の動的参照を解決します。

  • CloudFormation は、別の AWS アカウント から共有されたパラメータを参照する際の動的参照の使用をサポートしません。

  • CloudFormation は、動的参照での Systems Manager パラメータラベルの使用をサポートしません。

アクセス許可

Systems Manager パラメータストアに保存されているパラメータを指定するには、指定されたパラメータに対して GetParameters を呼び出すためのアクセス許可が必要です。特定の Systems Manager パラメータへのアクセスを提供する IAM ポリシーを作成する方法については、「AWS Systems Manager ユーザーガイド」の「IAM ポリシーを使用して Systems Manager パラメータへのアクセスを制限する」を参照してください。

リファレンスパターン

CloudFormation テンプレートで Systems Manager Parameter Store に保存されているプレーンテキスト値を参照するには、次の ssm 参照パターンを使用します。

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

参照は、parameter-name と version について、以下の正規表現パターンに従う必要があります。

{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}
parameter-name

パラメータストア内のパラメータの名前。パラメータ名では大文字と小文字が区別されます

必須。

version

使用するパラメータのバージョンを指定する整数。正確なバージョンを指定しない場合、CloudFormation は、スタックを作成または更新するたびに最新バージョンのパラメータを使用します。詳細については、「AWS Systems Manager ユーザーガイド」の「パラメータバージョンの使用」を参照してください。

オプション。

次の例は、Parameter Store に保存されているカスタム AMI ID を参照する EC2 起動テンプレートを作成します。動的参照は、起動テンプレートからインスタンスが起動されると golden-ami パラメータの 2 から AMI ID を取得します。

JSON

{ "Resources": { "MyLaunchTemplate": { "Type": "AWS::EC2::LaunchTemplate", "Properties": { "LaunchTemplateName": { "Fn::Sub": "${AWS::StackName}-launch-template" }, "LaunchTemplateData": { "ImageId": "{{resolve:ssm:golden-ami:2}}", "InstanceType": "t2.micro" } } } } }

YAML

Resources: MyLaunchTemplate: Type: AWS::EC2::LaunchTemplate Properties: LaunchTemplateName: !Sub ${AWS::StackName}-launch-template LaunchTemplateData: ImageId: '{{resolve:ssm:golden-ami:2}}' InstanceType: t2.micro