0

私は、IsSSL = HTTPS/HTTPの条件でELBを作成しようとしています。
HttpS = 443、HttP = 80。HTTPSとHTTPの両方でconditonsforのAWS ELB cloudformation

上記の値は、変数としてyamlファイルから渡されます。

条件が真の場合、Fn :: If条件を使用して、それぞれのロード・バランサ・ポートを選択する必要があります。しかし、スタックを構築するときにエラーが表示され、以下のサブネットセクションが正常に機能します。これに関する助け?

エラー:プロパティloadbalancerportの値String型でなければなりません

Conditions: 
    IsSSl: 
     'Fn::Equals': 
     - $(IsSSL) 
     - HTTPS 

    RsbatchELB: 
     DependsOn: RsbatchELBSecurityGroup 
     Type: 'AWS::ElasticLoadBalancing::LoadBalancer' 
     Properties: 
     Listeners: 
      - LoadBalancerPort: 
       - 'Fn::If': 
        - IsSSL 
        - $(HttpS) 
        - $(HttP) 
     Subnets: 
      - 'Fn::If': 
       - IsPublicELB 
       - $(publicSubnet-a) 
       - $(private-subnet-a) 
      - 'Fn::If': 
       - IsPublicELB 
       - $(publicSubnet-b) 
       - $(private-subnet-b) 

答えて

0

あなたはその浮遊-LoadBalancerPortリストを渡しています。代わりにこれを試してください:

Listeners: 
    - LoadBalancerPort: 
     'Fn::If': 
     - IsSSL 
     - $(HttpS) 
     - $(HttP) 
0

あなたの例がありAWS Condition Functions documentation

と一致しない組み込み関数の構文を使用しているようだ、それはこの構文を述べている:

Syntax for the full function name:

Fn::If: [condition_name, value_if_true, value_if_false] 

Syntax for the short form:

!If [condition_name, value_if_true, value_if_false] 

試してみてください。

- LoadBalancerPort: 
    - !If [IsSSL, !Ref HttpS, !Ref HttP] 
関連する問題