2017-10-04 6 views
0

AWSはVPC用のipv6 CIDRブロックを生成しますので、事前に決定することはできません。生成されたCIDRブロックは次のようになります。2a05:d018:84c:c500::/56となり、サイズは常に56です。VPCでサブネットを作成するときのAWSの雲情報のipv6 CIDRブロックプレフィックスの決定方法

サブネットを作成するときは、完全な接頭辞を使用してサイズ64ブロックを指定する必要があります。例えば。 2a05:d018:84c:c501::/64

VPCのipv6 CIDRブロックを輻輳情報で検索することは可能ですが、プレフィックスだけでなく、完全な値が返されます。サブネットを作成するには、プレフィックスに01::/64の何かを追加して、サブネット用の64サイズのブロックを作成する必要があります。

ラムダ関数を使用するソリューションを見たことがありますが、これはテンプレートを非常に複雑にします。私はテンプレートで利用可能なビルトイン組み込み関数を使用してこれをやりたいと思います。

同じスタックにipv6サブネットを持つVPCを配備する場合、サブネットの有効なipv6 CIDRブロックをどのように生成できますか?

答えて

1

ここでYAMLの最初のサブネットを計算する方法です:

Fn::Sub: 
    - "${VpcPart}${SubnetPart}" 
    - SubnetPart: 01::/64 
     VpcPart: !Select [0, !Split ['00::/56', !Select [0,!GetAtt YourVpc.Ipv6CidrBlocks]]] 
+0

これは非常にクリーンなソリューションです。ありがとうございました! –

1

プレフィックスを取得するには、Fn::Split00::/56)とFn::Selectの組み合わせを使用します。次に、Fn::Joinを使用して、独自の値を追加してサブネットCIDRブロックを作成できます。次の例では、1つ以上のIpv6 CIDRブロックが関連付けられたVPCがあると想定しています。

この値は、サブネット上のIpv6CidrBlockプロパティに使用します。

{ 
    "Fn::Join": [ 
     "", 
     [ 
      { 
       "Fn::Select": [ 
        0, 
        { 
         "Fn::Split": [ 
          "00::/56", 
          { 
           "Fn::Select": [ 
            0, 
            { 
             "Fn::GetAtt": [ 
              "Vpc", 
              "Ipv6CidrBlocks" 
             ] 
            } 
           ] 
          } 
         ] 
        } 
       ] 
      }, 
      "01::/64" 
     ] 
    ] 
} 
関連する問題