AWS Systems Manager Parameter Store に複数のパラメータ値が保存されています。要件に基づいて、AWS CloudFormation スタックでこれらのパラメータを動的に使用したいと考えています。
簡単な説明
次の解決策では、CloudFormation スタックでさまざまなパラメータを動的に使用する方法を示すために、Microsoft Windows と Linux をサンプル環境として使用します。
重要: 次のコマンドとテンプレートを使用するときは、Windows と Linux をご自身の要件に置き換えてください。
解決方法
1. AWS Systems Manager コンソールを開きます。
2. ナビゲーションペインで、[Parameter Store] (パラメータストア) を選択します。
3. 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 に置き換えてください。
4. 次の 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 リソースをプロビジョニングします。
動的な参照の詳細については、「動的な参照を使用してテンプレート値を指定する」を参照してください。
関連情報
CloudFormation ワークショップ: 動的な参照ラボ