Amazon VPC Latticeのみで固定レスポンスを返す(ただし404のみ)

VPC Lattice周りの動作を検証するときにターゲットグループなしでサクッと固定レスポンスを返す設定をご紹介します
2023.04.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。 本日一般利用可能になったVPC Lattice、みなさん触ってますか?アクセス制限や共有設定などVPC Lattice周りの動作を検証するときに、ターゲットグループなしでサクッと固定レスポンスを返す設定をご紹介します。

AWS CLIでリスナーに固定レスポンスをセットする

VPC LatticeはALBに構成がよく似ていて、固定レスポンスもALBと同様リスナーのデフォルトアクションとして設定できます。ただ現時点ではAWS管理コンソールに設定項目が表示されないため、AWS CLIで設定します。以下の構文です。

aws vpc-lattice update-listener \
  --listener-identifier [VPC LatticeリスナーのARN] \
  --service-identifier svc-XXXXXXXX(VPC Latticeサービスの画面にあるID) \
  --default-action '{"fixedResponse":{"statusCode":[ステータスコード]}}'

APIリファレンスを見るとステータスコードは100〜599とあるのですが、実際に試してみると「サポートするのは404だけだよ」と親切に(?)教えてもらえるので大人しく404を指定しましょう。

% aws vpc-lattice update-listener --listener-identifier arn:aws:vpc-lattice:ap-northeast-1:XXXXXXXXXXXX:service/svc-XXXXXXXXXXXXXXXX/listener/listener-XXXXXXXXXXXXXXXX --service-identifier svc-XXXXXXXXXXXXXXXX \
  --default-action '{"fixedResponse":{"statusCode":200}}'

An error occurred (ValidationException) when calling the UpdateListener operation: Only 404 status code is supported.
%

動作確認

改めて設定しアクセスしてみると、以下のレスポンスになりました。

$ curl -v http://latticeservice01-XXXXXXXXXXXXXXXX.XXXXXXXX.vpc-lattice-svcs.ap-northeast-1.on.aws
*   Trying 169.254.171.32:80...
* Connected to latticeservice01-XXXXXXXXXXXXXXXX.XXXXXXXX.vpc-lattice-svcs.ap-northeast-1.on.aws (169.254.171.32) port 80 (#0)
> GET / HTTP/1.1
> Host: latticeservice01-XXXXXXXXXXXXXXXX.XXXXXXXX.vpc-lattice-svcs.ap-northeast-1.on.aws
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< content-length: 9
< content-type: text/plain
< date: Sat, 01 Apr 2023 02:39:21 GMT
<
* Connection #0 to host latticeservice01-XXXXXXXXXXXXXXXX.XXXXXXXX.vpc-lattice-svcs.ap-northeast-1.on.aws left intact
Not Found$

きちんと動作していますね!