ログ記録とモニタリング - SageMaker Studio 管理のベストプラクティス

ログ記録とモニタリング

アルゴリズムコンテナ、モデルコンテナ、またはノートブックインスタンスのライフサイクル設定から stdout または stderr に送信されるものは、すべて Amazon CloudWatch Logs にも送信されて、コンパイルジョブ、処理ジョブ、トレーニングジョブ、エンドポイント、変換ジョブ、ノートブックインスタンス、およびノートブックインスタンスのライフサイクル設定をデバッグするために利用されます。Amazon CloudWatch を使用して SageMaker AI Studio をモニタリングすることで、raw データを収集し、ほぼリアルタイムで読み取り可能なメトリクスに加工できます。これらの統計は 15 か月間保持されるため、履歴情報にアクセスして、ウェブアプリケーションまたはサービスの動作をより的確に把握できます。

CloudWatch でのログ記録

データサイエンスのプロセスは本質的に実験的で反復的であるため、ノートブックの使用状況、トレーニング/処理ジョブの実行時間、トレーニングのメトリクス、エンドポイントサービスのメトリクス (呼び出しのレイテンシーなど) などのアクティビティをログに記録することが重要です。デフォルトでは、SageMaker AI はメトリクスを CloudWatch Logs に公開します。これらのログは、AWS KMS を使用してカスタマーマネージドキーで暗号化できます。

VPC エンドポイントを使用して、パブリックインターネットを使用せずに CloudWatch にログを送信することもできます。また、特定のしきい値をモニタリングするアラームを設定し、しきい値に達したときに通知を送信したりアクションを実行したりできます。詳細については、「Amazon CloudWatch ユーザーガイド」を参照してください。

SageMaker AI は、Studio 用に 1 つのロググループを /aws/sagemaker/studio に作成します。ユーザープロファイルとアプリごとに、このロググループの下に独自のログストリームがあり、ライフサイクル設定スクリプトにも独自のログストリームがあります。例えば、「studio-user」という名前のユーザープロファイルと Jupyter Server アプリ、アタッチされたライフサイクルスクリプト、およびデータサイエンスカーネルゲートウェイアプリには、以下のログストリームがあります。

/aws/sagemaker/studio/<domain-id>/studio-user/JupyterServer/default

/aws/sagemaker/studio/<domain-id>/studio-user/JupyterServer/default/LifecycleConfigOnStart

/aws/sagemaker/studio/<domain-id>/studio-user/KernelGateway/datascience-app

SageMaker AI がユーザーに代わって CloudWatch にログを送信するには、トレーニング/処理/変換ジョブ API の呼び出し元に次のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogDelivery", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DeleteLogDelivery", "logs:Describe*", "logs:GetLogEvents", "logs:GetLogDelivery", "logs:ListLogDeliveries", "logs:PutLogEvents", "logs:PutResourcePolicy", "logs:UpdateLogDelivery" ], "Resource": "*", "Effect": "Allow" } ] }

これらのログをカスタム AWS KMS キーで暗号化するには、まずキーポリシーを変更して CloudWatch サービスがキーを暗号化および復号できるようにする必要があります。ログ暗号化の AWS KMS キーを作成したら、キーポリシーを変更して以下を含めます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region:account-id:*" } } } ] }

暗号化する CloudWatch ログには、いつでも ArnEquals を使用して特定の Amazon リソースネーム (ARN) を指定できることに注意してください。ここでは、簡単にするために、このキーを使用してアカウント内のすべてのログを暗号化できることを示しています。さらに、トレーニング、処理、モデルエンドポイントは、インスタンスの CPU とメモリの使用率、ホスティングの呼び出しのレイテンシーなどに関するメトリクスを公開します。さらに、特定のしきい値を超えたときにイベントを管理者に通知するように Amazon SNS を設定することもできます。トレーニングおよび処理 API のコンシューマーには、次のアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:PutMetricData", "sns:ListTopics" ], "Resource": "*", "Effect": "Allow", "Condition": { "StringLike": { "cloudwatch:namespace": "aws/sagemaker/*" } } }, { "Action": [ "sns:Subscribe", "sns:CreateTopic" ], "Resource": [ "arn:aws:sns:*:*:*SageMaker*", "arn:aws:sns:*:*:*Sagemaker*", "arn:aws:sns:*:*:*sagemaker*" ], "Effect": "Allow" } ] }

AWS CloudTrail での監査

コンプライアンス体制を改善するには、AWS CloudTrail を使用してすべての API を監査します。デフォルトでは、すべての SageMaker AI API が AWS CloudTrail でログに記録されます。CloudTrail を有効にするために追加の IAM アクセス許可は必要ありません。

InvokeEndpoint と InvokeEndpointAsync を除くすべての SageMaker AI のアクションは、CloudTrail によってログに記録され、オペレーションに文書化されます。例えば CreateTrainingJobCreateEndpointCreateNotebookInstance の各アクションに対する呼び出しにより、CloudTrail ログファイルにエントリが生成されます。

CloudTrail の各イベントエントリには、リクエストの生成元に関する情報が含まれます。同一性情報は次の判断に役立ちます。

  • リクエストが、ルートと AWS IAM ユーザー認証情報のどちらを使用して送信されたか。

  • リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたかどうか。

  • リクエストが別の AWS サービスによって行われたかどうか。イベントの例については、「SageMaker AI API コールを CloudTrail でログに記録する」ドキュメントを参照してください。

デフォルトでは、CloudTrail は、ユーザープロファイルの Studio 実行ロール名を各イベントの識別子としてログに記録します。これは、各ユーザーが独自の実行ロールを持っている場合に有効です。複数のユーザーが同じ実行ロールを共有している場合は、sourceIdentity 設定を使用して Studio のユーザープロファイル名を CloudTrail に伝播できます。sourceIdentity 機能を有効にするには、「Amazon SageMaker AI Studio からのユーザーリソースアクセスのモニタリング」を参照してください。共有スペースでは、すべてのアクションがスペース ARN をソースとして参照するため、sourceIdentity を通じて監査することはできません。