CloudFormationでSageMakerのライフサイクル設定とノートブックインスタンスの作成をしてみる
はじめに
こんにちは。大阪オフィスの林です。
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レベルで設定が必要なケースの参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!