Amazon Virtual Private Cloud で Amazon SageMaker Ground Truth ラベル付けジョブを実行する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Virtual Private Cloud で Amazon SageMaker Ground Truth ラベル付けジョブを実行する

Ground Truth は、Amazon VPC で次の機能をサポートしています。

  • Amazon S3 バケットポリシーを使用して、特定の Amazon VPC エンドポイントまたは特定の VPC からのバケットへのアクセスを制御できます。ラベル付けジョブを起動し、入力データが VPC 内のユーザーに制限されている Amazon S3 バケットにある場合は、バケットポリシーを追加して、Ground Truth エンドポイントにバケットへのアクセス許可を付与することもできます。詳細については、「Ground Truth による VPC 制限付き Amazon S3 バケットへのアクセス許可」を参照してください。

  • VPC で自動データラベリングジョブを起動できます。VPC 設定を使用して VPC サブネットとセキュリティグループを指定します。 はこの設定 SageMaker を使用して、VPC 内の自動データラベリングに使用されるトレーニングジョブと推論ジョブを起動します。詳細については、「VPC での自動データラベリングジョブの作成」を参照してください。

これらのオプションは、以下のいずれかの方法で使用できます。

  • これらの方法の両方を使用して、自動データラベリングが有効になっている VPC で保護された Amazon S3 バケットを使用してラベリングジョブを開始できます。

  • VPC で保護されたバケットを使用して、任意の組み込みタスクタイプでラベリングジョブを起動できます。

  • VPC で保護されたバケットを使用してカスタムラベルリングワークフローを起動できます。Ground Truth は、AWS PrivateLink エンドポイントを使用して、前注釈および後注釈の Lambda 関数と連携します。

Amazon VPC でラベリングジョブを作成する前に、「VPC で Ground Truth ラベル付けジョブを実行するための前提条件」を確認しておくことをお勧めします。

VPC で Ground Truth ラベル付けジョブを実行するための前提条件

Amazon VPC で Ground Truth ラベリングジョブを作成する前に、以下の前提条件を確認します。

  • Ground Truth を初めて使用する場合は、「Getting started」で、ラベリングジョブの作成方法を確認してください。

  • 入力データが VPC で保護された Amazon S3 バケットにある場合、ワーカーは VPC からワーカーポータルにアクセスする必要があります。VPC ベースのラベル付けジョブでは、プライベートワークチームを使用する必要があります。プライベートワークチームの作成に関する詳細は、「Use a Private Workforce」を参照してください。

  • 以下の前提条件は、VPC でラベル付けジョブを起動する場合に固有です。

  • Ground Truth のセキュリティおよびアクセス許可セクションを確認し、以下の条件を満たしていることを確認します。

    • ラベリングジョブを作成するユーザーには、必要なすべてのアクセス許可があります。

    • 必要なアクセス許可を持つ IAM 実行ロールが作成されました。ユースケースに微調整されたアクセス許可を必要としない場合は、「Grant General Permissions To Get Started Using Ground Truth」で説明されている IAM 管理ポリシーを使用することをお勧めします。

    • VPC が sagemaker-labeling-data-regionsm-bxcb-region-saved-task-states S3 バケットにアクセスできるようにします。これらはシステム所有のリージョン化された S3 バケットで、ワーカーがタスクに取り組んでいるときにワーカーポータルからアクセスされます。これらのバケットを使用してシステム管理データとやり取りします。

Ground Truth による VPC 制限付き Amazon S3 バケットへのアクセス許可

以下のセクションでは、アクセスが VPC と VPC エンドポイントに制限されている Amazon S3 バケットを使用してラベリングジョブを起動するために Ground Truth が必要とするアクセス許可について詳しく説明します。Amazon S3 バケットへのアクセスを VPC に制限する方法については、「Amazon Simple Storage Service ユーザーガイド」の「バケットポリシーを使用した VPC エンドポイントからのアクセスコントロール」を参照してください。S3 バケットにポリシーを追加する方法については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

注記

既存のバケットのポリシーを変更すると、IN_PROGRESS Ground Truth ジョブが失敗する可能性があります。新しいバケットを使用して新しいジョブを開始することをお勧めします。同じバケットを引き続き使用する場合は、次のいずれかを実行します。

  • IN_PROGRESS のジョブが終了するまで待ちます。

  • コンソールまたは AWS CLIを使用してジョブを終了します。

AWS PrivateLink エンドポイントを使用して、VPC 内のユーザーに Amazon S3 バケットへのアクセスを制限できます。例えば、次の S3 バケットポリシーは、<vpc> とエンドポイント <vpc-endpoint> からのみ、特定のバケット <bucket-name> へのアクセスを許可します。このポリシーを変更する場合は、赤色の斜体テキストをすべてリソースと仕様に置き換える必要があります。

注記

次のポリシーでは、VPC 内のユーザー以外のすべてのエンティティに対して、Action に記載されているアクションの実行を拒否します。このリストにアクションを含めない場合でも、このバケットへのアクセス許可と、そのアクションを実行するアクセス許可を持つエンティティであればアクセス可能です。例えば、ユーザーに Amazon S3 バケットで GetBucketLocation を実行するアクセス許可がある場合、以下のポリシーでは、そのユーザーが VPC の外でこのアクションを実行することを制限しません。

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<vpc>" ] } } } ] }

Ground Truth は、ラベリングジョブの設定に使用する S3 バケットで次の Amazon S3 アクションを実行できる必要があります。

"s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketLocation"

これを行うには、前述のように Ground Truth エンドポイントをバケットポリシーに追加します。次の表に、各 AWS リージョンの Ground Truth サービスエンドポイントを示します。ラベリングジョブの実行に使用するのと同じ AWS リージョンのエンドポイントをバケットポリシーに追加します。

AWS リージョン Ground Truth エンドポイント
us-east-2 vpce-02569ba1c40aad0bc
us-east-1 vpce-08408e335ebf95b40
us-west-2 vpce-0ea07aa498eb78469
ca-central-1 vpce-0d46ea4c9ff55e1b7
eu-central-1 vpce-0865e7194a099183d
eu-west-2 vpce-0bccd56798f4c5df0
eu-west-1 vpce-0788e7ed8628e595d
ap-south-1 vpce-0d7fcda14e1783f11
ap-southeast-2 vpce-0b7609e6f305a77d4
ap-southeast-1 vpce-0e7e67b32e9efed27
ap-northeast-2 vpce-007893f89e05f2bbf
ap-northeast-1 vpce-0247996a1a1807dbd

例えば、以下のポリシーでは GetObjectPutObject のアクションを制限します。

  • VPC 内のユーザーへの Amazon S3 バケット (<vpc>)

  • VPC エンドポイント (<vpc-endpoint>)

  • Ground Truth サービスのエンドポイント (<ground-truth-endpoint>)

{ "Version": "2012-10-17", "Id": "1", "Statement": [ { "Sid": "DenyAccessFromNonGTandCustomerVPC", "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "ForAllValues:StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<ground-truth-endpoint>" ], "aws:SourceVpc": "<vpc>" } } } ] }

Ground Truth コンソールを使用してラベリングジョブを起動するアクセス許可をユーザーに付与する場合は、aws:PrincipalArn 条件を使用してユーザーの ARN をバケットポリシーに追加する必要もあります。このユーザーには、ラベリングジョブの起動に使用するバケットで次の Amazon S3 アクションを実行するアクセス許可も必要です。

"s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketCors", "s3:PutBucketCors", "s3:ListAllMyBuckets",

次のコードは、S3 バケット <bucket-name>Action に記載されているアクションを実行するアクセス許可を以下に制限するバケットポリシーの例です。

  • <role-name>

  • aws:sourceVpce に記載されている VPC エンドポイント

  • <vpc> という名前の VPC 内のユーザー

{ "Version": "2012-10-17", "Id": "1", "Statement": [ { "Sid": "DenyAccessFromNonGTandCustomerVPC", "Effect": "Deny", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>/*", "arn:aws:s3:::<bucket-name>" ], "Condition": { "ForAllValues:StringNotEquals": { "aws:sourceVpce": [ "<vpc-endpoint>", "<ground-truth-endpoint>" ], "aws:PrincipalArn": "arn:aws:iam::<aws-account-id>:role/<role-name>", "aws:SourceVpc": "<vpc>" } } } ] }
注記

入出力データに使用する Amazon VPC インターフェイスエンドポイントと保護された Amazon S3 バケットは、ラベル付けジョブの作成に使用するリージョンと同じ AWS リージョンに配置する必要があります。

Ground Truth に Amazon S3 バケットへのアクセス許可を付与した後、ラベリングジョブの作成のいずれかのトピックを使用して、ラベリングジョブを起動することができます。入力データバケットと出力データバケットに VPC 制限のある Amazon S3 バケットを指定します。

VPC での自動データラベリングジョブの作成

Amazon VPC を使用して自動データラベリングジョブを作成するには、Ground Truth コンソールまたは CreateLabelingJob API オペレーションを使用して VPC 設定を指定します。 SageMaker は、指定したサブネットとセキュリティグループを使用して、自動ラベル付けに使用されるトレーニングジョブと推論ジョブを起動します。

重要

VPC 設定で自動データラベリングジョブを起動する前に、ラベリングジョブに使用する VPC を使用して Amazon S3 VPC エンドポイントを作成していることを確認します。この方法については、「Create an Amazon S3 VPC Endpoint」を参照してください。

さらに、VPC 制限のある Amazon S3 バケットを使用して自動データラベリングジョブを作成する場合は、「Ground Truth による VPC 制限付き Amazon S3 バケットへのアクセス許可」の指示に従って、バケットへのアクセス許可を Ground Truth に付与する必要があります。

次の手順を使用して、ラベリングジョブリクエストに VPC 設定を追加する方法を確認します。

自動データラベリングジョブ (コンソール) に VPC 設定を追加する
  1. ラベリングジョブの作成 (コンソール) の指示に従い、ステップ 15 までの手順の各ステップを完了します。

  2. [ワーカー] セクションで、[自動データラベリングを有効にする] の横にあるチェックボックスを選択します。

  3. 矢印を選択して、コンソールの [VPC 設定] セクションを最大化します。

  4. 自動データラベリングジョブに使用する [仮想プライベートクラウド (VPC)] を指定します。

  5. [サブネット] のドロップダウンリストを選択し、1 つ以上のサブネットを選択します。

  6. [セキュリティグループ] のドロップダウンリストを選択し、1 つ以上のグループを選択します。

  7. ラベリングジョブの作成 (コンソール) の手順の残りのステップをすべて完了します。

VPC 設定を自動データラベリングジョブ (API) に追加する

Ground Truth API オペレーション CreateLabelingJob を使用してラベリングジョブを設定するには、自動データラベリングジョブ (API) の作成の手順に従ってリクエストを設定します。このドキュメントで説明されているパラメータに加えて、次のスキーマを使用して 1 つ以上のサブネットとセキュリティグループを指定するために、LabelingJobResourceConfigVpcConfig パラメータを含める必要があります。

"LabelingJobAlgorithmsConfig": { "InitialActiveLearningModelArn": "string", "LabelingJobAlgorithmSpecificationArn": "string", "LabelingJobResourceConfig": { "VolumeKmsKeyId": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] } } }

以下は、米国東部 (バージニア北部) リージョンで、プライベートワークフォースを使用して自動ラベリングジョブを作成する AWS Python SDK (Boto3) リクエストの例です。赤色の斜体テキストを、ラベリングジョブのリソースと仕様に置き換えます。CreateLabelingJob オペレーションの詳細については、「Create a Labeling Job (API)」チュートリアルとCreateLabeling「Job API ドキュメント」を参照してください。

import boto3 client = boto3.client(service_name='sagemaker') response = client.create_labeling_job( LabelingJobName="example-labeling-job", LabelAttributeName="label", InputConfig={ 'DataSource': { 'S3DataSource': { 'ManifestS3Uri': "s3://bucket/path/manifest-with-input-data.json" } } }, "LabelingJobAlgorithmsConfig": { "LabelingJobAlgorithmSpecificationArn": "arn:aws:sagemaker:us-east-1:027400017018:labeling-job-algorithm-specification/tasktype", "LabelingJobResourceConfig": { "VpcConfig": { "SecurityGroupIds": [ "sg-01233456789", "sg-987654321" ], "Subnets": [ "subnet-e0123456", "subnet-e7891011" ] } } }, OutputConfig={ 'S3OutputPath': "s3://bucket/path/file-to-store-output-data", 'KmsKeyId': "string" }, RoleArn="arn:aws:iam::*:role/*, LabelCategoryConfigS3Uri="s3://bucket/path/label-categories.json", StoppingConditions={ 'MaxHumanLabeledObjectCount': 123, 'MaxPercentageOfInputDatasetLabeled': 123 }, HumanTaskConfig={ 'WorkteamArn': "arn:aws:sagemaker:region:*:workteam/private-crowd/*", 'UiConfig': { 'UiTemplateS3Uri': "s3://bucket/path/custom-worker-task-template.html" }, 'PreHumanTaskLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype", 'TaskKeywords': [ "Images", "Classification", "Multi-label" ], 'TaskTitle': "Add task title here", 'TaskDescription': "Add description of task here for workers", 'NumberOfHumanWorkersPerDataObject': 1, 'TaskTimeLimitInSeconds': 3600, 'TaskAvailabilityLifetimeInSeconds': 21600, 'MaxConcurrentTaskCount': 1000, 'AnnotationConsolidationConfig': { 'AnnotationConsolidationLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:ACS-tasktype" }, Tags=[ { 'Key': "string", 'Value': "string" }, ] )