2017-04-18 73 views
0

私たちのCFテンプレートの一部を更新し、それが参照するスタックを更新しようとしていました。いくつかのデフォルト値を追加してCloudWatchアラームを追加し、m4.xlargeからm4.largeにインスタンスをダウングレードする予定です。更新スタックw。 "置換:条件付き";それは置き換えますか?

私は既にEC2-GUIのインスタンスをダウングレードしており、うまくいっています。私は元のテンプレート、すなわちm4.xlargeのようにデフォルト状態に戻しました。 しかし、instancetypeのテンプレートのデフォルト値を変更すると、変更されたテンプレートをCloudFormationにアップロードしても反映されません。 デフォルト値はまだm4.xlargeなので、テンプレートに指定されているようにm4.largeを選択するにはドロップダウンメニューを使用する必要があります。

instancetypeを変更しないと、私は "Replacement:False"と表示されますが、instancetypeを更新すると "Replacement:Conditional"と表示されます。

私は「詳細は」私が見る「チェンジ詳細」の下でより多くを読み、そして場合:

[ 
    { 
    "resourceChange": { 
     "logicalResourceId": "CPUAlarm", 
     "action": "Add", 
     "physicalResourceId": null, 
     "resourceType": "AWS::CloudWatch::Alarm", 
     "replacement": null, 
     "details": [], 
     "scope": [] 
    }, 
    "type": "Resource" 
    }, 
    { 
    "resourceChange": { 
     "logicalResourceId": "myInstanceName", 
     "action": "Modify", 
     "physicalResourceId": "<masked>", 
     "resourceType": "AWS::EC2::Instance", 
     "replacement": "Conditional", 
     "details": [ 
     { 
      "target": { 
      "name": null, 
      "requiresRecreation": "Never", 
      "attribute": "Tags" 
      }, 
      "causingEntity": null, 
      "evaluation": "Dynamic", 
      "changeSource": "DirectModification" 
     }, 
     { 
      "target": { 
      "name": null, 
      "requiresRecreation": "Never", 
      "attribute": "Tags" 
      }, 
      "causingEntity": "Project", 
      "evaluation": "Static", 
      "changeSource": "ParameterReference" 
     }, 
     { 
      "target": { 
      "name": null, 
      "requiresRecreation": "Never", 
      "attribute": "Tags" 
      }, 
      "causingEntity": null, 
      "evaluation": "Static", 
      "changeSource": null 
     }, 
     { 
      "target": { 
      "name": "InstanceType", 
      "requiresRecreation": "Conditionally", 
      "attribute": "Properties" 
      }, 
      "causingEntity": "InstanceType", 
      "evaluation": "Static", 
      "changeSource": "ParameterReference" 
     }, 
     { 
      "target": { 
      "name": "InstanceType", 
      "requiresRecreation": "Conditionally", 
      "attribute": "Properties" 
      }, 
      "causingEntity": null, 
      "evaluation": "Dynamic", 
      "changeSource": "DirectModification" 
     } 
     ], 
     "scope": [ 
     "Properties", 
     "Tags" 
     ] 
    }, 
    "type": "Resource" 
    }, 
    { 

それでは、私が見ることができることはつまり: 「名前」:「InstanceType」、「requiresRecreation」: "条件付き "は、より制限的な値を持つ唯一の値であるため、スタック全体が「置換:条件付き」になります。

AWSごとに: "AWS CloudFormationは、変更セットを実行した後にのみ値を判断することができます。AWS CloudFormationは、動的評価としてこれらの変更をラベル付けします。たとえば、条件付きで置き換えられた更新されたリソースAWS CloudFormationでは、更新されたリソースへの参照が変更されるかどうかを判断できません。

出典: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-samples.html#using-cfn-updating-stacks-changesets-samples-directly-editing-a-template

私の知る限り「交換:条件」正しい、すなわち、順番に、関連のSGなどを変更するために私を強制的にそれはまた、それをしないかもしれない新しいphysicalResourceIDを作成するリソースを置き換える「かもしれませんか」?

ご協力いただきありがとうございます。

答えて

0

CloudFormation経由で作成されたCloudFormation以外のリソースを変更することは、一般的にはお勧めできません。あなたの最後の質問のために、Replacement: Conditionalは、正確に何をしようとしているかに基づいてリソースを置き換える必要があるかもしれません。 などの疑問があるときはいつでも、AWS CloudFormationのドキュメントを見ると便利です。

  • アップデートが必要です:
  • アップデートが必要とアマゾンEBSでバックアップされたインスタンスのためのいくつかの中断:EC2インスタンスの編集インスタンスタイプのあなたの特定のシナリオでは、ここではどのようなドキュメントの状態のインスタンスstore-用交換バックアップされたインスタンス

参考:http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-instancetype

関連する問題