Lambda関数に対するCodeGuru Profilerの有効化がワンステップで出来るようになりました

2021.08.04

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

いわさです。

CodeGuru Profilerみなさん使ってますでしょうか。
様々な言語やプラットフォームにおいて、機械学習ベースでのパフォーマンス測定とレコメンドを実施し、コードの最適化に役立てることが出来る機能です。

対象プラットフォームにLambdaも含まれているのですが、先日のアップデートでLambda関数でのCodoGuru Profilerを有効化方法が簡単になりました。

以前までは

当初は、CodeGuruプロファイラーを作成し、Lambda実行ロールへのアクセス許可を付与した上で、さらにコードを変更してLambdaの再デプロイする必要がありました。

その後、2020年11月にアップデートがあり、コードの再デプロイは不要になりました。

この時点では、CodeGuruプロファイラーを作成し、以前と同様にアクセス許可を付与した上で、コードを再デプロイをするのではなくLambdaレイヤーを追加して必要な環境変数を設定するという手順になりました。

そして、今回、作成済みの関数に対してCodeGuru Profilerの有効化ボタン押すだけで良くなりました。

すごい。

やってみる

前提として、この有効化機能はランタイムとバージョンの制限があります。
現時点では以下が対象です。

  • Python 3.8
  • Java 8
  • Java 11

上記以外のバージョンの場合は以前と同じ有効化手順を行う必要があります。

以前の記事でAWSソリューション実装をデプロイしていたのでそのLambda関数を使ってみたいと思います。

対象Lambda関数の設定タブから、「モニタリングおよび運用ツール」を開きます。
コードプロファイリングの項目があり、デフォルトでは「有効になっていません」となっているかと思います。

編集画面から有効化を行います。

コードプロファイリングのトグルボタンを有効化します。

有効になりました。
問題がある状態が一瞬表示されますがリロードするとする有効状態になります。

設定作業はこれで終わりです。
はやい。

CodeGuru Profilerのコンソール画面を見てみましょう。
プロファイラーがまず作成されていると思います。

また、しばらく経つと(厳密には一定時間内でLambda関数が複数回実行されると) CodeGuruエージェントからCodeGuruにデータが送信され、セットアップが完了します。

ダッシュボードを利用出来るようになりました。

何をしてくれるのかみてみた

コードプロファイリングの有効化を行うと、以下を自動で設定してくれているようです。

Lambdaレイヤーの追加

必要な環境変数の追加

Lambdaの実行ロールにCodeGuruProfilerエージェントの管理ポリシーを追加

まとめ

プロファイラーの類は便利だけど事前準備が大変、という印象があったのですが有効化するだけですぐ使えるのはすごいですね。
CodeGuru Profilerの料金は以下のようになっています。
是非活用してみてください。