2017-10-09 7 views
0

EC2、VPC、S3リソースをプロビジョニングするためのクラウドフォーメーションテンプレートがありますが、そのテンプレートから特定のリソースタイプ(EC2のみなど)のスタックを作成したいとします。 aws cliを使用しましたが、リソースタイプ "AWS :: EC2 :: Instance"が表示されましたが、エラーが発生しましたCreateStackオペレーションを呼び出すときにエラーが発生しました(ValidationError):リソースタイプAWS :: S3 :: BucketパラメータResourceTypes [AWS :: EC2 :: Instance] "で許可されていません。 スタックリソースを賢明に作成するにはどうすればいいですか?aws cloudformテンプレートから特定のリソースタイプのスタックを作成する方法

答えて

0

方法1:

以下に示すようにResourceTypeが呼ばれる入力パラメータを追加します。作成するResource-Typeを入力としてCFNテンプレートに渡します。

Parameters: 
    ResourceType: 
    Description: Resource Types 
    Type: String 
    AllowedValues: 
     - EC2 
     - RDS 
     - VPC 
     - S3 

対応する条件を追加:

Conditions: 
    CheckCreateEC2: 
    Fn::Equals: [ Ref: ResourceType, "EC2" ] 
    CheckCreateRDS: 
    Fn::Equals: [ Ref: ResourceType, "RDS" ] 
    CheckCreateVPC: 
    Fn::Equals: [ Ref: ResourceType, "VPC" ] 
    CheckCreateS3: 
    Fn::Equals: [ Ref: ResourceType, "S3" ] 

そしてそれに応じてリソースタイプとcorressponding条件チェックを作成します。

Resources: 
    MyEC2Instance: 
    Type: AWS::EC2::Instance 
    Condition: CheckCreateEC 
    Properties: 
     . 
     . 
     . 


    MyRDSInstance: 
    Type: AWS::RDS::DBInstance 
    Condition: CheckCreateRDS 
    Properties: 
     . 
     . 
     . 

    MyRDSInstance: 
    Type: AWS::S3::Bucket 
    Condition: CheckCreateRDS 
    Properties: 
     . 
     . 
     . 

この方法であなたはのInputParameter が作成されるように渡すリソース型にcorresspondingのみリソース

方法2:

することはできAWS Nested Stacks。これを使用すると、リソースタイプごとに個別の共通テンプレートを維持できますが、それらの間の依存関係は維持され、スタック全体が作成されます。

この方法は、リソースタイプごとに個別のテンプレートを管理できる場合は、より適しています。これにより、柔軟性と分離性が向上します(特定のリソースタイプの条件/パラメータを変更する必要がある場合は、特定のテンプレートを更新する必要があります)。

+0

ありがとうございました。わかった。 –

関連する問題