今日は前回に引き続き新しくリリースされた AWS Lambda Managed Insntaceを触っていきます。
Lambda Managed Instance と VPC
Lambda Managed Instance で作成されたLambda関数は、VPC上のEC2で動作します。このためネットワーク条件などはすべてVPC、つまりEC2を起動するサブネットの影響を受けます。
コンソールやドキュメントでも表示されている通り、Amazon CloudWatch Logs に実行ログを出力するためにはVPC EndPointが必要となります。
さっそくやってみる
まずは以下の様なシンプルなVPCをウィザードを使って作成します。

設定は以下になっています。


Capacity Providerの作成
前回書いたAWS Lambdaの新しい選択肢AWS Lambda Managed Instanceとは?実際にEC2を起動して動かしてみたの記事の内容に従いCapacity Private を2つ、それぞれPublicとPrivateサブネットに作成します。

関数の作成
こちらも同様に前回の記事に従い関数を作成します。ただし今回は Lambda URL オプションをオンにします。こうすることでLambda関数を外からブラウザ経由で呼び出すことができます。

以下の様に4つEC2インスタンスが起動します。Capacity Providerは例えAZが1つであったとしても必ず2つのEC2インスタンスを起動するようです。

外部からのアクセステスト
Lambda URL関数は、URLが自動生成されブラウザからアクセスを行うことでテストができます。Public、Privateそれぞれのサブネットに作成された関数にアクセスしてみます。

ここで注意点です。Privateサブネットに作成されたLambda URL 関数も普通にブラウザでアクセスできます。これは意図しないアクセスが発生する可能性があるため注意してください。なおNWは以下となっています。

Lambda URLは独自のエンドポイントを持つためこうなっていると思われます。
CloudWatch Logs との連携
通常Lambda関数が実行されたときには CloudWatch Logs に関数専用のロググループが作成され、起動ログを確認できるようになっていますが、以下の通りエラーとなります。


これはVPCから CloudWatch Logs への通信経路が存在していないためそうなります。
ではVPCのマネージメントコンソールからCloudWatch Logs 用VPCエンドポイントを作成します。


再度Lambda関数を実行すると、無事CloudWatch Logsにログが出るようになりました。


