この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。大阪オフィスの林です。
SageMakerのノートブックインスタンスを作成する際に、OSレベルで設定しておきたい内容をSageMakerのライフサイクル設定でスクリプトとして仕込むことが出来ます。
今回はCloudFomationでライフサイクル設定の作成と、作成したライフサイクル設定をアタッチしたSageMakerのノートブックインスタンスを作成する機会がありましたので、内容をまとめておきたいと思います。
やってみた
まずはライフサイクル設定を作成しておきます。
CloudFomationのダッシュボードに移動しスタックを作成します。
今回は下記のYAMLファイルを予め作成しています。
内容なサンプルなのでタイムゾーンを変更しているだけです。要件に応じてカスタマイズ頂ければと思います。
Description: "Basic NotebookInstance test"
Resources:
BasicNotebookInstanceLifecycleConfig:
Type: "AWS::SageMaker::NotebookInstanceLifecycleConfig"
Properties:
NotebookInstanceLifecycleConfigName: NotebookInstanceLifecycleConfig
OnStart:
- Content:
Fn::Base64: !Sub |
echo "Before timezone..."
timedatectl
new_time_zone=Asia/Tokyo
sudo timedatectl set-timezone $new_time_zone
echo "After timezone..."
timedatectl
Outputs:
BasicNotebookInstanceLifecycleConfigName:
Value: !GetAtt BasicNotebookInstanceLifecycleConfig.NotebookInstanceLifecycleConfigName
Export:
Name: BasicNotebookInstanceLifecycleConfigName
次にSageMakerのノートブックインスタンスを作成していきます。
CloudFormationの手順はライフサイクル設定の手順を同様なので省略しますが、SageMakerのノートブックインスタンスを作成には下記のコードを使用しています。
Description: "Basic NotebookInstance test"
Resources:
BasicNotebookInstance:
Type: "AWS::SageMaker::NotebookInstance"
Properties:
InstanceType: "ml.t2.medium"
RoleArn: !GetAtt ExecutionRole.Arn
LifecycleConfigName: { "Fn::ImportValue": BasicNotebookInstanceLifecycleConfigName }
ExecutionRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Principal:
Service:
- "sagemaker.amazonaws.com"
Action:
- "sts:AssumeRole"
Path: "/"
Policies:
-
PolicyName: "sagemaker-test-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action: "*"
Resource: "*"
Outputs:
BasicNotebookInstanceId:
Value: !Ref BasicNotebookInstance
ノートブックインスタンス作成のスタックも正常に完了したことを確認します。
ノートブックインスタンスのターミナルに接続してタイムゾーンを確認すると期待通りJSTに変わってました。
ログを確認してみるとちゃんとUTCからAsia/Tokyoに変わってることが分かります。
まとめ
今回はCloudFomationを使って、SageMakerのノートブックインスタンスの作成とノートブックインスタンス初期設定用のライフサイクル設定を作成してみました。
OSレベルで設定が必要なケースの参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!