

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

# 設定 Amazon Rekognition 自訂標籤
<a name="setting-up"></a>

以下指示介紹如何設定 Amazon Rekognition 自訂標籤主控台和 SDK。

請注意，您可以透過以下瀏覽器使用 Amazon Rekognition 自訂標籤主控台：
+ **Chrome** － 版本 21 或更新的版本
+ **Firefox** － 版本 27 或更新的版本
+ **Microsoft Edge** － 版本 88 或更新的版本。
+ **Safari** － 版本 7 或更新的版本。此外，您無法使用 Safari 透過 Amazon Rekognition 自訂標籤主控台繪製邊界框。如需詳細資訊，請參閱[使用週框方塊標記物件](md-localize-objects.md)。

初次使用 Amazon Rekognition 自訂標籤 之前，請先完成以下任務：

**Topics**
+ [步驟 1：建立 AWS 帳戶](su-account.md)
+ [步驟 2：設定 Amazon Rekognition 自訂標籤主控台權限](su-console-policy.md)
+ [步驟 3：建立主控台儲存貯體](su-create-console-bucket.md)
+ [步驟 4：設定 AWS CLI 和 AWS SDKs](su-awscli-sdk.md)
+ [步驟 5：(可選) 加密培訓檔案](su-encrypt-bucket.md)
+ [步驟 6：(可選) 將舊資料集與新專案建立關聯](su-associate-prior-dataset.md)

# 步驟 1：建立 AWS 帳戶
<a name="su-account"></a>

在此步驟中，您將建立 AWS 帳戶、建立 管理使用者，以及了解如何授予 AWS SDK 的程式設計存取權。

**Topics**
+ [註冊 AWS 帳戶](#sign-up-for-aws)
+ [建立具有管理存取權的使用者](#create-an-admin)
+ [程式設計存取權](#su-sdk-programmatic-access)

## 註冊 AWS 帳戶
<a name="sign-up-for-aws"></a>

如果您沒有 AWS 帳戶，請完成下列步驟來建立一個。

**註冊 AWS 帳戶**

1. 開啟 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 請遵循線上指示進行。

   部分註冊程序需接收來電或簡訊，並在電話鍵盤輸入驗證碼。

   當您註冊 時 AWS 帳戶，*AWS 帳戶根使用者*會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務，請將管理存取權指派給使用者，並且僅使用根使用者來執行[需要根使用者存取權的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時登錄 [https://aws.amazon.com/](https://aws.amazon.com/) 並選擇**我的帳戶**，以檢視您目前的帳戶活動並管理帳戶。

## 建立具有管理存取權的使用者
<a name="create-an-admin"></a>

註冊 後 AWS 帳戶，請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center和建立 管理使用者，以免將根使用者用於日常任務。

**保護您的 AWS 帳戶根使用者**

1.  選擇**根使用者**並輸入 AWS 帳戶 您的電子郵件地址，以帳戶擁有者[AWS 管理主控台](https://console.aws.amazon.com/)身分登入 。在下一頁中，輸入您的密碼。

   如需使用根使用者登入的說明，請參閱 *AWS 登入 使用者指南*中的[以根使用者身分登入](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

   如需說明，請參閱《*IAM 使用者指南*》中的[為您的 AWS 帳戶 根使用者 （主控台） 啟用虛擬 MFA 裝置](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html)。

**建立具有管理存取權的使用者**

1. 啟用 IAM Identity Center。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[啟用 AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)。

1. 在 IAM Identity Center 中，將管理存取權授予使用者。

   如需使用 IAM Identity Center 目錄 做為身分來源的教學課程，請參閱*AWS IAM Identity Center 《 使用者指南*》中的[使用預設值設定使用者存取 IAM Identity Center 目錄](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html)。

**以具有管理存取權的使用者身分登入**
+ 若要使用您的 IAM Identity Center 使用者簽署，請使用建立 IAM Identity Center 使用者時傳送至您電子郵件地址的簽署 URL。

  如需使用 IAM Identity Center 使用者登入的說明，請參閱*AWS 登入 《 使用者指南*》中的[登入 AWS 存取入口網站](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。

**指派存取權給其他使用者**

1. 在 IAM Identity Center 中，建立一個許可集來遵循套用最低權限的最佳實務。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[建立許可集](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)。

1. 將使用者指派至群組，然後對該群組指派單一登入存取權。

   如需指示，請參閱《AWS IAM Identity Center 使用者指南》**中的[新增群組](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)。

## 程式設計存取權
<a name="su-sdk-programmatic-access"></a>

如果使用者想要與 AWS 外部互動，則需要程式設計存取 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。

若要授予使用者程式設計存取權，請選擇下列其中一個選項。


****  

| 哪個使用者需要程式設計存取權？ | 到 | 根據 | 
| --- | --- | --- | 
| IAM | （建議） 使用主控台登入資料做為臨時登入資料，以簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-account.html)  | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-account.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中將[臨時登入資料與 AWS 資源搭配使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-account.html)  | 

# 步驟 2：設定 Amazon Rekognition 自訂標籤主控台權限
<a name="su-console-policy"></a>

若要使用 Amazon Rekognition 主控台，您必須新增才能擁有適當的權限。如果您想要將培訓檔案儲存在 [主控台儲存貯體](su-create-console-bucket.md) 中，則需要額外的權限。

**Topics**
+ [允許主控台存取](#su-console-access)
+ [存取外部 Amazon S3 儲存貯體](#su-external-buckets)
+ [指派權限](#su-assign-permissions)

## 允許主控台存取
<a name="su-console-access"></a>

若要使用 Amazon Rekognition 自訂標籤主控台，您需要下列涵蓋 Amazon S3、SageMaker AI Ground Truth 和 Amazon Rekognition 自訂標籤的 IAM 政策。如需關於指派權限的更多詳細資訊，請參閱 [指派權限](#su-assign-permissions)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "s3Policies",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:CreateBucket",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectTagging",
                "s3:GetBucketVersioning",
                "s3:GetObjectVersionTagging",
                "s3:PutBucketCORS",
                "s3:PutLifecycleConfiguration",
                "s3:PutBucketPolicy",
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:PutBucketVersioning",
                "s3:PutObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::custom-labels-console-*"

            ]
        },
        {
            "Sid": "rekognitionPolicies",
            "Effect": "Allow",
            "Action": [
                "rekognition:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "groundTruthPolicies",
            "Effect": "Allow",
            "Action": [
                "groundtruthlabeling:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 存取外部 Amazon S3 儲存貯體
<a name="su-external-buckets"></a>

當您第一次在新 AWS 區域中開啟 Amazon Rekognition 自訂標籤主控台時，Amazon Rekognition 自訂標籤會建立用於存放專案檔案的儲存貯體 （主控台儲存貯體）。或者，您可以使用自己的 Amazon S3 儲存貯體 (外部儲存貯體) 將圖像或清單檔案上傳到主控台。若要使用外部儲存貯體，請將下列政策區塊新增至前述策略。用您的儲存貯體名稱取代 `amzn-s3-demo-bucket`。

```
        {
            "Sid": "s3ExternalBucketPolicies",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectVersion",
                "s3:GetObjectTagging",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*"
            ]
        }
```

## 指派權限
<a name="su-assign-permissions"></a>

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循 *IAM 使用者指南* 的 [新增權限到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

# 步驟 3：建立主控台儲存貯體
<a name="su-create-console-bucket"></a>

您可以使用 Amazon Rekognition 自訂標籤專案建立和管理模型。當您第一次在新 AWS 區域中開啟 Amazon Rekognition 自訂標籤主控台時，Amazon Rekognition 自訂標籤會建立 Amazon S3 儲存貯體 （主控台儲存貯體） 來存放您的專案。您應該在稍後可以參考的位置記下主控台儲存貯體名稱，因為您可能需要在 AWS SDK 操作或主控台任務中使用儲存貯體名稱，例如建立資料集。

儲存貯體名稱的格式為 `custom-labels-console`-*<區域>-*-*隨機值*。隨機值可確保儲存貯體名稱之間不會發生衝突。

**若要建立主控台儲存貯體**

1. 確定使用者擁有正確的權限。如需詳細資訊，請參閱[允許主控台存取](su-console-policy.md#su-console-access)。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/) 開啟 Amazon Rekognition 主控台。

1. 選擇 **開始使用**。

1. 如果這是您第一次在目前 AWS 區域開啟主控台，請在 **首次設定** 對話框中執行以下操作：

   1. 將顯示的 Amazon S3 儲存貯體名稱複製下來。稍後您將需要此資訊。

   1. 選擇 **建立 S3 儲存貯體**，讓 Amazon Rekognition 自訂標籤代表您建立 Amazon S3 儲存貯體 (主控台儲存貯體)。

1. 關閉瀏覽器視窗。

# 步驟 4：設定 AWS CLI 和 AWS SDKs
<a name="su-awscli-sdk"></a>

您可以搭配 AWS Command Line Interface (AWS CLI) 和 AWS SDKs 使用 Amazon Rekognition 自訂標籤。如果您需要從終端執行 Amazon Rekognition 自訂標籤操作，請安裝 AWS CLI。如果您要建立應用程式，請下載您正在使用的程式設計語言 AWS 開發套件。

**Topics**
+ [安裝 AWS SDKS](#sdk-install-sdk)
+ [授與程式設計存取權](su-sdk-programmatic-access.md)
+ [設定 SDK 權限](su-sdk-permissions.md)
+ [呼叫 Amazon Rekognition 自訂標籤操作](su-sdk-list-projects.md)

## 安裝 AWS SDKS
<a name="sdk-install-sdk"></a>

依照步驟下載和設定 AWS SDKs。

**設定 AWS CLI 和 AWS SDKs**
+ 下載並安裝您要使用的 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)和 AWS SDKs。本指南提供 AWS CLI、[Java](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html) 和 [Python](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) 的範例。如需安裝 AWS SDKs的詳細資訊，請參閱[適用於 Amazon Web Services 的工具](https://aws.amazon.com/tools/)。

# 授與程式設計存取權
<a name="su-sdk-programmatic-access"></a>

您可以在本機電腦或其他 AWS 環境上執行本指南中的 AWS CLI 和 程式碼範例，例如 Amazon Elastic Compute Cloud 執行個體。若要執行範例，您需要授予範例使用的 AWS SDK 操作存取權。

**Topics**
+ [在本機電腦執行程式碼](#su-sdk-programmatic-access-general)
+ [在 AWS 環境中執行程式碼](#su-sdk-aws-environments)

## 在本機電腦執行程式碼
<a name="su-sdk-programmatic-access-general"></a>

若要在本機電腦上執行程式碼，建議您使用短期登入資料來授予使用者 AWS SDK 操作的存取權。如需在本機電腦上執行 AWS CLI 和 程式碼範例的特定資訊，請參閱 [在本機電腦上使用設定檔](#su-sdk-programmatic-access-customlabels-examples)。

如果使用者想要與 AWS 外部互動，則需要程式設計存取 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。

若要授予使用者程式設計存取權，請選擇下列其中一個選項。


****  

| 哪個使用者需要程式設計存取權？ | 到 | 根據 | 
| --- | --- | --- | 
| IAM | （建議） 使用主控台登入資料做為臨時登入資料，以簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中[將臨時登入資料與 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)搭配使用的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 

### 在本機電腦上使用設定檔
<a name="su-sdk-programmatic-access-customlabels-examples"></a>

您可以使用您在 中建立的短期登入資料來執行本指南中的 AWS CLI 和 程式碼範例[在本機電腦執行程式碼](#su-sdk-programmatic-access-general)。若要取得認證和其他設定資訊，範例會使用名為 `custom-labels-access` 的設定檔，例如：

```
session = boto3.Session(profile_name='custom-labels-access')
rekognition_client = session.client("rekognition")
```

描述檔代表的使用者必須具有呼叫 Amazon Rekognition 自訂標籤 SDK 操作和範例所需其他 AWS SDK 操作的許可。如需詳細資訊，請參閱[設定 SDK 權限](su-sdk-permissions.md)。如要指派權限，請參閱 [設定 SDK 權限](su-sdk-permissions.md)。

若要建立使用 AWS CLI 和 程式碼範例的設定檔，請選擇下列其中一項。請確定您建立的設定檔名稱是 `custom-labels-access`。
+ 由 IAM 管理的使用者 — 請按照 [切換到 IAM 角色 (AWS CLI)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html) 中的指示進行操作。
+ 人力身分 （由 管理的使用者 AWS IAM Identity Center) — 遵循[設定要使用的 AWS CLI AWS IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)中的指示。對於程式碼範例，我們建議使用整合式開發環境 (IDE)，該環境支援透過 IAM Identity Center 啟用身分驗證的 AWS 工具組。如需 Java 範例，請參閱 [使用 Java 開始建置](https://aws.amazon.com/developer/language/java/)。如需 Python 範例，請參閱 [使用 Python 開始建置](https://aws.amazon.com/developer/tools/#IDE_and_IDE_Toolkits)。如需更多詳細資訊，請參閱 [什麼是 IAM Identity Center 憑證](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html)。

**注意**  
您可以使用程式碼取得短期憑證。如需更多相關資訊，請參閱 [切換到 IAM 角色 (AWS API)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_use_switch-role-api.html)。對於 IAM Identity Center，請遵循 [取得 CLI 存取的 IAM 角色憑證](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html) 中的指示，獲得某個角色的短期憑證。

## 在 AWS 環境中執行程式碼
<a name="su-sdk-aws-environments"></a>

您不應使用使用者登入資料在 AWS 環境中簽署 AWS SDK 呼叫，例如在 AWS Lambda 函數中執行的生產程式碼。相反地，您可以一個角色來定義您的程式碼所需的權限。然後，您可以將該角色附加到程式碼執行的環境。如何附加角色並提供臨時憑證取決於程式碼執行的環境：
+ AWS Lambda 函數 — 使用 Lambda 在擔任 Lambda 函數的執行角色時自動提供給函數的臨時登入資料。這些憑證可在 Lambda 環境變數中使用。您不需要指定設定檔。如需更多詳細資訊，請參閱 [Lambda 執行角色](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)。
+ Amazon EC2 — 使用 Amazon EC2 執行個體中繼資料端點憑證提供者。提供者會使用您附加到 Amazon EC2 執行個體的 Amazon EC2 *執行個體設定檔*，為您自動產生和重新整理憑證。如需更多詳細資訊，請參閱 [使用 IAM 角色向在 Amazon EC2 執行個體上執行的應用程式授予權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。
+ Amazon Elastic Container Service — 使用容器憑證提供者。Amazon ECS 會將憑證傳送並重新整理到中繼資料端點。您指定的 *任務 IAM 角色* 提供了用於管理應用程式使用的憑證的策略。如需更多詳細資訊，請參閱 [與 AWS 服務互動](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。

如需憑證提供者的更多詳細資訊，請參閱 [標準化憑證提供者](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)。

# 設定 SDK 權限
<a name="su-sdk-permissions"></a>

若要使用 Amazon Rekognition 自訂標籤 SDK 操作，您需要存取 Amazon Rekognition 自訂標籤 API 和用於模型培訓的 Amazon S3 儲存貯體的權限。

**Topics**
+ [授予 SDK 操作權限](#su-grant-sdk-permissions)
+ [使用 AWS SDK 的政策更新](#su-sdk-policy-update)
+ [指派權限](#su-sdk-assign-permissions)

## 授予 SDK 操作權限
<a name="su-grant-sdk-permissions"></a>

我們建議您只授與執行任務所需的權限 (最低權限許可)。例如，要呼叫 [檢測自訂標籤](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DetectCustomLabels.html)，您需要執行 `rekognition:DetectCustomLabels` 的權限。若要尋找操作的權限，請檢查 [API 參考](https://docs.aws.amazon.com/rekognition/latest/APIReference/Welcome.html)。

當您剛開始使用應用程式時，您可能不知道所需的特定權限，因此您可以從更廣泛的權限開始。 AWS 託管策略提供權限來幫助您入門。您可以使用 `AmazonRekognitionCustomLabelsFullAccess` AWS 受管政策來完整存取 Amazon Rekognition 自訂標籤 API。如需更多詳細資訊，請參閱 [AWS 受管政策：Amazon Rekognition 自訂標籤完全存取權限](https://docs.aws.amazon.com/rekognition/latest/dg/security-iam-awsmanpol.html#security-iam-awsmanpol-custom-labels-full-access) 。當您知道應用程式所需的權限時，可以透過定義特定於您的用例的客戶管理政策來進一步減少權限。如需更多詳細資訊，請參閱 [客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)。

如要指派權限,請參閱 [指派權限](#su-sdk-assign-permissions)。

## 使用 AWS SDK 的政策更新
<a name="su-sdk-policy-update"></a>

若要搭配最新版本的 Amazon Rekognition 自訂標籤使用 AWS SDK，您不再需要授予 Amazon Rekognition 自訂標籤許可，即可存取包含訓練和測試映像的 Amazon S3 儲存貯體。如果您之前已新增權限，您不需要移除這些權限。如果您選擇這樣做，請從主體服務為 `rekognition.amazonaws.com` 的儲存貯體中刪除任何政策。例如：

```
"Principal": {
    "Service": "rekognition.amazonaws.com"
}
```

如需更多詳細資訊，請參閱 [使用儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。

## 指派權限
<a name="su-sdk-assign-permissions"></a>

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循 *IAM 使用者指南* 的 [新增權限至使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

# 呼叫 Amazon Rekognition 自訂標籤操作
<a name="su-sdk-list-projects"></a>

執行以下程式碼，以確認您可以呼叫 Amazon Rekognition 自訂標籤 API。此程式碼會列出您 AWS 帳戶中目前 AWS 區域中的專案。如果您之前尚未建立專案，則回應為空白，但確認您可以呼叫該 `DescribeProjects`操作。

一般而言，呼叫範例函數需要 AWS SDK Rekognition 用戶端和任何其他必要的參數。AWS SDK 用戶端在主函數中宣告。

如果程式碼失敗，請檢查您使用的使用者是否擁有正確的權限。另請檢查 AWS 您用作 Amazon Rekognition 自訂標籤的區域並非所有 AWS 區域都可用。

**若要呼叫 Amazon Rekognition 自訂標籤操作**

1. 如果您尚未這麼做，請安裝並設定 AWS CLI 和 AWS SDKs。如需詳細資訊，請參閱[步驟 4：設定 AWS CLI 和 AWS SDKs](su-awscli-sdk.md)。

1. 使用以下的範例程式碼來檢視您的專案。

------
#### [ CLI ]

   使用 `describe-projects` 指令列出您帳戶中的專案。

   ```
   aws rekognition describe-projects \
   --profile custom-labels-access
   ```

------
#### [ Python ]

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   
   """
   This example shows how to describe your Amazon Rekognition Custom Labels projects.
   If you haven't previously created a project in the current AWS Region,
   the response is an empty list, but does confirm that you can call an
   Amazon Rekognition Custom Labels operation.
   """
   from botocore.exceptions import ClientError
   import boto3
   
   def describe_projects(rekognition_client):
       """
       Lists information about the projects that are in in your AWS account
       and in the current AWS Region.
   
       : param rekognition_client: A Boto3 Rekognition client.
       """
       try:
           response = rekognition_client.describe_projects()
           for project in response["ProjectDescriptions"]:
               print("Status: " + project["Status"])
               print("ARN: " + project["ProjectArn"])
               print()
           print("Done!")
       except ClientError as err:
           print(f"Couldn't describe projects. \n{err}")
           raise
   
   
   def main():
       """
       Entrypoint for script.
       """
   
       session = boto3.Session(profile_name='custom-labels-access')
       rekognition_client = session.client("rekognition")
   
       describe_projects(rekognition_client)
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   ```
   /*
      Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
      SPDX-License-Identifier: Apache-2.0
   */
   
   package com.example.rekognition;
   
   import java.util.ArrayList;
   import java.util.List;
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.DatasetMetadata;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectsRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeProjectsResponse;
   import software.amazon.awssdk.services.rekognition.model.ProjectDescription;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   
   public class Hello {
   
       public static final Logger logger = Logger.getLogger(Hello.class.getName());
   
       public static void describeMyProjects(RekognitionClient rekClient) {
   
           DescribeProjectsRequest descProjects = null;
   
           // If a single project name is supplied, build projectNames argument
   
           List<String> projectNames = new ArrayList<String>();
   
   
           descProjects = DescribeProjectsRequest.builder().build();
   
           // Display useful information for each project.
   
           DescribeProjectsResponse resp = rekClient.describeProjects(descProjects);
   
           for (ProjectDescription projectDescription : resp.projectDescriptions()) {
   
               System.out.println("ARN: " + projectDescription.projectArn());
               System.out.println("Status: " + projectDescription.statusAsString());
               if (projectDescription.hasDatasets()) {
                   for (DatasetMetadata datasetDescription : projectDescription.datasets()) {
                       System.out.println("\tdataset Type: " + datasetDescription.datasetTypeAsString());
                       System.out.println("\tdataset ARN: " + datasetDescription.datasetArn());
                       System.out.println("\tdataset Status: " + datasetDescription.statusAsString());
                   }
               }
               System.out.println();
           }
   
       }
   
       public static void main(String[] args) {
   
           try {
   
               // Get the Rekognition client
               RekognitionClient rekClient = RekognitionClient.builder()
                   .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
                   .region(Region.US_WEST_2)
                   .build();
               
               // Describe projects
   
               describeMyProjects(rekClient);
   
               rekClient.close();
   
           } catch (RekognitionException rekError) {
               logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
               System.exit(1);
           }
   
       }
   
   }
   ```

------

# 步驟 5：(可選) 加密培訓檔案
<a name="su-encrypt-bucket"></a>

您可以選擇以下其中一個選項來加密 Amazon Rekognition 自訂標籤位於主控台儲存貯體或外部 Amazon S3 儲存貯體中的清單檔案和圖像檔。
+ 使用 Amazon S3 金鑰 (SSE-S3)。
+ 使用您的 AWS KMS key。
**注意**  
呼叫 [IAM 主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal%23intro-structure-principal) 需要權限才能解密檔案。如需詳細資訊，請參閱[解密使用 加密的檔案 AWS Key Management Service](#su-kms-encryption)。

如需更多加密 Amazon S3 儲存貯體的詳細資訊，請參閱 [設定 Amazon S3 儲存貯體的預設伺服器端加密行為](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)。

## 解密使用 加密的檔案 AWS Key Management Service
<a name="su-kms-encryption"></a>

如果您使用 AWS Key Management Service (KMS) 加密 Amazon Rekognition 自訂標籤清單檔案和映像檔案，請將呼叫 Amazon Rekognition 自訂標籤的 IAM 主體新增至 KMS 金鑰的金鑰政策。這樣做可讓 Amazon Rekognition 自訂標籤在培訓前解密您的清單檔案和圖像檔案。如需更多詳細資訊，請參閱 [我的 Amazon S3 儲存貯體使用自訂 AWS KMS 金鑰預設加密。如何允許使用者從儲存貯體中下載及上傳？](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-access-default-encryption/)

IAM 主體需要 KMS 金鑰的以下權限。
+ kms:產生資料金鑰
+ kms:解密

如需更多詳細資訊，請參閱 [使用儲存在 AWS 金鑰管理服務 (SSE-KMS) 中的 KMS 金鑰進行伺服器端加密來保護資料](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)。

## 加密複製的培訓和測試圖像
<a name="w2aab8c21c11"></a>

為了培訓您的模型，Amazon Rekognition 自訂標籤會製作來源培訓和測試圖像的副本。在預設情況下，複製的圖像會使用 AWS 擁有和管理的金鑰進行靜態加密。您也可以選擇使用自己的 AWS KMS key。如果您使用自己的 KMS 金鑰，則需要擁有該 KMS 金鑰的以下權限。
+ kms:創建權限
+ kms:描述金鑰

當您使用主控台培訓模型或呼叫 `CreateProjectVersion` 操作時，您可以選擇性地指定 KMS 金鑰。您使用的 KMS 金鑰不需要與您在 Amazon S3 儲存貯體中用來加密清單檔案和圖像檔案的 KMS 金鑰相同。如需詳細資訊，請參閱[步驟 5：(可選) 加密培訓檔案](#su-encrypt-bucket)。

如需更多詳細資訊，請參閱 [AWS 金鑰管理服務概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)。您的來源圖像不會受到影響。

如需培訓模型的資訊，請參閱 [培訓 Amazon Rekognition 自訂標籤模型](training-model.md)。

# 步驟 6：(可選) 將舊資料集與新專案建立關聯
<a name="su-associate-prior-dataset"></a>

Amazon Rekognition 自訂標籤現在可透過專案管理資料集。您建立的早期（舊）資料集是唯讀檔，必須先與專案建立關聯才能使用它們。當您使用主控台開啟專案的詳細資料頁面時，我們會自動將訓培訓專案模型最新版本的資料集與專案建立關聯。如果您使用 AWS SDK，資料集與專案的自動關聯就不會發生。

未關聯的舊資料集從未用於模型培訓，或者用於培訓舊版本的模型。「舊資料集」頁面會顯示所有關聯和未關聯的資料集。

若要使用未經關聯的舊資料集，請在舊資料集的頁面上建立新專案。資料集會成為新專案的培訓資料集。您也可以為已關聯的資料集建立專案，因為舊資料集可以有多個關聯。

**將舊資料集與新專案建立關聯**

1. 開啟 Amazon Rekognition 主控台：[https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)。

1. 在左側視窗中，選擇使用 **自訂標籤**。畫面將會顯示 Amazon Rekognition 自訂標籤的登入頁面。

1. 在左側導覽視窗中，選擇 **舊資料集**。

1. 在資料集檢視中，選擇您要與專案建立關聯的舊資料集。

1. 選擇 **使用資料集建立專案**。

1. 在 **建立專案** 的頁面中，在 **專案名稱** 中輸入新專案的名稱。

1. 選擇 **建立專案** 以建立專案。專案可能需要一段時間才能建立。

1. 使用專案。如需詳細資訊，請參閱[了解 Amazon Rekognition 自訂標籤](understanding-custom-labels.md)。

## 使用舊資料集作為測試資料集
<a name="su-prior-dataset-as-test-dataset"></a>

您可以先將舊資料集與新專案建立關聯，使用舊資料集作為現有專案的測試資料集。然後，您可以將新專案的培訓資料集複製到現有專案的測試資料集。

**使用舊資料集作為測試資料集**

1. 請跟隨中 [步驟 6：(可選) 將舊資料集與新專案建立關聯](#su-associate-prior-dataset) 的指示，將舊資料集與新專案建立關聯。

1. 使用從新專案複製的訓練資料集，在現有專案中建立測試資料集。如需詳細資訊，請參閱[從現有資料集複製內容](md-create-dataset-existing-dataset.md)。

1. 按照 [刪除 Amazon Rekognition 自訂標籤專案 (主控台)](mp-delete-project.md#mp-delete-project-console) 中的說明刪除新專案。

或者，您也可以使用舊資料集的清單檔案來建立測試資料集。如需詳細資訊，請參閱[建立清單檔案](md-create-manifest-file.md)。