

# REST API への接続
<a name="connecting-to-data-rest-api"></a>

 AWS Glue では、任意の REST API ベースのデータソースへの AWS Glue の接続に使用できる AWS Glue ConnectionType を設定できます。これは、ETL ジョブのデータソースとして使用できます。これらのジョブを実行して、REST API ベースのデータソース と AWS サービス、またはその他のサポートされているアプリケーション間でデータを転送できます。

**Topics**
+ [AWS Glue REST API のサポート](rest-api-support.md)
+ [接続タイプの登録および接続の作成/使用を行う API オペレーションを含むポリシー](rest-api-configuring-iam-permissions.md)
+ [REST API ConnectionType の設定](rest-api-configuring.md)
+ [REST API 接続の設定](rest-api-configuring-connections.md)
+ [チュートリアル: REST API ConnectionType と Connection の作成](rest-api-example.md)
+ [制限事項](rest-api-limitations.md)

# AWS Glue REST API のサポート
<a name="rest-api-support"></a>

AWS Glue は、次のように REST API をサポートします。

**ソースとしてサポートされていますか?**  
はい。AWS Glue ETL ジョブを使用して、REST API ベースのデータソースからデータをクエリできます。

**ターゲットとしてサポートされていますか?**  
いいえ。

# 接続タイプの登録および接続の作成/使用を行う API オペレーションを含むポリシー
<a name="rest-api-configuring-iam-permissions"></a>

 次のサンプル IAM ポリシーで、AWS Glue ETL ジョブ内の REST API 接続の作成、管理、使用に必要なアクセス許可について説明します。新しいロールを作成する場合は、以下を含むポリシーを作成します。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:RegisterConnectionType",
                "glue:ListConnectionTypes",
                "glue:DescribeConnectionType",
                "glue:CreateConnection",
                "glue:RefreshOAuth2Tokens",
                "glue:ListEntities",
                "glue:DescribeEntity"
            ],
            "Resource": "*"
        }
    ]
}
```

また、次の IAM ポリシーを使用して、アクセスを許可できます。
+ [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – さまざまな AWS Glue プロセスを実行するために必要なリソースへのアクセス権をユーザーに代わって付与します。これらのリソースには AWS Glue 、Amazon S3、IAM、CloudWatch Logs、Amazon EC2 が含まれます。このポリシーで指定されたリソースの命名規則に従った場合、AWS Glue プロセスは必要なアクセス許可を使用できます。このポリシーは、通常、クローラー、ジョブ、開発エンドポイントを定義するときに指定されたロールにアタッチされます。
+ [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) — ポリシーがアタッチされているアイデンティティが AWS マネージメントコンソールを使用するときは、AWS Glue リソースへのフルアクセスを許可します。このポリシーで指定されたリソースの命名規則に従った場合、ユーザーは完全なコンソール機能を使用できます。このポリシーは、通常 AWS Glue コンソールのユーザーにアタッチされています。

REST API 接続の作成時にネットワークオプションを指定する場合は、IAM ロールに次のアクションも含める必要があります。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}
```

# REST API ConnectionType の設定
<a name="rest-api-configuring"></a>

 AWS Glue を使用して REST APIベースのデータソースからデータを転送できるようにするには、次の要件を満たす必要があります。

## 最小要件
<a name="rest-api-configuring-min-requirements"></a>

次に、最小要件を示します。
+  AWS Glue REST API 接続タイプを設定して登録している。「[REST API](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html)」を参照してください。
+  OAuth2 クライアント認証情報、認可コード、または JWT を使用する場合は、それに応じてクライアントアプリを設定します。

 これらの要件を満たすと、REST API ベースのデータソースに AWS Glue を接続する準備が整います。通常、REST API 側でこれ以上の設定は必要ありません。

# REST API 接続の設定
<a name="rest-api-configuring-connections"></a>

 AWS Glue REST API コネクタを設定するには、 AWS Glue 接続タイプを設定する必要があります。この接続タイプには、REST データソースの動作方法と、認証、リクエスト、レスポンス、ページ分割、検証、エンティティ/メタデータなどの解釈方法のプロパティに関する詳細が含まれます。AWS Glue REST 接続タイプに必要なプロパティの包括的なリストについては、[RegisterConnectionType](https://docs.aws.amazon.com/glue/latest/webapi/API_DescribeConnectionType.html) API と [REST API に接続する](https://docs.aws.amazon.com/glue/latest/dg/rest-api-connections.html)手順を参照してください。

 REST API コネクタを作成するときに関連するアクションを許可するには、次のポリシーが必要です。

```
{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:RegisterConnectionType",
                "glue:ListConnectionTypes",
                "glue:DescribeConnectionType",
                "glue:CreateConnection",
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
        }
    ]
}
```

# チュートリアル: REST API ConnectionType と Connection の作成
<a name="rest-api-example"></a>

**Foo REST API への接続**

 Foo REST API AWS Glue の REST API ConnectionType と対応するAWS Glue接続を作成します。この API には次のプロパティがあります (REST API ドキュメントから取得できます）。
+  **インスタンス URL**: https://foo.cloud.com/rest/v1。
+  **認証タイプ**: OAuth2 (クライアント認証情報）。
+  **REST メソッド**: GET。
+  **ページ分割タイプ**: リクエストのクエリパラメータに配置されたプロパティ「制限」と「オフセット」を使用したオフセット。
+ **サポートされているエンティティ**:
  +  **Bar**: 相対パス [/bar.json]。
  +  **Baz**: 相対パス [/baz.json]。

 すべての詳細を取得したら、Foo REST API への AWS Glue 接続の作成を開始できます。

**REST API 接続を作成するには**:

1.  AWS API、CLI、または SDK を使用して RegisterConnectionType API を呼び出し、AWS Glue で REST API 接続タイプを作成します。これにより、AWS Glue に新しい ConnectionType リソースが作成されます。

   ```
   {
       "ConnectionType": "REST-FOO-CONNECTOR",
       "IntegrationType": "REST",
       "Description": "AWS Glue Connection Type for the FOO REST API",
       "ConnectionProperties": {
           "Url": {
               "Name": "Url",
               "Required": true,
               "DefaultValue": "https://foo.cloud.com/rest/v1",
               "PropertyType": "USER_INPUT"
           }
       },
       "ConnectorAuthenticationConfiguration": {
           "AuthenticationTypes": ["OAUTH2"],
           "OAuth2Properties": {
               "OAuth2GrantType": "CLIENT_CREDENTIALS"
           }
       },
       "RestConfiguration": {
           "GlobalSourceConfiguration": {
           "RequestMethod": "GET",
           "ResponseConfiguration": {
               "ResultPath": "$.result",
               "ErrorPath": "$.error.message"
           },
           "PaginationConfiguration": {
               "OffsetConfiguration": {
                   "OffsetParameter": {
                       "Key": "offset",
                       "PropertyLocation": "QUERY_PARAM"
                   },
                   "LimitParameter": {
                       "Key": "limit",
                       "PropertyLocation": "QUERY_PARAM",
                       "DefaultValue": "50"
                   }
               }
           }
       },
       "ValidationEndpointConfiguration": {
           "RequestMethod": "GET",
           "RequestPath": "/bar.json?offset=1&limit=10"
       },
       "EntityConfigurations": {
           "bar": {
               "SourceConfiguration": {
                   "RequestMethod": "GET",
                   "RequestPath": "/bar.json",
                   "ResponseConfiguration": {
                       "ResultPath": "$.result",
                       "ErrorPath": "$.error.message"
                   }
               },
               "Schema": {
                   "name": {
                       "Name": "name",
                       "FieldDataType": "STRING"
                   },
                   "description": {
                       "Name": "description",
                       "FieldDataType": "STRING"
                   },
                   "id": {
                       "Name": "id",
                       "FieldDataType": "STRING"
                   },
                   "status": {
                       "Name": "status",
                       "FieldDataType": "STRING"
                   }
               }
           }
       }
   }
   }
   ```

1.  AWS Secrets Manager でシークレットを作成します。シークレットには、接続されたアプリケーションのコンシューマーシークレットと `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` をキーとして含める必要があります。
**注記**  
注: AWS Glue で接続ごとにシークレットを作成する必要があります

1.  AWS API、CLI、または SDK を使用して CreateConnection API を呼び出して AWS Glue 接続を作成します。

   1.  ステップ 1 の REST 接続タイプ名を「ConnectionType」として参照します。

   1.  AWS Glue ConnectionType 登録プロセス中に定義された InstanceUrl およびその他の ConnectionProperties を指定します。

   1.  設定された認証タイプから選択します。REST API Foo は ClientCredentials 許可タイプで OAuth2 を使用します。

   1.  **SecretArn** と設定されている他の **AuthenticationProperties** を指定します。例えば、AuthenticationType として `OAUTH2` を設定しているため、CreateConnectionInput で「OAuth2Properties」を設定します。これには、「OAuth2GrantType」、「TokenUrl」、「OAuth2ClientApplication」などのプロパティが必要です。

1.  AWS Glue 接続を作成する CreateConnection リクエストを作成します。

   ```
   {
       "ConnectionInput": {
           "Name": "ConnectionFooREST",
           "ConnectionType": "REST-FOO-CONNECTOR",
           "ConnectionProperties": {},
           "ValidateCredentials": true,
           "AuthenticationConfiguration": {
               "AuthenticationType": "OAUTH2",
               "SecretArn": "arn:aws:secretsmanager:<region>:<accountId>:secret:<secretId>",
               "OAuth2Properties": {
                   "OAuth2GrantType": "CLIENT_CREDENTIALS",
                   "TokenUrl": "https://foo.cloud.com/oauth/token",
                   "OAuth2ClientApplication": {
                       "UserManagedClientApplicationClientId": "your-managed-client-id"
                   }
               }
           }
       }
   }
   ```

# 制限事項
<a name="rest-api-limitations"></a>

REST API コネクタの制限は次のとおりです。
+  REST API コネクタは、AWS API、CLI、または SDK を介してのみ使用できます。コンソールから REST コネクタを設定することはできません。
+  AWS Glue REST ConnectionType は、REST API ベースのデータソースからデータを読み取るようにのみ設定できます。接続は AWS Glue ETL ジョブのソースとしてのみ使用できます。
+  フィルタリングとパーティショニングはサポートされていません。
+  フィールドの選択はサポートされていません。