Lambda 関数を使用して Amazon SageMaker ノートブックインスタンスを作成する方法を教えてください。

最終更新日: 2020 年 6 月 16 日

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.    [関数を作成] をクリックします。

5.    [最初から作成] を選択し、以下のオプションを設定します。

[名前] に関数の名前を入力します。
[ランタイム] で、Python オプションのいずれかを選択します。
[ロール] で、[既存のロールを選択] をクリックします。
[既存のロール] で、sagemaker:CreateNotebookInstance アクションを許可する IAM ロールを選択します。これは、ステップ 1 で作成したロールです。

6.    [関数を作成] をクリックします。

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 を使用する」をご覧ください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合