#はじめに
こんにちは、山田です。
今回はAPI Gateway、Fargateについて検証したので記載していきます。
①:パブリックサブネットに配置しているEC2に接続する。
②:VPCエンドポイントを介して、API Gatewayに接続する。
③:API GatewayからVPC linkを介してNLBに接続する。
④:Fargateにてタスクを実行する。
#前提条件
今回は、VPCエンドポイント、APIgateway、VPC link 、NLB、Fargateの構築をメインに記載していきます。
その他のAWSリソースに関しては、構築済みとします。
#VPCエンドポイントの構築
以下にVPCエンドポイントの構築手順について記載していきます。
AWS管理コンソール -> VPC -> エンドポイント -> エンドポイントを作成をクリックします。
名前、関連付けるVPCを入力し、サービスは以下を選択し作成します。
#NLB構築
AWS管理コンソール -> EC2 -> ロードバランサー -> ロードバランサーの作成をクリックします。
タイプはNetwork Load Balancerを選択します。
名前を入力し、SchemeはInternal
を選択します。
関連付けるVPC、サブネットを選択しロードバランサーを作成します。
※ターゲットグループに関しては後ほど作成します。
#Fargateの構築
以下Fargateの構築手順を記載していきます。
##クラスターの作成
AWS管理コンソール -> ECS -> クラスター -> クラスターの作成をクリックします。
クラスターのテンプレートはネットワーキングのみを選択します。
クラスター名を入力して作成します。
##タスク定義の作成
AWS管理コンソール -> ECS -> タスク定義 -> 新しいタスク定義の作成をクリックします。
起動タイプはFARGATE
をクリックします。
タスクの設定を以下のように入力しました。
IAMロール、サイズを入力したらコンテナを追加をクリックします。
コンテナ名を入力し、イメージのURLを入力します。
今回は、コンテナポートは80番とします。
他はデフォルト値とし、作成をクリックします。
##サービスの作成
対象のクラスター -> サービス -> 作成をクリックします。
サービスの設定を以下のように入力します。
関連付けるVPC,サブネットを入力します。
ロードバランサーは、作成したロードバランサーを選択します。
ロードバランス用のコンテナを新規で作成します。
他はデフォルト値で、サービスを作成します。
#API Gatewayの構築
##VCPリンクの構築
AWS管理コンソール -> API Gateway -> VPCリンク -> Createをクリックします。
VPCリンクバージョンはREST APIのVPCリンク
を選択します。
名前、関連付けるNLBを選択して作成をクリックします。
##APIの構築
AWS管理コンソール -> API Gateway -> API -> REST API プライベートをクリックします。
API名を入力し、エンドポイントタイプはプライベートとし、VPCエンドポイントIDは先ほど作成したエンドポイントのIDを入力します。
APIの作成をクリックします。
セットアップにて、統合タイプはVPCリンク、VPCリンクは先ほど作成したVPCリンクを選択、エンドポイントURLはNLBのDNS名を入力します。
リソースポリシーを編集します。
今回はホワイトリスト形式で記載していきます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:ap-northeast-1:<account id>:<api id>/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "許可するIPリスト"
}
}
}
]
}
メソッドレスポンスを変更しておきます。
APIをデプロイします。
デプロイが完了したらGETアクションに記載されているURLに接続していきます。
#動作確認
パブリックサブネットに配置されているEC2に接続します。
ブラウザにてURLを入力し,問題なくページが表示されれば完了です。