AWS Systems Manager Parameter Store に複数のパラメータ値が保存されています。独自の要件に基づいて、これらのパラメータを AWS CloudFormation スタックで動的に使用したいと考えています。
次の解決策では、CloudFormation スタックで複数のパラメーターを動的に使用する方法を示すために、環境の例として Windows と Linux を使用しています。
AWS Systems Manager コンソールを開きます。
ナビゲーションペインで [パラメータストア] を選択します。
Linux または Windows 用の Amazon マシンイメージ (AMI) ID を保存するために、Systems Manager パラメータは String 型で作成します。
Linux:
LinuxAmiId - AMI-Id-for-Linux-resources
または、
Windows:
WindowsAmiId - AMI-Id-for-Windows-resources
注: AMI-Id-for-Linux-resources と AMI-Id-for-Windows-resources は、お使いのリソースの AMI ID に置き換えます。
次の CloudFormation テンプレートの例を使用して、デプロイに使用する AMI を選択するパラメータを作成します。
{ "Parameters": { "AmiToUse": { "Type": "String", "AllowedValues": [ "windows", "linux" ] } }, "Conditions": { "CreateWindowsResources": { "Fn::Equals": [ "windows", { "Ref": "AmiToUse" } ] } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::If": [ "CreateWindowsResources", "{{resolve:ssm:WindowsAmiId:1}}", "{{resolve:ssm:LinuxAmiId:1}}" ] } } } } }
注: 上記のテンプレートでは、AmiToUse が windows に選択されている場合、CreateWindowsResources 条件の評価は true となります。CloudFormation は、WindowsAmiId に保存されている値を使用してAWS::EC2::Instance リソースをプロビジョニングします。Linux の場合、条件は false と評価され、CloudFormation は LinuxAmiId に保存されている値を使用して AWS::EC2::Instance リソースをプロビジョニングします。
ダイナミックリファレンスの詳細については、「ダイナミックリファレンスを使って他のサービスに保存されている値を取得する」を参照してください。
ダイナミックリファレンス