背景・目的
AWS Glue StudioでAmazon CodeWhispererをサポートされたので、試してみました。
2023/7/30現在で、バージニアリージョンのみ提供となります。
まとめ
- Glue Studioのノートブックで利用が可能
- 2023/7/30現在、バージニアリージョンのみ提供
実践
前提
IAMロールの作成
-
IAM画面で、「ロールを作成」をクリックします。
-
IAMポリシーの追加画面で、①「AWSGlueServiceNotebookRole」を選択し、②「次へ」をクリックします。
-
ロール名を入力し、「ロールを作成」をクリックします。
下記の通り、AWSGlueServiceNotebookRoleから始まるIAMロールを作成します。[ロール名] に、ロールの名前を入力します。コンソールユーザーからノートブックサーバーにロールを渡すには、名前に文字列 AWSGlueServiceNotebookRole のプレフィックスが付けられたロールを作成します。AWS Glue が提供するポリシーでは、IAM サービスロールが AWSGlueServiceNotebookRole で始まることを想定しています。それ以外の場合は、ユーザーにポリシーを追加して、IAM ロールに対する iam:PassRole の許可を命名規則に一致させる必要があります。たとえば、AWSGlueServiceNotebookRoleDefaultと入力します。次に、[Create role] (ロールの作成) を選択します。
※出典:AWS Glue の IAM アクセス許可の設定>ステップ 5: ノートブックサービス用に IAM ロールを作成する
-
JSONのポリシーエディタで下記を貼り付けて「次へ」をクリックします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CodeWhispererPermissions", "Effect": "Allow", "Action": [ "codewhisperer:GenerateRecommendations" ], "Resource": "*" } ] }
-
ポリシー名を入力し、「作成」をクリックします。
-
Notebookを動かすためには下記のIAMポリシーも作成し、アタッチが必要になります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:StartNotebook", "glue:TerminateNotebook", "glue:GlueNotebookRefreshCredentials", "glue:DeregisterDataPreview", "glue:GetNotebookInstanceStatus", "glue:GlueNotebookAuthorize", "glue:CreateSession" ], "Resource": "*" } ] }
-
PassRole権限も作成し、アタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::<AccountId>:role/<role_name>" } ] }
Glue Studioのセットアップ
Glue Studioで、Notebookを起動します。
-
下記を入力し、「Start notebook」をクリックします。
- Job name:任意
- IAM Role:上記で作成したIAMロールを指定
- Karnel:Spark
CodeWhispererを試す-1
1.「Enter」を入力後、「↓」を選択すると、コードの候補が表示されます。
CodeWhispererを試す-2
-
下記を入力後、「Enter」を入力します。
# Generate sample Spark DataFrame of country name and country code
考察
やりたいことを入力し、コードが生成されるのは、文法を忘れてしまったときなど便利であると思いました。自分の手に馴染んでいないので素早く入力することはまだまだ出来ませんが、慣れると便利になる気がします。
あとは、現在はNotebookのみですが、GlueのEditorにも対応してくれると良いと思いました。
参考