Ground Truth で AWS Lambda を使用するために必要なアクセス許可 - Amazon SageMaker

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

Ground Truth で AWS Lambda を使用するために必要なアクセス許可

Ground Truth で AWS Lambda を作成および使用するには、次の一部またはすべてを設定する必要があります。

  • AWS Lambda を使用して注釈前および注釈後の Lambda 関数を作成し、ラベル付けジョブを作成するときにそれらを選択するには、IAM ロールまたはユーザー (総称して IAM エンティティ) にアクセス許可を付与する必要があります。

  • ラベル付けジョブが設定されたときに指定された IAM 実行ロールには、注釈前と注釈後の Lambda 関数を呼び出すためのアクセス許可が必要です。

  • 注釈後の Lambda 関数では、Amazon S3 にアクセスするためのアクセス許可が必要な場合があります。

以下のセクションでは、IAM エンティティを作成し、前述したアクセス許可を付与する方法について学習します。

AWS Lambda 関数を作成、選択するためのアクセス許可を付与する

注釈前と注釈後の Lambda 関数の開発に詳細なアクセス許可を必要としない場合は、AWS 管理ポリシーAWSLambda_FullAccessをIAM ユーザーまたはロールにアタッチできます。このポリシーは、すべての Lambda 機能を使用する幅広いアクセス許可と、Lambda がやりとりする他の AWS サービスでアクションを実行するアクセス許可を付与します。

セキュリティを重視したユースケース向けにより詳細なポリシーを作成するには、AWS Lambda デベロッパーガイドのドキュメント Lambda の ID ベースの IAM ポリシーを参照して、ユースケースに合った IAM ポリシーを作成する方法を確認してください。

Lambda コンソールを使用するポリシー

IAM エンティティに Lambda コンソールを使用する権限を付与する場合は、 AWS Lambda デベロッパーガイドの「Lambda コンソールを使用する」を参照してください。

さらに、ユーザーが Lambda コンソールで AWS Serverless Application Repositoryを使用して Ground Truth スターターの注釈前と注釈後の関数にアクセスしてデプロイできるようにする場合は、関数をデプロイする場所である <aws-region> (ラベル付けジョブの作成に使用されたのと同じ AWS リージョンである必要があります)を指定し、次のポリシーを IAM ロールに追加する必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "serverlessrepo:ListApplicationVersions", "serverlessrepo:GetApplication", "serverlessrepo:CreateCloudFormationTemplate" ], "Resource": "arn:aws:serverlessrepo:<aws-region>:838997950401:applications/aws-sagemaker-ground-truth-recipe" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "serverlessrepo:SearchApplications", "Resource": "*" } ] }

Ground Truth コンソールで Lambda 関数を表示するためのポリシー

ユーザーがカスタムラベル付けジョブを作成しているときに、IAM エンティティに Ground Truth コンソールで Lambda 関数を表示するためのアクセス許可を付与するには、エンティティには、「Amazon を使用するアクセス許可をIAM に付与する SageMaker Ground Truth」で説明されているアクセス許可が必要です。これには、「カスタムラベル付けワークフローのアクセス許可」セクションで説明されているアクセス許可を含みます。

AWS Lambda 関数を呼び出す IAM 実行ロールアクセス許可を付与する

IAM 管理ポリシー AmazonSageMakerGroundTruthExecution をラベル付けジョブの作成に使用される IAM 実行ロールに追加すると、このロールには、関数名に次の文字列のいずれかを含む Lambda 関数を一覧表示して呼び出すアクセス許可があります: GtRecipeSageMakerSagemakersagemaker、またはLabelingFunction

注釈前または注釈後の Lambda 関数名に前の段落の用語のいずれかが含まれていない場合、または AmazonSageMakerGroundTruthExecution 管理ポリシーの用語よりも詳細なアクセス許可が必要な場合は、次のようなポリシーを追加して、注釈前と注釈後関数を呼び出すための実行ロールアクセス許可を追加できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:<region>:<account-id>:function:<pre-annotation-lambda-name>", "arn:aws:lambda:<region>:<account-id>:function:<post-annotation-lambda-name>" ] } ] }

注釈にアクセスするための注釈後の Lambda アクセス許可を付与する

後注釈 Lambda で説明したように、注釈後 Lambda リクエストには、Amazon S3 内の注釈データの場所が含まれます。この場所は、payload オブジェクトの s3Uri 文字列で特定されます。注釈を取り込みながら処理するには、シンプルなパススルー関数の場合でも、注釈後の Lambda 実行ロールに必要なアクセス許可を割り当てて、Amazon S3 からファイルを読み取る必要があります。

Lambda を設定し、Amazon S3 の注釈データにアクセスするにはいくつかの方法があります。2 つの一般的な方法は次のとおりです。

  • Lambda 実行ロールが SageMaker で特定された実行ロールroleArn注釈後 Lambda リクエストで。この SageMaker 実行ロールは、ラベル付けジョブの作成に使用されるロールで、注釈データが格納されている Amazon S3 出力バケットにアクセスできます。

  • Lambda 実行ロールに、Amazon S3 出力バケットに直接アクセスするためのアクセス許可を付与します。

次のセクションでは、これらのオプションを設定する方法について説明します。

引き受ける Lambda アクセス許可を付与する SageMaker 実行ロール

Lambda 関数が SageMaker 実行ロールの場合は、Lambda 関数の実行ロールにポリシーをアタッチし、 SageMaker Lambda がそれを引き受けられるようにするための実行ロール。

  1. 以下の IAM ポリシーをアタッチします。Lambda 関数の実行ロールに、 SageMaker で特定された実行ロールResource222222222222AWS アカウント ID に置き換えます。sm-execution-role を引き受けるロールの名前に置き換えます。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/sm-execution-role" } }
  2. 信頼ポリシーの変更の SageMaker 以下を含む実行ロールStatement222222222222AWS アカウント ID に置き換えます。my-lambda-execution-role を引き受けるロールの名前に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::222222222222:role/my-lambda-execution-role" }, "Action": "sts:AssumeRole" } ] }

S3 へのアクセス権限を Lambda 実行ロールに付与する

次のようなポリシーを注釈後の Lambda 関数の実行ロールに追加して、S3 読み取り権限を付与できます。DOC-EXAMPLE-BUCKET を、ラベル付けジョブの作成時に指定する出力バケットの名前に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Lambda コンソールで Lambda 実行ロールに S3 読み取りアクセス許可を追加するには、以下の手順を使用します。

S3 読み取りアクセス許可を注釈後 Lambda に追加するには以下の手順に従います。

  1. Lambda コンソールの [Functions] (関数) ページを開きます。

  2. 注釈後関数の名前を選択します。

  3. [設定] を選択して、[アクセス許可] を選択します。

  4. [Role name] (ロール名) を選択すると、IAM コンソールで新しいタブにそのロールの概要ページが開きます。

  5. [Attach policies] (ポリシーをアタッチ) を選択します。

  6. 次のいずれかを実行します。

    • AmazonS3ReadOnlyAccess を検索して選択し、アカウント内のすべてのバケットとオブジェクトを読み取るアクセス許可を関数に付与します。

    • より詳細なアクセス許可が必要な場合は、[Create policy] (ポリシーの作成) をクリックし、前のセクションのポリシー例を使用してポリシーを作成します。ポリシーを作成したら、実行ロールの概要ページに戻る必要があります。

  7. AmazonS3ReadOnlyAccess 管理ポリシーを使用した場合は、[Attach policy] (ポリシーのアタッチ)を選択します。

    新しいポリシーを作成した場合は、Lambda 実行ロールの概要ページに戻り、作成したポリシーをアタッチします。