AWS Lambda関数を使用してAmazon SageMaker ノートブックインスタンスを作成したいと思います。
解決方法
1. sagemaker:CreateNotebookInstance アクションを許可するポリシーを添付した AWS Identity and Access Management (IAM) の Lambda 実行ロールを作成します。たとえば、AmazonSageMakerFullAccess ポリシーを添付したロールを作成できます。
2. Amazon SageMaker 実行ロールを作成します。Amazon SageMaker 実行ロールに必要なアクセス許可の詳細については、 CreateNotebookInstance API: 実行ロールアクセス許可をご参照ください。
3. Lambda コンソールを開きます。
4. [Create function] をクリックします。
5. [最初から作成] を選択し、以下のオプションを設定します。
[名前] に関数の名前を入力します。
[ランタイム] で、Python オプションのいずれかを選択します。
[ロール] で、[既存のロールを選択] をクリックします。
[既存のロール] で、sagemaker:CreateNotebookInstance アクションを許可する IAM ロールを選択します。これは、ステップ 1 で作成したロールです。
6. [Create function] を選択します。
7. 「関数コード」セクションで、次のようなコードを貼り付けます。
import os
import boto3
import time
INSTANCE_TYPE = os.environ['INSTANCE_TYPE']
NOTEBOOK_NAME = os.environ['NOTEBOOK_NAME']
ROLE=os.environ['ROLE']
sagemaker = boto3.client('sagemaker')
def lambda_handler(event, context):
sagemaker_notebook = sagemaker.create_notebook_instance(
NotebookInstanceName = NOTEBOOK_NAME +'-'+str(int(time.time())),
InstanceType = INSTANCE_TYPE,
RoleArn=ROLE
)
print("New Amazon SageMaker notebook instance created.")
8. 「環境変数」セクションまで下にスクロールし、[編集] をクリックします。
9. [環境変数を追加] を選択し、次のオプションを使用して 3 つの環境変数を作成します。環境変数を使用すると、関数コードを変更せずに構成設定を保存できます。
[キー]に ROLE と入力します。
[値] に、Amazon SageMaker 実行ロールの Amazon リソースネーム (ARN) を入力します。これは、ステップ 2 で作成したロールです。
[キー] に INSTANCE_TYPE と入力します。
[値] に、ノートブックインスタンスのインスタンスタイプを入力します。詳細については、 サポートされているインスタンスタイプとアベイラビリティーゾーンをご参照ください。
[キー] に NOTEBOOK_NAMEと入力します。
[値] にノートブックの名前を入力します。
10. [保存] をクリックして環境変数を保存します。
11. 関数設定ページの右上隅で、[保存]、[テスト] の順にクリックします。テストイベントは空にすることができます(「{}」)。
12. Amazon SageMaker コンソールを開き、ノートブックインスタンスが初期化中であることを確認します。
注: Lambda 関数のテストがタイムアウトした場合は、Lambda 関数を再度開きます。「基本設定」セクションまで下にスクロールし、タイムアウト値を増やします。デフォルトでは 3 秒になっています。
関数が機能することを確認したら、別の AWS のサービスのイベントに基づいて自動的に関数を実行するトリガーを作成できます。詳細については、「他のサービスで AWS Lambda を使用する」をご覧ください。