AWS APIの1つの値しか許可されない配列
AWS APIの1つの値しか許可されない配列:
CloudFormationでALBを作成していたら、テンプレートの構文で気になるところがあった。
AWS::ElasticLoadBalancingV2::ListenerRuleのPropertyのConditionsのValuesが、配列になってるんですよね。
公式ドキュメントを見ても、Valuesはしっかり
通常は下記のように1つの値を入れるのだけど(実際いままではそうやってしか使っていなかった)、
配列になってるから2つ以上の値もいけるのか?と思って試してみた。
パスパターンを2つ記述したテンプレート
が、ダメ・・・!
Fieldがホストヘッダの場合でもやってみたが、結果は同じ。
公式ドキュメントに"you can specify a single host name", "you can specify a single path pattern"と書いてあるのでダメなんだろうなとは思ってた。
APIのドキュメントのほうも、文字列の配列になっている。
なんで配列なのかなと思って、AWSサポートに問い合わせてみた。
以下回答の抜粋
なるほどなぁと思った(こなみ)
はじめに
CloudFormationでALBを作成していたら、テンプレートの構文で気になるところがあった。
ListenerRuleのConditonsのValues
AWS::ElasticLoadBalancingV2::ListenerRuleのPropertyのConditionsのValuesが、配列になってるんですよね。公式ドキュメントを見ても、Valuesはしっかり
Type: List of String values
って書いてます。Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: Actions: - Actions Conditions: - Field: String Values: - String # 配列になっている ListenerArn: String Priority: Integer
配列になってるから2つ以上の値もいけるのか?と思って試してみた。
listenerRule: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: Actions: - TargetGroupArn: Ref: targetGroup Type: forward Conditions: - Field: path-pattern Values: - hogehuga # パスパターンを記述 ListenerArn: Ref: listener Priority: 1
listenerRule: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: Actions: - TargetGroupArn: Ref: targetGroup Type: forward Conditions: - Field: path-pattern Values: - hogehuga - foobaa # 配列なのでパスパターンを追加してみる ListenerArn: Ref: listener Priority: 1
A condition can only have '1' values (Service: AmazonElasticLoadBalancingV2; Status Code: 400; Error Code: ValidationError; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Fieldがホストヘッダの場合でもやってみたが、結果は同じ。
listenerRule: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: Actions: - TargetGroupArn: Ref: targetGroup Type: forward Conditions: - Field: host-header Values: - hoge.example.com # ホストヘッダの場合でもやってみた - huga.example.com ListenerArn: Ref: listener Priority: 1
APIのドキュメントのほうも、文字列の配列になっている。
Values.member.N The condition value. ~略~ Type: Array of strings Required: No
AWSサポートに問い合わせてみた
なんで配列なのかなと思って、AWSサポートに問い合わせてみた。以下回答の抜粋
> 私が理解できていないだけで、2つ以上の値を設定する場面があったり、その方法があったりするのでしょうか? 現時点では 2 つ以上の値を設定する場面はございません。 配列となっている理由といたしましては、将来的に API の拡張が行われた際に、2 つ以上の値を指定できるように変更される可能性などが考えられます。
コメント
コメントを投稿