スキップしてコンテンツを表示

Sagemaker AI のスケジュールされたノートブックジョブで発生する問題のトラブルシューティング方法を教えてください。

所要時間3分
0

Amazon SageMaker AI のスケジュールされたノートブックジョブで発生する問題をトラブルシューティングしたいです。

解決策

ノートブックジョブがスケジュールされた期間に実行されない

スケジュールされたノートブックジョブでは、Amazon EventBridge と SageMaker AI のトレーニングとパイプラインサービスを使用します。ノートブックがスケジュールされた期間に実行されない場合、AWS Identity and Access Management (IAM) に必要なアクセス許可が欠けている可能性があります。

ノートブックジョブの作成とスケジュールに使用した IAM ロールは、SageMaker AI Studio のドメインロールか、ドメイン内の個々のユーザープロファイルにアタッチされたロールです。

スケジュールされたノートブックジョブに関する Amazon CloudWatch イベントを管理するためのアクセス許可を付与するには、スケジュールされたノートブックジョブに次のポリシーを追加します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "events:TagResource",
                "events:DeleteRule",
                "events:PutTargets",
                "events:DescribeRule",
                "events:PutRule",
                "events:RemoveTargets",
                "events:DisableRule",
                "events:EnableRule"
            ],
            "Resource": "*",
            "Condition": {
              "StringEquals": {
                "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
              }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": "events.amazonaws.com"
                }
            }
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "sagemaker:ListTags",
            "Resource": "arn:aws:sagemaker:*:*:user-profile/*/*"
        }
    ]
}

注: 上記のポリシーでは、ユーザープロファイルのタグを一覧表示できるため、スケジュールされたジョブとしてタグ付けされたノートブックを識別できます。

スケジュールされたノートブックジョブを作成しようとすると、[作成] ボタンがグレー表示される

ノートブックジョブを作成する際、[作成] ボタンがグレー表示されており、[追加オプション] パラメータに ! マークが表示される場合は、HAR ファイルを取得してください。問題が発生した時間帯のネットワークキャプチャを参照し、原因を特定してください。Amazon Virtual Private Cloud (Amazon VPC) の設定ミスやランタイムロールのアクセス許可に関する問題がないか確認してください。

Amazon VPC を使用してノートブックジョブを実行する場合は、次の Amazon VPC エンドポイントがあることを確認してください。

プライベートサブネットとセキュリティグループを 1 つ以上指定します。プライベートサブネットを使用しない場合は、別の構成オプションを使用してください。詳細については、「VPC 専用モードを使用するための要件」を参照してください。

上記のエンドポイントを設定した場合、またはノートブックジョブの実行に Amazon VPC を使用しない場合は、IAM アクセス許可とランタイムロールのアクセス許可を設定します。

IAM アクセス許可を設定するには、次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [ユーザー] を選択します。
  3. ノートブックジョブに関連付けられている IAM ユーザーを選択します。
  4. ドロップダウンリストで [アクセス許可の追加] を選択し、[インラインポリシーの作成] を選択します。
  5. [JSON] タブを選択し、次のポリシーを追加します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "EventBridgeSchedule",
                "Effect": "Allow",
                "Action": [
                    "events:TagResource",
                    "events:DeleteRule",
                    "events:PutTargets",
                    "events:DescribeRule",
                    "events:EnableRule",
                    "events:PutRule",
                    "events:RemoveTargets",
                    "events:DisableRule"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                    }
                }
            },
            {
                "Sid": "IAMPassrole",
                "Effect": "Allow",
                "Action": "iam:PassRole",
                "Resource": "arn:aws:iam::*:role/*",
                "Condition": {
                    "StringLike": {
                        "iam:PassedToService": [
                            "sagemaker.amazonaws.com",
                            "events.amazonaws.com"
                        ]
                    }
                }
            },
            {
                "Sid": "IAMListRoles",
                "Effect": "Allow",
                "Action": "iam:ListRoles",
                "Resource": "*"
            },
            {
                "Sid": "S3ArtifactsAccess",
                "Effect": "Allow",
                "Action": [
                    "s3:PutEncryptionConfiguration",
                    "s3:CreateBucket",
                    "s3:PutBucketVersioning",
                    "s3:ListBucket",
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:GetEncryptionConfiguration",
                    "s3:DeleteObject",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::sagemaker-automated-execution-*"
                ]
            },
            {
                "Sid": "S3DriverAccess",
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetObject",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::sagemakerheadlessexecution-*"
                ]
            },
            {
                "Sid": "SagemakerJobs",
                "Effect": "Allow",
                "Action": [
                    "sagemaker:DescribeTrainingJob",
                    "sagemaker:StopTrainingJob",
                    "sagemaker:DescribePipeline",
                    "sagemaker:CreateTrainingJob",
                    "sagemaker:DeletePipeline",
                    "sagemaker:CreatePipeline"
                ],
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "aws:ResourceTag/sagemaker:is-scheduling-notebook-job": "true"
                    }
                }
            },
            {
                "Sid": "AllowSearch",
                "Effect": "Allow",
                "Action": "sagemaker:Search",
                "Resource": "*"
            },
            {
                "Sid": "SagemakerTags",
                "Effect": "Allow",
                "Action": [
                    "sagemaker:ListTags",
                    "sagemaker:AddTags"
                ],
                "Resource": [
                    "arn:aws:sagemaker:*:*:pipeline/*",
                    "arn:aws:sagemaker:*:*:space/*",
                    "arn:aws:sagemaker:*:*:training-job/*",
                    "arn:aws:sagemaker:*:*:user-profile/*"
                ]
            },
            {
                "Sid": "ECRImage",
                "Effect": "Allow",
                "Action": [
                    "ecr:GetAuthorizationToken",
                    "ecr:BatchGetImage"
                ],
                "Resource": "*"
            }
        ]
    }

ランタイムロールのアクセス許可を設定するには、次の手順を実行します。

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで [ロール] を選択します。
  3. ノートブックジョブに関連付けられているジョブのランタイムロールを選択します。
  4. [信頼関係] タブを選択します。
  5. [信頼ポリシーの編集] を選択し、次のポリシーを追加します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "sagemaker.amazonaws.com",
                        "events.amazonaws.com"
                    ]
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }

リソースにアクセスするためのアクセス許可を追加するには、次の手順を実行します。

  1. IAM コンソールを開きます。

  2. 左側のナビゲーションペインで **[ロール]**を選択します。

  3. ノートブックジョブに関連付けられているジョブのランタイムロールを選択します。

  4. ドロップダウンリストで [アクセス許可の追加] を選択し、[インラインポリシーの作成] を選択します。

  5. [JSON] タブを選択し、次のポリシーを追加します。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PassroleForJobCreation",
                "Effect": "Allow",
                "Action": "iam:PassRole",
                "Resource": "arn:aws:iam::*:role/*",
                "Condition": {
                    "StringLike": {
                        "iam:PassedToService": "sagemaker.amazonaws.com"
                    }
                }
            },
            {
                "Sid": "S3ForStoringArtifacts",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::sagemaker-automated-execution-*"
            },
            {
                "Sid": "S3DriverAccess",
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetObject",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::sagemakerheadlessexecution-*"
                ]
            },
            {
                "Sid": "SagemakerJobs",
                "Effect": "Allow",
                "Action": [
                    "sagemaker:StartPipelineExecution",
                    "sagemaker:CreateTrainingJob"
                ],
                "Resource": "*"
            },
            {
                "Sid": "ECRImage",
                "Effect": "Allow",
                "Action": [
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:BatchGetImage",
                    "ecr:GetAuthorizationToken",
                    "ecr:BatchCheckLayerAvailability"
                ],
                "Resource": "*"
            }
        ]
    }

    注: 上記のポリシーでは、ノートブックジョブがアクセスする必要がある他のリソースにもアクセス許可を追加できます。

  6. [ポリシーの確認] を選択します。次に、ポリシーの名前を入力します。

  7. [ポリシーを作成] を選択します。

「Unable to find metadata for image」エラーが発生する

「Unable to find metadata for image arn in region: example-region」というエラーメッセージが表示されます。

上記のエラーは、ノートブックジョブの作成時にユーザーのイメージを関連付けたり選択したりしなかった場合に発生します。このエラーは、ユーザーのイメージをノートブックジョブにアタッチしようとしたときにも発生する可能性があります。

この問題を解決するには、後でノートブックジョブのスケジュールを変更してください。エラーが解消しない場合は、AWS サポートにお問い合わせください。

関連情報

Amazon SageMaker Studio ノートブックをスケジュールされたノートブックジョブとして運用する

ローカル Jupyter 環境用のポリシーとアクセス許可を実装する

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ