CloudFormation の「Parameter validation failed: parameter value 'abc' for parameter name 'ABC' does not exist」(パラメータの検証に失敗しました: パラメータ名「ABC」のパラメータ値「abc」が存在しません) というエラーを解決する方法を教えてください。

所要時間2分
0

AWS CloudFormation スタックを作成または更新すると、「Parameter validation failed: parameter value 'abc' for parameter name 'ABC' does not exist」(パラメータの検証に失敗しました: パラメータ名「ABC」のパラメータ値「abc」が存在しません) というエラーが表示されます。 このエラーの解決方法を教えてください。

簡単な説明

AWS CloudFormation は、CloudFormation テンプレートで使用されているパラメータの 1 つが AWS 固有のパラメータタイプである場合に、「parameter validation failed」(パラメータの検証に失敗しました) エラーを返します。

このエラーは、AWS 固有のパラメータを以下のように使用すると発生することがあります。

  • スタックの作成時に AWS リージョンまたはアカウントに存在しない値を渡すために使用する。
  • リソースのプロパティとして使用し、スタックの更新中にリソースを更新する前に、この値を帯域外で削除する。
  • 子スタックのパラメータとして使用する。このエラーは、親スタックから渡された子スタックの値がパラメータタイプと一致しない場合に発生します。このエラーは、パラメータのリソースがそのリージョンのアカウントに存在しない場合にも発生します。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

スタックを作成する

1.    AWS CloudFormation コンソールを開きます。

2.    ナビゲーションペインで、[スタック] をクリックします。

3.    [Stack name] (スタック名) 列から、失敗したスタックを選択します。

4.    [パラメータ] タブを選択します。

5.    [Key] (キー) 列で、abc の値を持つ ABC パラメータを検索します。

6.    スタックの作成に使用されるテンプレートの [Parameters] (パラメータ) セクションを確認して、リソース abc が AWS 固有のパラメータタイプと一致することを確認します。

7.    ABC パラメータの abc リソースがリージョンまたはアカウントに存在することを確認します。リソースを記述するには、AWS マネジメントコンソールまたは AWS CLI コマンドを使用します。リソースに適したコマンドを見つけるには、「リソースの describe コマンドを見つける」のセクションを参照してください。

注: 例えば、AWS::EC2::VPC::Id のパラメータタイプを使用する場合、リソースの Amazon Virtual Private Cloud (Amazon VPC) コンソールを確認します。

8.    ABC が子スタックのパラメータである場合、abc の値を渡す必要があります。オプション A またはオプション B を選択します。

(オプション A) 親スタックの別のリソースを参照する場合は、このリソースが、子スタックで使用されている AWS 固有のパラメータタイプと一致することを確認します。

注: 例えば、パラメータタイプ AWS::EC2::Subnet::Id (サブネット) を使用し、リソースタイプ AWS::EC2::VPC を参照すると、スタックは失敗します。

(オプション B) abc 値が親スタックから直接渡される場合は、ABC パラメータの abc リソースがリージョンまたはアカウントに存在することを確認します。リソースを記述するには、AWS マネジメントコンソールまたは AWS CLI コマンドを使用します。リソースに適したコマンドを見つけるには、「リソースの describe コマンドを見つける」のセクションを参照してください。

例えば、子スタックの次の List パラメータを考えてみます。

"SecurityGroups": {
    "Description": "List of security group IDs for the instances",
    "Type": "List<AWS::EC2::SecurityGroup::Id>"
}

パラメータの値は、親スタックから渡されます。以下はその例です。

"ChildStack" : {
 "Type" : "AWS::CloudFormation::Stack",
 "Properties" : {
    "Parameters":{
      "KeyPair" : { "Ref": "KeyPair" },
      "ImageID" : { "Ref": "ImageID" },
      "InstanceType" : { "Ref": "InstanceType" },
      "SecurityGroups" : { "Ref": "SecurityGroup" }
    }

重要: 前の例では、SecurityGroup パラメータに渡されるセキュリティグループ ID の値がリージョンまたはアカウントに存在することを確認します。

9.    リージョンまたはアカウントに存在し、AWS 固有のパラメータタイプに一致するパラメータの有効な値を持つ新しいスタックを作成します。

スタックを更新する

スタックの更新が失敗すると、CloudFormation は変更をロールバックします。これは、AWS CloudFormation コンソールで更新されたパラメータ値が表示されないことを意味します。

更新中に ABC パラメータの値を変更する必要があります。値を変更しない場合、abc という名前または PhysicalID を持つリソースが、アウトオブバンドでアカウントから削除される可能性があります。

1.    リソースが存在することを確認するには、AWS マネジメントコンソールまたは AWS CLI コマンドを使用してリソースを記述します。リソースに適したコマンドを見つけるには、「リソースの describe コマンドを見つける」のセクションを参照してください。

2.    ABC パラメータを更新してスタックを更新する場合は、前述の「スタックを作成する」セクションのステップ 6、7、および 8 に従います。

3.    ABC パラメータに有効な値を渡して、スタックを更新します。

リソースの describe コマンドを見つける

次のように、リソースに適したコマンドを選択します。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ