

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

# ステップ 4: AWS CLI と AWS SDKsを設定する
<a name="su-awscli-sdk"></a>

Amazon Rekognition Custom Labels は AWS Command Line Interface 、 (AWS CLI) および AWS SDKs で使用できます。ターミナルから Amazon Rekognition Custom Labels オペレーションを実行する必要がある場合は、 AWS CLIをインストールします。アプリケーションを作成する場合は、使用しているプログラミング言語の AWS SDK をダウンロードします。

**Topics**
+ [AWS SDKS のインストール](#sdk-install-sdk)
+ [プログラマチックアクセス権を付与する](su-sdk-programmatic-access.md)
+ [SDK アクセス許可の設定](su-sdk-permissions.md)
+ [Amazon Rekognition Custom Labels オペレーションを呼び出す](su-sdk-list-projects.md)

## AWS SDKS のインストール
<a name="sdk-install-sdk"></a>

手順に従って、 AWS SDKsをダウンロードして設定します。

**AWS CLI と AWS SDKsをセットアップするには**
+ および使用する AWS SDKsをダウンロード[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)してインストールします。このガイドでは 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](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 CLI および コード例は、ローカルコンピュータまたは Amazon Elastic Compute Cloud インスタンスなどの他の AWS 環境で実行できます。例を実行するには、例が使用する 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/ja_jp/rekognition/latest/customlabels-dg/su-sdk-programmatic-access.html)  | 
|  ワークフォースアイデンティティ (IAM アイデンティティセンターで管理されているユーザー)  | 一時的な認証情報を使用して AWS CLI、、 AWS SDKs、または AWS APIs。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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 Custom Labels 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)」の手順に従います。
+ ワークフォース ID (ユーザーが管理 AWS IAM アイデンティティセンター) — [使用する AWS CLI の設定 AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html)の手順に従います。コード例については統合開発環境 (IDE) を使用することが推奨されます。こちらは、IAM Identity Center による認証を許可する AWS Toolkit をサポートしています。Java の例については「[Start building with Java](https://aws.amazon.com/developer/language/java/)」を参照してください。Python の例については「[Start building with Python](https://aws.amazon.com/developer/tools/#IDE_and_IDE_Toolkits)」を参照してください。その他の詳細については「[IAM Identity Center credentials](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 の場合は、「[Getting IAM role credentials for CLI access](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html)」にある手順に従って、ロールの短期間の認証情報を取得します。

## AWS 環境でのコードの実行
<a name="su-sdk-aws-environments"></a>

 AWS Lambda 関数で実行されている本番コードなどの AWS 環境で、ユーザー認証情報を使用して AWS SDK 呼び出しに署名しないでください。代わりに、コードに必要なアクセス権限を定義するロールを設定します。次に、コードを実行する環境にそのロールをアタッチします。ロールをアタッチして一時的な認証情報を利用できるようにする方法は、コードを実行する環境によって異なります。
+ 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 *インスタンスプロファイル*を使用して、認証情報を自動的に生成して更新します。詳細については、「[Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」を参照してください。
+ Amazon Elastic Container Service - コンテナ認証情報プロバイダーを使用します。Amazon ECS は認証情報をメタデータエンドポイントに送信して更新します。指定する*タスク IAM ロール*は、アプリケーションが使用する認証情報を管理するための戦略を提供します。詳細については、「[Interact with AWS services](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 Custom Labels SDK オペレーションを使用するには、Amazon Rekognition Custom Labels 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>

タスクの実行に必要なアクセス許可のみを付与することをお勧めします (最小権限のアクセス許可)。例えば、[DetectCustomLabels](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 Custom Labels API への完全なアクセスを取得できます。詳細については、「[AWS マネージドポリシー: AmazonRekognitionCustomLabelsFullAccess](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 Custom Labels の最新リリースで AWS SDK を使用するには、トレーニングイメージとテストイメージを含む Amazon S3 バケットにアクセスするためのアクセス許可を Amazon Rekognition Custom Labels に付与する必要がなくなりました。以前にアクセス許可を追加したことがある場合は、アクセス許可を削除する必要はありません。選択する場合は、プリンシパルのサービスが `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 アイデンティティセンター:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](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 Custom Labels オペレーションを呼び出す
<a name="su-sdk-list-projects"></a>

次のコードを実行して、Amazon Rekognition Custom Labels API を呼び出せることを確認します。このコードは、現在の AWS リージョンの AWS アカウント内のプロジェクトを一覧表示します。まだプロジェクトを作成していない場合、レスポンスは空ですが、`DescribeProjects` オペレーションを呼び出せることを確認できます。

一般的に、サンプル関数を呼び出すには、AWS SDK Rekognition クライアントとそのほかの必要なパラメータが必要です。AWS SDK クライアントはメイン関数で宣言されます。

コードが失敗する場合は、使用するユーザーに正しいアクセス許可があるかどうかを確認します。Amazon Rekognition Custom Labels として使用している AWS リージョンが、一部の AWS リージョンで利用できないことも確認してください。

**Amazon Rekognition Custom Labels オペレーションを呼び出すには**

1. まだインストールしていない場合は、 と AWS SDKs をインストール AWS CLI して設定します。詳細については、「[ステップ 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);
           }
   
       }
   
   }
   ```

------