

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 先決條件和許可
<a name="advanced-prompt-optimization-prereqs"></a>

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

當您提交進階提示最佳化任務時，Amazon Bedrock 會使用呼叫身分的許可，代表您存取帳戶中的資源。您用來呼叫 API 或存取 AWS 主控台的 IAM 使用者或角色必須具有以下許可：
+ 管理進階提示最佳化任務
+ 叫用目標基礎模型
+ 從 讀取輸入資料，並將結果寫入 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}} | 
| Converse （非串流） | bedrock:InvokeModel | arn:aws:bedrock:{{region}}::foundation-model/{{model-id}} | 
| 跨區域推論設定檔 | 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 客戶受管金鑰 (CMKs)：
+ **任務輸出加密** – 在建立任務時指定 `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>

### 身分型政策：允許 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"
        }
    ]
}
```

### 身分型政策：唯讀存取 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/*"
        }
    ]
}
```

### 身分型政策：僅限特定模型
<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": "*"
        }
    ]
}
```

## 跨區域推論
<a name="advanced-prompt-optimization-prereqs-cris"></a>

服務可能會使用跨區域推論 (CRIS) 進行評估和提示重寫。對於歐洲區域，服務將使用 eu CRIS 區域。對於下列區域，它可以使用全域 CRIS：ap-south-1 （孟買）、sa-east-1 （聖保羅）、ap-northeast-2 （首爾）、ap-southeast-1 （新加坡）。