内部ALBに静的IPアドレスを設定する

## はじめに

<font color="Red">**NLBのターゲットタイプにALBを指定できるようになりました。
下記が最新の情報です。こちらの記事を参考にして下さい。**</font>

Network Load BalancerのターゲットグループにApplication Load Balancerを設定する

https://aws.amazon.com/jp/blogs/news/application-load-balancer-aws-privatelink-static-ip-addresses-network-load-balancer/



本記事では、不定期にIPアドレスが変わる内部ALB(Application Load Balancer) に、内部NLB(Network Load Balancer) とLambda を使用して静的IPアドレスを設定する方法について紹介しています。

どうしても内部ALB に静的IPアドレスでアクセスできるようにしたい場合の１つの案になります。

この構成に関する詳細は、下記のAWSブログで記載されております。

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/

## この案の全体構成図
![00_static_ip_alb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/fef594df-fc60-2e95-d976-d869ac178adc.png)

##構築の簡単な流れ
###前提条件
内部ALB が構築済みであること。
（構成図内の赤枠のリースのみの構築手順になります。）

###内部NLB用のターゲットグループの構築
管理コンソール > ロードバランシング > ターゲットグループ
[ターゲットタイプ]は、IPアドレス。
[プロトコル]は、内部ALB のリスナーのポートと同じにします。
[ターゲット]は、Lambdaで内部ALBのIPを登録するので未登録のまま作成します。
![01_targetgroup_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/b88a7eca-828d-e105-7c27-e16215946d40.png)
![02_targetgroup_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/be903bba-016f-d07b-90d4-a81149b0a754.png)

###内部NLBの構築
管理コンソール > ロードバランシング > ロードバランサ
[サブネット]は、内部ALB と同じサブネットに設定します。
[デフォルトアクション]には、作成した内部NLB 用のターゲットグループを設定します。
![01_nlb_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/6e33c3c9-0d9c-c6c5-399f-2fe96edc9f12.png)
![02_nlb_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/f892f5bb-9fa4-80bf-7e1e-676d3751f3b2.png)
![03_nlb_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/b6e9430e-42e0-4b66-95b4-46be22f2aba3.png)
![04_nlb_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/d17281d6-6c44-b009-5f5b-9329c59002b7.png)

###S3バケットの構築
管理コンソール > S3 > バケットを作成
[バージョンニング]は。有効にして、更新履歴を確認できるようにしておきます。
![01_s3_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/fe9e4496-9b29-5e7b-223c-8af8f600bdbe.png)
![02_s3_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/6fad0c9d-7c59-8919-31bc-7d353d11736a.png)
![03_s3_create.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/d54a0f6b-f4d4-e625-4636-77f80d846ecf.png)

###CloudWatch Events と Lambda の構築
下記、AWS ブログにアクセスします。

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/

ブログ内の [Launch Stack] をクリックして、CloudFormation のテンプレートを起動します。
![01_CFn_exec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/8ef24cbe-a010-451c-f79d-adf2ea12a5ad.png)

<font color="Red">東京リージョンを選択し</font> 、各パラメータを入力しして、スタックを作成します。
（CWMetricFlagIPCount, InvocationBeforeDeregistration,MAXDNSLookupPerInvocation, SameVPC はデフォルト）
![02_CFn_exec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/96e8201d-38e5-8cef-a546-13b0a7c52679.png)
![03_CFn_exec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/65ddbed9-f0e7-359c-6ae6-e4345ed2109c.png)

スタックの作成の完了後、各リソースが作成されたことを確認します。
![04_CFn_exec.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/68bdf431-29ce-8e49-cca6-24c65ecffe08.png)

###確認
数分後、内部NLB のターゲットグループに内部ALB のIPアドレスが登録されていることを確認します。
![01_target_register.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/16c7fe8f-4289-3f2e-f6d2-8863c8bf5460.png)

##さいごに
内部ALB に静的IPアドレスでアクセスさせたい要件がでた場合に、この構成について検討する際の参考になれば幸いです。

##参考
https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/

https://www.bluematador.com/blog/static-ips-for-aws-application-load-balancer