

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

# 前提条件
<a name="model-customize-mtrl-prereqs"></a>

マルチターン RL は SageMaker AI `CreateJob` API を使用します。これには、既存のモデルカスタマイズの前提条件に加えて追加のアクセス許可が必要です。以下の表は、新しいものとすでに説明されているものをまとめたものです。


| 何 | ステータス | 注意事項 | 
| --- | --- | --- | 
| 信頼ポリシー: job.sagemaker.amazonaws.com | 新 | CreateJob API に必要です | 
| 信頼ポリシー: bedrock-agentcore.amazonaws.com | 新 | エージェントランタイムロールで必須 (AgentCore パスのみ) | 
| PassRole: job.sagemaker.amazonaws.com | 新 | 既存の事前要件は sagemaker.amazonaws.com のみを対象としています。 | 
| ジョブアクション (CreateJob、DescribeJob など) | 新 | AmazonSageMakerFullAccess にない | 
| bedrock-agentcore:ListAgentRuntimes | 新 | Studio ランタイムピッカーに必要です | 
| bedrock-agentcore:ListAgentRuntimeVersions | 新 | Studio バージョンセレクタに必要です | 
| AmazonSageMakerJobFullAccess 管理ポリシー | 新 | ジョブ実行ロールにアタッチする | 
| AmazonSageMakerJobRuntimeAccess 管理ポリシー | 新 | エージェントランタイムロールにアタッチする | 
| Lambda、Bedrock デプロイ、S3、KMS、MLflow、CloudWatch | カバー済み | 既存の事前要件または管理ポリシー経由 | 

## 発信者ロール
<a name="model-customize-mtrl-prereqs-caller-role"></a>

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PassRoleForCreateJob",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::<account-id>:role/<ExecutionRoleName>",
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "job.sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Sid": "MTRLJobActions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateJob",
        "sagemaker:DescribeJob",
        "sagemaker:StopJob",
        "sagemaker:DeleteJob"
      ],
      "Resource": "arn:aws:sagemaker:*:*:job/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "MTRLListJobsPermission",
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListJobs",
        "sagemaker:ListJobSchemaVersions",
        "sagemaker:DescribeJobSchemaVersion"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

PassRole — 呼び出し元が実行ロールを に委任できるようにします`job.sagemaker.amazonaws.com`。

## マネージドポリシー
<a name="model-customize-mtrl-prereqs-managed-policies"></a>

マルチターン RL は 2 つの AWS 管理ポリシーを使用します。ジョブを作成する前に、各 を適切なロールにアタッチします。

**AmazonSageMakerJobFullAccess** – SageMaker AI ジョブ実行ロール ( `RoleArn` に渡す ) にアタッチします`CreateJob`。

このポリシーは、実行中に必要なアクセス許可をジョブに付与します。S3 のトレーニングデータとチェックポイントへの読み取り/書き込みアクセス、S3-side暗号化のための KMS アクセス、SageMaker AI ハブコンテンツとモデルパッケージへのアクセス、MLflow 実験トレース、Bedrock AgentCore または Lambda を介したエージェントの呼び出し、VPC ネットワークインターフェイス管理、CloudWatch Logs 書き込みです。リファレンス: [AmazonSageMakerJobFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerJobFullAccess.html)。

**AmazonSageMakerJobRuntimeAccess** – エージェントランタイムロール (Bedrock AgentCore 上か Lambda フォワーダーの背後かにかかわらず、エージェントが実行するロール) にアタッチします。このポリシーは、ロールアウト中にエージェントが呼び出すランタイム APIs に `sagemaker:Sample`、`sagemaker:SampleWithResponseStream`、`sagemaker:CompleteRollout`、`sagemaker:UpdateReward`、および を付与します`sagemaker:CallWithBearerToken`。リファレンス: [AmazonSageMakerJobRuntimeAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerJobRuntimeAccess.html)。

## 信頼ポリシーの更新
<a name="model-customize-mtrl-prereqs-trust-policy"></a>

を実行ロールの信頼ポリシー`job.sagemaker.amazonaws.com`に追加します。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "job.sagemaker.amazonaws.com"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

Bedrock AgentCore を使用している場合、エージェントのランタイムロールには独自の信頼ポリシーも必要です。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

## Studio UI の追加インラインポリシー
<a name="model-customize-mtrl-prereqs-studio-policy"></a>

SageMaker AI Studio からジョブを送信する場合は、SageMaker AI ドメイン実行ロールに次のインラインポリシーを追加します。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "MTRLJobActions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateJob",
        "sagemaker:DescribeJob",
        "sagemaker:StopJob",
        "sagemaker:DeleteJob",
        "sagemaker:ListJobs",
        "sagemaker:ListJobSchemaVersions",
        "sagemaker:DescribeJobSchemaVersion"
      ],
      "Resource": "arn:aws:sagemaker:*:*:job/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "BedrockAgentCoreListPermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:ListAgentRuntimes",
        "bedrock-agentcore:ListAgentRuntimeVersions"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "PassRoleForCreateJob",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::*:role/*",
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "job.sagemaker.amazonaws.com",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

## カスタムポリシーオプション
<a name="model-customize-mtrl-prereqs-custom-policy"></a>

 AWS マネージドポリシーを使用する代わりに独自のポリシーを定義する場合は、開始点として以下を使用します。

**SageMaker AI ジョブ実行ロールポリシー** ( に相当`AmazonSageMakerJobFullAccess`):

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "S3Permissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "s3:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "KMSPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:*:*:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": "s3.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "KMSDescribeKey",
      "Effect": "Allow",
      "Action": "kms:DescribeKey",
      "Resource": "arn:aws:kms:*:*:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "SageMakerHubPermissions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:DescribeHubContent"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:hub/*",
        "arn:aws:sagemaker:*:*:hub-content/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "SageMakerModelPackagePermissions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:AccessModelPackage",
        "sagemaker:CreateModelPackage",
        "sagemaker:DescribeModelPackage",
        "sagemaker:DescribeModelPackageGroup"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:model-package/*",
        "arn:aws:sagemaker:*:*:model-package-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "MLflowPermissions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:DescribeMlflowApp",
        "sagemaker:CallMlflowAppApi",
        "sagemaker-mlflow:CreateExperiment",
        "sagemaker-mlflow:CreateRun",
        "sagemaker-mlflow:UpdateRun",
        "sagemaker-mlflow:LogBatch",
        "sagemaker-mlflow:GetExperimentByName",
        "sagemaker-mlflow:GetMetricHistory",
        "sagemaker-mlflow:GetRun",
        "sagemaker-mlflow:StartTrace",
        "sagemaker-mlflow:EndTrace",
        "sagemaker-mlflow:SearchTraces",
        "sagemaker-mlflow:ListArtifacts"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:mlflow-app/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "BedrockAgentCorePermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:InvokeAgentRuntime",
        "bedrock-agentcore:StopRuntimeSession",
        "bedrock-agentcore:GetAgentRuntime"
      ],
      "Resource": "arn:aws:bedrock-agentcore:*:*:runtime/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EC2NetworkPermissions",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeDhcpOptions"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EC2NetworkInterfaceTagPermissions",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:*:*:network-interface/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "ec2:CreateAction": "CreateNetworkInterface"
        }
      }
    },
    {
      "Sid": "EC2NetworkInterfaceDeletePermissions",
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "CloudWatchLogsPermissions",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "LambdaPermissions",
      "Effect": "Allow",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Resource": "arn:aws:lambda:*:*:function:*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

**実行ロールの信頼関係:**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "job.sagemaker.amazonaws.com"
      },
      "Action": ["sts:AssumeRole", "sts:TagSession"]
    }
  ]
}
```

**AmazonSageMakerJobRuntimeAccess 相当 \+ BedrockAgentCoreFullAccess**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SageMakerJobRuntimePermissions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:Sample",
        "sagemaker:SampleWithResponseStream",
        "sagemaker:CompleteRollout",
        "sagemaker:UpdateReward"
      ],
      "Resource": "arn:aws:sagemaker:*:*:job/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "BearerTokenPermissions",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CallWithBearerToken"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}
```

**エージェントランタイムロールの信頼関係:**

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

## Lambda フォワーダーノート
<a name="model-customize-mtrl-prereqs-lambda-forwarder"></a>

既存のモデルカスタマイズ Lambda アクセス許可は、名前に *SageMaker* または *sagemaker* が含まれる関数を対象としています。Lambda フォワーダーが別の命名規則を使用している場合は、その ARN を明示的に追加します。

```
{
  "Sid": "CustomAgentLambdaPermission",
  "Effect": "Allow",
  "Action": ["lambda:InvokeFunction"],
  "Resource": "arn:aws:lambda:*:*:function:your-agent-forwarder-function-name",
  "Condition": {
    "StringEquals": {"aws:ResourceAccount": "${aws:PrincipalAccount}"}
  }
}
```

## その他のセットアップ
<a name="model-customize-mtrl-prereqs-other-setup"></a>
+ カスタマーマネージド VPC を使用する場合は、「」を参照してください[マルチターン RL ジョブの VPC を設定する](model-customize-mtrl-vpc.md)。
+ KMS キーを使用してジョブの入力と出力を暗号化する場合、実行ロールと呼び出し元ロールには追加のアクセス許可が必要です。「[マルチターン強化学習のための保管時の暗号化](model-customize-mtrl-encryption-at-rest.md)」を参照してください。