

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 先决条件和权限
<a name="advanced-prompt-optimization-prereqs"></a>

## 先决条件
<a name="advanced-prompt-optimization-prereqs-overview"></a>

当您提交高级提示优化任务时，Amazon Bedrock 会使用您的呼叫身份的权限代表您访问您账户中的资源。您用来调用 API 或访问 AWS 控制台的 IAM 用户或角色必须具有以下权限：
+ 管理高级提示优化作业
+ 调用目标基础模型
+ 从您的 Amazon S3 存储桶读取输入数据并将结果写入您的 Amazon S3 存储桶
+ （可选）使用您的 AWS KMS 密钥使用客户管理的密钥 (CMK) 加密任务输出或访问使用 CMK 的 S3 存储桶
+ （可选）调用您的 Lambda 函数进行自定义评估

## 所需的 IAM 权限
<a name="advanced-prompt-optimization-prereqs-iam"></a>

### API 权限
<a name="advanced-prompt-optimization-prereqs-api"></a>

每个高级提示优化 API 都需要对任务资源执行特定的 IAM 操作：


| API 操作 | IAM 操作 | 资源 | 访问级别 | 
| --- | --- | --- | --- | 
| CreateAdvancedPromptOptimizationJob | bedrock:CreateAdvancedPromptOptimizationJob | arn:aws:bedrock:{{region}}:{{account-id}}:advanced-prompt-optimization-job/\* | 写入 | 
| GetAdvancedPromptOptimizationJob | bedrock:GetAdvancedPromptOptimizationJob | arn:aws:bedrock:{{region}}:{{account-id}}:advanced-prompt-optimization-job/\* | 读取 | 
| ListAdvancedPromptOptimizationJobs | bedrock:ListAdvancedPromptOptimizationJobs | arn:aws:bedrock:{{region}}:{{account-id}}:advanced-prompt-optimization-job/\* | 列表 | 
| StopAdvancedPromptOptimizationJob | bedrock:StopAdvancedPromptOptimizationJob | arn:aws:bedrock:{{region}}:{{account-id}}:advanced-prompt-optimization-job/\* | 写入 | 
| BatchDeleteAdvancedPromptOptimization 任务 | bedrock:BatchDeleteAdvancedPromptOptimization Job | arn:aws:bedrock:{{region}}:{{account-id}}:advanced-prompt-optimization-job/\* | 写入 | 

### 模型调用权限
<a name="advanced-prompt-optimization-prereqs-model"></a>

创建任务时，高级提示优化会使用您的来电者凭据（转发访问会话）代表您调用目标模型。您的 IAM 身份必须有权调用指定模型：


| 推理路径 | 需要执行 IAM 操作 | 资源 ARN | 
| --- | --- | --- | 
| ConverseStream （当前） | bedrock:InvokeModelWithResponseStream | arn:aws:bedrock:{{region}}::foundation-model/{{model-id}} | 
| 匡威（非直播） | bedrock:InvokeModel | arn:aws:bedrock:{{region}}::foundation-model/{{model-id}} | 
| Cross-region 推理概况 | bedrock:InvokeModelWithResponseStream | arn:aws:bedrock:\*:{{account-id}}:inference-profile/{{profile-id}} | 

**重要**  
如果您账户中的模型未启用模型访问权限，则任务将失败，并显示：“模型无法访问任何推理 API。验证角色是否有权调用模型。”

### S3 存储桶权限
<a name="advanced-prompt-optimization-prereqs-s3"></a>

您的呼叫身份必须具有对输入数据集的读取权限和对输出位置的写入权限。S3 存储桶必须与任务位于同一区域。

```
{
    "Effect": "Allow",
    "Action": [
        "s3:GetObject",
        "s3:PutObject"
    ],
    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
}
```

如果您的 S3 存储桶使用 CMK 加密，请参阅加密方式 AWS KMS 部分以了解所需的 KMS 权限。

### 使用加密 AWS KMS （可选）
<a name="advanced-prompt-optimization-prereqs-kms"></a>

您可以通过两种方式将 AWS KMS 客户管理的密钥 (CMK) 与高级提示优化配合使用：
+ **任务输出加密**-通过在创建任务时指定`encryptionConfig`参数，使用您的 CMK 加密优化结果。
+ **S3 存储桶加密** — 如果您的 S3 存储桶使用服务器端加密和 KMS 密钥 (SSE-KMS)，则您的身份需要 KMS 权限才能从该存储桶读取输入并将结果写入该存储桶。

您可以为两者使用相同的 KMS 密钥，也可以使用不同的密钥。

所需的 KMS 操作取决于您使用 KMS 的方式：


| 使用案例 | 所需的操作 | 
| --- | --- | 
| 加密任务输出 (encryptionConfig) | kms:Encrypt, kms:GenerateDataKey, kms:DescribeKey | 
| 从 SSE-KMS 加密的 S3 存储桶中读取 | kms:Decrypt | 
| 写入 SSE-KMS 加密的 S3 存储桶 | kms:GenerateDataKey | 

#### 单个 KMS 密钥
<a name="advanced-prompt-optimization-prereqs-kms-single"></a>

如果您对输出加密和 S3 存储桶加密使用相同的密钥：

```
{
    "Effect": "Allow",
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-west-2:123456789012:key/your-kms-key-id"
}
```

#### 分别用于 S3 输入和任务输出加密的 KMS 密钥
<a name="advanced-prompt-optimization-prereqs-kms-separate"></a>

如果您的 S3 输入存储桶使用一个 KMS 密钥，而您想使用不同的 KMS 密钥加密任务输出：

```
{
    "Sid": "KMSDecryptS3Input",
    "Effect": "Allow",
    "Action": [
        "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:us-west-2:123456789012:key/s3-bucket-kms-key-id"
},
{
    "Sid": "KMSEncryptJobOutput",
    "Effect": "Allow",
    "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-west-2:123456789012:key/output-encryption-kms-key-id"
}
```

### 自定义评估 Lambda 权限（可选）
<a name="advanced-prompt-optimization-prereqs-lambda"></a>

如果您使用自定义 Lambda 函数来评估提示质量，则您的调用身份必须有权调用该函数：

```
{
    "Effect": "Allow",
    "Action": ["lambda:InvokeFunction","lambda:GetFunction"],
    "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-evaluation-metric"
}
```

## 示例 IAM 策略
<a name="advanced-prompt-optimization-prereqs-policies"></a>

### Identity-based 策略：允许 AdvPo 作业管理和模型调用
<a name="advanced-prompt-optimization-prereqs-policy-full"></a>

将此策略附加到将创建和管理 AdvPO 任务的 IAM 用户或角色。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "CreateAndManageAdvPOJobs",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateAdvancedPromptOptimizationJob",
                "bedrock:GetAdvancedPromptOptimizationJob",
                "bedrock:ListAdvancedPromptOptimizationJobs",
                "bedrock:StopAdvancedPromptOptimizationJob",
                "bedrock:BatchDeleteAdvancedPromptOptimization		 	 	 Job"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:advanced-prompt-optimization-job/*"
        },
        {
            "Sid": "InvokeModelsForOptimization",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/*",
                "arn:aws:bedrock:*:123456789012:inference-profile/*"
            ]
        },
        {
            "Sid": "S3AccessForInputAndOutput",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-advpo-bucket/*"
        },
        {
            "Sid": "S3ListBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::my-advpo-bucket"
        }
    ]
}
```

### Identity-based 政策： Read-only 获取 AdvPO 职位
<a name="advanced-prompt-optimization-prereqs-policy-readonly"></a>

此策略适用于只需要查看作业状态和结果的用户。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "ViewAdvPOJobs",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetAdvancedPromptOptimizationJob",
                "bedrock:ListAdvancedPromptOptimizationJobs"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:advanced-prompt-optimization-job/*"
        },
        {
            "Sid": "ReadOutputFromS3",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-advpo-bucket/output/*"
        }
    ]
}
```

### Identity-based 策略：仅限于特定型号
<a name="advanced-prompt-optimization-prereqs-policy-restrict"></a>

使用此政策仅允许在特定型号上使用 AdvPo（例如，仅限 Claude Sonnet）。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "AdvPOJobManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateAdvancedPromptOptimizationJob",
                "bedrock:GetAdvancedPromptOptimizationJob",
                "bedrock:ListAdvancedPromptOptimizationJobs",
                "bedrock:StopAdvancedPromptOptimizationJob"
            ],
            "Resource": "arn:aws:bedrock:us-east-1:123456789012:advanced-prompt-optimization-job/*"
        },
        {
            "Sid": "InvokeOnlyClaudeSonnet",
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/anthropic.claude-sonnet-*",
                "arn:aws:bedrock:*:123456789012:inference-profile/us.anthropic.claude-sonnet-*"
            ]
        },
        {
            "Sid": "S3Access",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::my-advpo-bucket/*"
        }
    ]
}
```

### 拒绝策略：阻止使用 AdvPo（SCP 示例）
<a name="advanced-prompt-optimization-prereqs-policy-deny"></a>

用作服务控制策略 (SCP) 可防止整个组织使用 AdvPo。

```
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "DenyAdvPO",
            "Effect": "Deny",
            "Action": [
                "bedrock:CreateAdvancedPromptOptimizationJob",
                "bedrock:StopAdvancedPromptOptimizationJob",
                "bedrock:BatchDeleteAdvancedPromptOptimization		 	 	 Job"
            ],
            "Resource": "*"
        }
    ]
}
```

## Cross-region 推断
<a name="advanced-prompt-optimization-prereqs-cris"></a>

该服务可能会使用跨区域推理 (CRIS) 进行评估和提示重写。对于欧洲地区，该服务将使用欧盟 CRIS 区域。对于以下地区，它可能会使用全球CRIS：ap-south-1（孟买）、sa-east-1（圣保罗）、ap-northeast-2（首尔）、ap-southeast-1（新加坡）。