Amazon CodeWhisperer が GA となりました

2023.04.14

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

いわさです。

先週、プレビュー中だった Amazon CodeWhisperer のエンタープライズ統合機能を紹介しました。

統合手順などをまとめていたのですが、昨日 Amazon CodeWhisperer が GA となりました。
上記検証を行った際には IAM Identity Center との兼ね合いなど気になる点がいくつかありましたね。

GA 後はどのようになったか変更点などを見ていきたいと思います。

プレビュー時との比較

料金が確定

プレビュー時は CodeWhisperer は料金が無料でしたが GA に伴って料金プランが確定しました。
専用の料金ページが用意されているのでこちらを確認しましょう。

Individual と Professional の 2 つの Tier が用意されています。

Individual は無料

個人が所有する AWS Builder ID を使ってサインインします。
GA 後の料金が気になるところでしたが、なんと無料でした。

Professional との違いは料金表上はコードセキュリティスキャンの月間の使用上限数が違っていることと、IAM Identity Center に管理されない点が差分となっています。
現在はサポートされていませんが、将来的には、AWS Builder ID を IAM Identity Center に接続出来るようにする予定だと次のドキュメントで言及されています。

Professional はユーザーあたり $19/月

Professional は AWS IAM Identity Center で管理されるユーザーです。
シナリオとしては AWS Organizations を運用しているエンタープライズ向けに、管理者がユーザーごとに CodeWhisperer の使用許可など管理することが出来ます。

Professional は 1 ユーザーあたり $19/月 の料金となっています。
請求期間は 1 ヶ月ごととなっていて、月の途中で有効化したユーザーは月末までの日割りで計算されます。
ただし、月の途中で削除したユーザーも月末まで請求されるようなので注意が必要です。(QuickSight などと同じ)

いくつかのシナリオが料金ページに記載されていますのでご確認ください。

なお、Professional は IAM Identity Center との統合が必要になります。
セットアッププロセスは冒頭の記事を参考にしてくださいと言いたいところなのですが、公式ドキュメントの統合手順が GA に伴って変わっていました。

まずは次の公式ドキュメントをご確認ください。
以前までと違う手順としては CodeWhisperer 管理者を事前に用意するなど追加の手順が必要になっています。

以前と同じ手順でバージニア北部で IAM Identity Center を有効化して試してみたところ次のようなエラーとなりました。

リージョンはバージニア北部

IAM Identity Center との統合の兼ね合いでリージョンはかなり気になっていました。
本日時点では引き続きバージニア北部でのみ利用が可能です。

そのため、東京リージョンで IAM Identity Center をご利用されている方はまだプロフェッショナル版を利用することは出来ません。
東京リージョンで利用できるようになるまで待ちましょう。

東京リージョンの IAM Identity Center でバージニア北部の CodeWhisperer を統合出来るかは確認中です。
前述のエラーが解消出来たら再度確認します。

東京リージョンの IAM Identity Center と統合可能 (2023.04.28 追記)

上記についてエラーが出ておりサポート問い合わせ中だったのですが、今朝確認したところ問題が解消されてました。今となっては理由はわからないです。
お伝えしたい点として、エラーの解消後は東京リージョンの IAM Identity Center でも バージニア北部の CodeWhisperer を統合することが出来ました。

サポートランタイムがたくさん追加された

CodeWhisperer は元々登場時は Java、JavaScript、Python がサポートされており、re:Invent 2022 のタイミングで C# と TypeScript がサポート対象に追加されていました。

今回の GA で次の言語もサポート対象に追加されました。

  • Rust
  • Go
  • Ruby
  • Scala
  • Kotlin
  • PHP
  • C
  • C++
  • シェルスクリプト
  • SQL

ちなみに CodeWhisperer の生成結果はトレーニング品質によって変わるため、プレビュー時からサポートされていた言語のほうがコード生成の精度と品質は良いようです。
どの程度のものかはドキュメント上も言及されていないため個々に評価が必要です。

また、CodeWhisperer では コードのセキュリティスキャン機能を備えています。
個人向け・エンタープライズ向けでスキャン出来る回数に制限がありますが、CodeGuru の仕組みを使ってセキュリティスキャンを行っています。
セキュリティスキャンのサポート言語は CodeGuru と同じで、現在は Python、Java、JavaScript でのみサポートされています。

Visual Studio Code 上でアップデートして使ってみる

Visual Studio Code の場合は AWS Toolkit for Visual Studio Code によって CodeWhisperer が利用出来るようになるのですが、Toolkit をアップデートしない場合はプレビュー表記のままとなっています。
Toolkit も昨日更新版がリリースされていましたので、アップデートを行いましょう。

アップデート後は次のようにプレビュー表記が削除されました。

追加された言語 PHP で試してみる

せっかくなので何か追加された言語を少し触ってみます。
PHP で次のようにコメントを入力しました。

PHP でも提案コードが自動生成されていますね。
タブキーとエンターキーを使って提案されたコードを入力していくと次から次へと生成されていきます。

ただし、私が試した際にはこの Key を入力したタイミングで同じコードが複数回繰り返されるようになりました。
冒頭で触れたコード品質が少しこのあたりに出ているのかもしれないです。リリース後しばらく経つとこのあたりの結果も変わるかもしれないですね。

セキュリティスキャン

セキュリティスキャン機能はプレビュー時から存在していたのですが、DevelopersIO 上で紹介されていないことに気が付きました。
せっかくなので試してみます。

CodeGuru Reviewer ベースでのスキャンとのことなので、CodeGuru Reviewer Detector Library に記載されている脆弱性を含む適当なコードを作成します。

セキュリティスキャンを行う場合は上記のRun Security Scanを明示的に実行します。
Individual の場合は月あたり 50 回までですが、現在自分が何回使ったのかどこで確認出来るのかはわかりませんでした。ドキュメントにも記述なし。
判ったら紹介したいです。

実行すると次のようにスキャンが開始されます。

公式ドキュメントによるとスキャンには最大 60 秒かかるとのことです。

暫く待つとスキャン結果が表示されました。
期待どおりログインジェクションのリスクが検出されていますね。

AWS とのデータ共有

CodeWhisperer を使用する際にはデフォルトでは品質向上のために利用状況データなどが AWS と共有されています。
次のドキュメントに従ってオプトアウトすることが可能です。

コンテンツ

コンテンツは提案コードを生成するために必要なコードの一部を含んでいます。
以下から共有をオプトアウト出来ます。

テレメトリ

テレメトリは提案コードを使用したか使用しなかったなどのサービスの使用状況です。
実際のコードや、利用者の IP アドレスや個人情報などは含まれません。
以下から共有をオプトアウト出来ます。

さいごに

本日は Amazon CodeWhisperer が GA となったので変更点などを確認しつつ、IDE 上で GA 版にアップデートして使ってみました。

提案コードの品質がどんなものかというが最も重要だと思いますが、Individual ユーザーは無料で利用出来るので、コード品質の評価からまずは気軽に使ってみてはというところですね。
サポート言語も追加されているので、新しく試してみようというユーザーさんも増えるのではないでしょうか。

Professional 機能はどこまで差別化出来るものなのかもう少し評価したいところです。
IAM Identity Center の統合が失敗しているので、統合方法は別途検証し直して紹介したいと思っていますが、本格的な利用は東京リージョンの IAM Identity Center と統合出来るようになってからになりそうでしょうか。