@gomi_ningen's Website

ALB のターゲットの Lambda 関数から Multi Value Headers を返す

複数値を持つ RequestHeader/ResponseHeader がたまにあります。通常こういったリクエストが来た場合でも Event オブジェクトの Headers はただ単純にマップでしかないので、同一キーに対して値は一つです。レスポンスもマップというデータ構造を使っているときには当たり前ですが、同一キーに対して値は一つです。

ALB のターゲットグループに対して lambda.multi_value_headers.enabled 属性を true とすることによりこれに対応できます。このオプションは以下のようなコマンドで変更可能です。

aws elbv2 modify-target-group-attributes \ --target-group-arn <value> \ --attributes <value>

このオプションに変更する際は Lambda 関数の実装自体も変更する必要があります。以下のように multiValueHeaders をキーとして Map<String, List<String>> というような構造となっていま...

Read More

Redirect HTTP to HTTPS を ALB で実現する

先日(2018/07/25)、ALB に、リダイレクト/固定レスポンスという 2 つのアクションが追加されたので早速試してみた。

情報ソース Elastic Load Balancing で Application Load Balancer のリダイレクトおよび固定レスポンスのサポートを発表

リダイレクトアクション

ALB リスナーのルール設定のアクションにおいて、転送先のターゲットグループを設定する以外に「リダイレクト先...」および「固定レスポンスを返す...」という項目が選択可能になっていた。

「リダイレクト」を選択すると以下の項目が設定可能だった。

  • プロトコル
  • ポート
  • ホスト/パス/クエリ
  • HTTP ステータスコード...
Read More

ELB の負荷分散の基本的なしくみ

AWS 公式のドキュメントに ELB の簡単な仕組みが載っていたので、自分向けにまとめました。正確な情報はドキュメントを参照してください。基本的には ALB についてのことをまとめていきます。

情報ソース: Elastic Load Balancing の詳細

  • ELB でロードバランサーを作成すると、ターゲットとして指定した AZ へのロードバランサーノードを作成が行われる
  • ユーザーからのリクエストはまず DNS ラウンドロビンにより、各ロードバランサーノードに分散される(TTL は 60s)
  • 実際に dig ってみれば、これがわかる
    • 以下は tokyo-1a, 1c のサブネットに ALB をアタッチしたときの Answer
    • DNS キャッシュなども当然影響してくるので頭の片隅にいれておいたほうがいい
$ dig...
Read More

Auto Scaling に関する各種概念の整理

Auto Scaling とは

情報ソース: Amazon EC2 Auto Scaling

  • 負荷に応じて最適な EC2 インスタンスを配置するための仕組み
  • Auto Scaling には以下の構成要素がある
    • Auto Scaling グループ: minimum number of instances, maximum number of instances, desired capacity をパラメタとして設定できる
    • 起動設定: AMI ID, インスタンスタイプ、キーペア、セキュリティグループ、ストレージなど Auto Scaling の際に起動する EC2 インスタンスのテンプレート
    • スケーリング: いつどのようにスケールイン・アウトするかを定めるルール設定

起動設定とは

情報ソース: [起動設定](https://docs.aws....

Read More

ELB + EC2 + RDS でふつうのアプリケーションを構成する

  • VPC とサブネットを切り、その上に ELB, EC2, RDS を配置する、いたって普通のアプリケーションを構成する手順を自分向けにまとめておく
  • だいたいざっくりとはわかってるけどたまにやるとアレっとなったりする

構成するものの全体像

  • public subnet に ELB、private subnet に EC2, RDS を配置する
  • EC2, RDS ともに Multi AZ 配置として、耐障害性、可用性を高める

VPC の構成

  • 10.1.0.0/16 を AWS 用のアドレス帯として確保していると仮定して VPC を用意する
    • DNS ホスト名を有効する #
  • サブネットはひとまず以下のように切る
    • あくまでざっくりと流れを説明するために適当に切ってるので、用途に合わせ適当にサイズを変える

| role | subnet ...

Read More

Copyright © 53ningen.com