

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

# 設定 IAM 許可
<a name="configure-iam-role-policy-credentials"></a>

Amazon Location Jobs 需要 IAM 執行角色，授予服務存取 Amazon S3 儲存貯體的許可。當您執行任務時，Amazon Location 會擔任此角色，從輸入儲存貯體讀取輸入檔案，並代表您將輸出結果寫入輸出儲存貯體。您可以透過建立具有所需 Amazon S3 許可的 IAM 政策，並將其連接至具有允許 Amazon Location 服務擔任該角色之信任政策的 IAM 角色，來提供這些許可。

**注意**  
您建立的 Amazon S3 輸入和輸出儲存貯體必須存在於您計劃執行任務 AWS 區域 的相同 中。您建立的 IAM 資源必須在相同的帳戶中建立。

## 步驟 1：建立 IAM 政策
<a name="create-iam-policy-jobs"></a>

建立授予 Amazon Location 任務所需許可的 IAM 政策。

**為 Amazon Location 任務建立 IAM 政策**

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇 **Create policy** (建立政策)。

1. 選擇 **JSON** 索引標籤並輸入下列政策文件，將 {{INPUT\_BUCKET\_NAME}} 和 {{OUTPUT\_BUCKET\_NAME}} 取代為您的儲存貯體名稱：

   ```
   {
     "Version": "2012-10-17", 		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:GetObjectVersion",
           "s3:GetBucketVersioning"
         ],
         "Resource": [
           "arn:aws:s3:::{{INPUT_BUCKET_NAME}}",
           "arn:aws:s3:::{{INPUT_BUCKET_NAME}}/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:AbortMultipartUpload"
         ],
         "Resource": [
           "arn:aws:s3:::{{OUTPUT_BUCKET_NAME}}/*"
         ]
       }
     ]
   }
   ```

1. 選擇**下一步**。

1. 針對**政策名稱**，請輸入描述性名稱，例如 `{{LocationJobsS3AccessPolicy}}`。

1. 選擇**建立政策**。

下表說明此政策授予的許可：


| 權限 | Description | 
| --- | --- | 
|  s3:GetObject  | 允許 Amazon Location 從輸入儲存貯體讀取輸入檔案。 | 
|  s3:ListBucket  | 允許 Amazon Location 列出輸入儲存貯體中的檔案，以識別要處理的所有輸入檔案。 | 
|  s3:GetObjectVersion  | 允許 Amazon Location 存取特定版本的輸入檔案。必要，因為必須在儲存貯體上啟用版本控制。 | 
|  s3:GetBucketVersioning  | 允許 Amazon Location 確認您的輸入儲存貯體上已啟用版本控制。 | 
|  s3:PutObject  | 允許 Amazon Location 將輸出結果寫入您的輸出儲存貯體。 | 
|  s3:AbortMultipartUpload  | 允許 Amazon Location 在寫入大型輸出檔案時清除失敗的分段上傳。 | 

**注意**  
此政策僅授予 Amazon Location Jobs 運作所需的許可，以遵循最低權限原則。此政策會將讀取許可限制在您的輸入儲存貯體，並將許可寫入您的輸出儲存貯體。

**使用 建立 IAM 政策 AWS CLI**

1. 使用`location-jobs-policy.json`下列內容建立名為 的檔案，將 {{INPUT\_BUCKET\_NAME}} 和 {{OUTPUT\_BUCKET\_NAME}} 取代為您的儲存貯體名稱：

   ```
   {
     "Version": "2012-10-17", 		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:GetObjectVersion",
           "s3:GetBucketVersioning"
         ],
         "Resource": [
           "arn:aws:s3:::{{INPUT_BUCKET_NAME}}",
           "arn:aws:s3:::{{INPUT_BUCKET_NAME}}/*"
         ]
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:AbortMultipartUpload"
         ],
         "Resource": [
           "arn:aws:s3:::{{OUTPUT_BUCKET_NAME}}/*"
         ]
       }
     ]
   }
   ```

1. 建立政策：

   ```
   aws iam create-policy \
       --policy-name {{LocationJobsS3AccessPolicy}} \
       --policy-document file://location-jobs-policy.json
   ```

1. 請注意來自輸出的政策 ARN。下一個步驟需要用到此 ARN。

## 步驟 2：建立執行角色
<a name="create-execution-role-jobs"></a>

建立 Amazon Location 擔任的 IAM 角色，以在任務執行期間存取您的 Amazon S3 儲存貯體。

信任政策允許 Amazon Location 服務 (`geo.amazonaws.com`) 擔任此角色。Amazon Location 在任務執行期間存取 Amazon S3 儲存貯體需要此信任關係。

**為 Amazon Location 任務建立執行角色**

1. 在 IAM 主控台導覽窗格中，選擇 **Roles** (角色)。

1. 選擇建**立角色**。

1. 對於 **Trusted entity type** (信任的實體類型)，選擇 **Custom trust policy** (自訂信任政策)。

1. 輸入下列信任政策，將 {{ACCOUNT\_ID}} 取代為 AWS 您的帳戶 ID：

   ```
   {
     "Version": "2012-10-17", 		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "geo.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "{{ACCOUNT_ID}}"
           }
         }
       }
     ]
   }
   ```

1. 選擇**下一步**。

1. 搜尋並選取您在步驟 1 中建立的政策 （例如 `{{LocationJobsS3AccessPolicy}}`)。

1. 選擇**下一步**。

1. 針對**角色名稱**，輸入描述性名稱，例如 `LocationServiceJobExecutionRole`。

1. 選擇建**立角色**。

**使用 建立執行角色 AWS CLI**

1. 使用`trust-policy.json`下列內容建立名為 的檔案，並以 AWS 您的帳戶 ID 取代 {{ACCOUNT\_ID}}：

   ```
   {
     "Version": "2012-10-17", 		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "geo.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "{{ACCOUNT_ID}}"
           }
         }
       }
     ]
   }
   ```

1. 建立角色：

   ```
   aws iam create-role \
       --role-name LocationServiceJobExecutionRole \
       --assume-role-policy-document file://trust-policy.json
   ```

1. 連接您在步驟 1 中建立的政策 （如果不同，請將 {{ACCOUNT\_ID}} 取代為 AWS 您的帳戶 ID，並將 {{LocationJobsS3AccessPolicy}} 取代為政策名稱）：

   ```
   aws iam attach-role-policy \
       --role-name LocationServiceJobExecutionRole \
       --policy-arn arn:aws:iam::{{ACCOUNT_ID}}:policy/{{LocationJobsS3AccessPolicy}}
   ```

1. 取得角色 ARN：

   ```
   aws iam get-role \
       --role-name LocationServiceJobExecutionRole \
       --query 'Role.Arn' \
       --output text
   ```

1. 請注意輸出中的角色 ARN。使用 `ExecutionRoleArn` 參數啟動任務時，您需要此 ARN。

建立角色之後，請記下角色 ARN。使用 `ExecutionRoleArn` 參數啟動任務時，您需要此 ARN。如需詳細資訊，請參閱[準備輸入資料](preparing-input-data.md)。

## 安全最佳實務
<a name="iam-security-best-practices"></a>

設定 Amazon Location Jobs 的 IAM 許可時，請遵循下列安全最佳實務：
+  **使用特定儲存貯體 ARNs：**將政策中的預留位置儲存貯體名稱取代為您實際的儲存貯體名稱，以限制存取您打算使用的儲存貯體。
+  **單獨的輸入和輸出儲存貯體：**使用不同的輸入和輸出儲存貯體，以保持讀取和寫入許可的明確分離。
+  **啟用 Amazon S3 儲存貯體版本控制：**必須在儲存貯體上啟用版本控制。這是 Amazon Location Jobs 正常運作的必要項目。
+  **使用 Amazon S3 儲存貯體政策：**將儲存貯體政策新增至 Amazon S3 儲存貯體，以取得 IAM 政策以外的其他存取控制。
+  **監控角色用量：**使用 監控 Amazon Location Jobs 使用執行角色的時間和方式。