2017-05-05 17 views
1

AWSスタックを雲の形で作成しています。私はEBSボリュームをクラウドフォーメーションの一部として作成し、ブートストラップでEC2に添付しています。輻輳情報でスタックの削除順序を指定する

作成部分が正常に動作します。ただし、スタックを削除している最中に、Cloudformationは最初にEBSボリュームを削除しようとしています。ボリュームがすでに接続されているため、残りのリソースを削除および削除できません。

このため、EBSボリュームは、手動で削除するか、またはdelete stackを再度使用しない限り、そこにとどまっています。

クラウドフォーメーションテンプレートのリソースの削除(のみ)を指定できる方法はありますか?

答えて

0

CloudFormation操作の順序を制御する唯一のメカニズムは、DependsOnです。しかし、それはこの特定の問題を解決しません。

CloudFormation は、ボリュームが取り付けられていることを知らないので、あなたはここで説明する問題が発生します。あなたは私がawsコマンドのようなものになるだろうと仮定しますが、EC2のブートストラップを使用して、説明するように別のメカニズム(、を通してそれを添付例えば、EC2インスタンスユーザデータスクリプト上で)。

代わりに、CloudFormationにボリュームを添付します。そのようにして、CloudFormation は、ボリュームが接続されていることを知っていて、ボリュームを切り離さなければならないことも知っています。

これを行うには、タイプAWS::EC2::VolumeAttachmentのリソースを使用する必要があります。そのためのYAMLスニペットは次のようになり、何かのように:

Resources: 
    MyInstance: 
    Type: AWS::EC2::Instance 
    Properties: 
     ... 
    MyVolume: 
    Type: AWS::EC2::Volume 
    Properties: 
     ... 
    MyVolumeAttachment: 
    Type: AWS::EC2::VolumeAttachment 
    Properties: 
     Device: /dev/sdf 
     InstanceId: !Ref MyInstance 
     VolumeId: !Ref MyVolume 

*Attachmentかなりの数のリソースタイプは、この正確な目的のために、CFNにあります:あなたは、あなたがリソースへのRefを指定CFNがあなたにリソースを添付させていますCFNは「注文」を知っています(つまり、2つのリソースを最初に作成してから接続するか、削除すると最初に切り離してから両方のリソースを削除します)、CFNはプロセス全体を処理できます。

+0

ありがとうございました。 EC2インスタンスの起動は、ASGとLaunch Configurationによって処理されます。その場合、インスタンスID解決をどのように処理できますか? – Srini

+0

@Srini - アップデートいただきありがとうございます。あなたのユースケースを本当に理解するもう1つの質問は、ブートストラップ中にインスタンスによって作成されたASGによって作成された各インスタンスに新しいボリューム(空でもスナップショットからも作成されたボリューム)あるいは、他の場所で作成された "外部"ボリュームのようなもので、単にインスタンスに接続するだけですか?その場合、どのように既存のボリュームIDを取得しますか?これらの質問は、正確なシナリオを理解するのに役立ちます。 –

+0

こんにちは、私はボリュームを作成し、特定の命名形式でタグ付けし、ブートストラップにボリュームを添付するawsコマンドを書いています – Srini

関連する問題