何かにアウトプットしながら勉強した方が吸収効率が良い実感がありますので、今日勉強したことを箇条書きで書きます。
ALB リスナーについて
リスナーは設定したプロトコルとポートを使用して接続リクエストをチェックするプロセスのこと。
これはAWSマネジメントコンソールに書いてある文言そのままですが、リスナーとはというのをはっきり定義した文言まだ読んでなかったのですっきりしました。
サブネットによってヘルスチェックの結果が違う
これは単純に自分の知識不足で上手く設定できていないだけだと思いますが、以下のリポジトリを参考に自分のDockerイメージをECSにデプロイしたところ、ap-northeast-1aではヘルスチェックが成功しますがap-northeast-1cでは失敗していました。
CloudFormationのテンプレートをよく読んでみてもアベイラビリティーゾーンによって挙動が変わりそうな設定は見つからず未だに謎です。
引き続き調べます。
GetAtt関数で参照できる項目
上記のリポジトリのCloudFormationテンプレートで以下のように!GetAtt関数でロードバランサーのDNSNameをOutputsに指定しているのですが、
Outputs: LoadBalancerDNS: Description: Domain name for the loadbalancer Value: !GetAtt LoadBalancer.DNSName Export: Name: 'DomainName'
GetAtt関数で参照できる項目ってたぶん決まってるんだろうけどどうやって調べたらいいのかなと思っていろいろ探したら、公式ドキュメントで調べることができるっぽいことがわかりました。 docs.aws.amazon.com
!Refと!ImportValueの使い分け
まだ根拠になるドキュメントは見つかってないですが、参考にしてるテンプレート見る限り同じテンプレート(ymlファイル)内のAWSリソースは!Refで参照できる。別のファイルのリソースのIDを参照する場合は参照元をOutputs:に指定して、参照先で!ImportValueで指定するっぽい。
最初は違いがよくわからずテンプレート読むのに苦戦してまいたがわかってくるとだいぶ読みやすくなりました。
ListenerRuleについて
ALBのListenerRuleは以下のように/*で指定するとどのAPI URLでもリクエストが返ってくることがわかった。ただベストな使い方ではないと思うのでもうちょっと良い設定を調べたいところ。
ListenerRule: Type: AWS::ElasticLoadBalancingV2::ListenerRule Properties: ListenerArn: !ImportValue Listener Priority: 2 Conditions: - Field: path-pattern Values: - /*
CloudWatch
上記のリポジトリにあるCloudFormationテンプレートでリソースにCloudWatchも含まれていて、エラーになったAPIはCloudWatchでログが見れる。
CloudWatchは自分で構築したことがなかったのでこの機会に勉強します。
雑感
勉強する中でちょっとした発見とか知識が増えていってはいますが、まだまだそれぞれがバラバラな印象です。
しかし時々点が繋がって線になる感じで、それぞれの関係性が見えてくると一気に理解が深まる時があります。
いろいろ試行錯誤しながら勉強続けます。