

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

# サードパーティのクエリエンジンがアプリケーション統合 API 操作を呼び出すアクセス許可を有効にする
<a name="permitting-third-party-call"></a>

サードパーティーのクエリエンジンがコンソール、、 AWS CLI または API/SDK を介してアプリケーション統合 API オペレーションを AWS Lake Formation呼び出せるようにするには、次の手順に従います。

------
#### [ Console ]

**外部データフィルタリングのためのアカウントを登録するには**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. 左側のナビゲーションで、**[管理]** を展開し、**[アプリケーション統合設定]** を選択します。

1. **[アプリケーション統合設定]** ページで、**[外部エンジンが Lake Formation に登録された Amazon S3 ロケーション内のデータをフィルタリングすることを許可する]** オプションを選択します。

1. サードパーティエンジン用に作成したセッションタグを入力します。セッションタグの詳細については、「 *AWS Identity and Access Management ユーザーガイド*[」の AWS 「STS でのセッションタグの受け](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)渡し」を参照してください。

1. サードパーティーエンジンを使用して現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報やデータアクセス認証情報にアクセスできるユーザーのアカウント ID を入力します。

    AWS アカウント ID フィールドを使用して、クロスアカウントアクセスを設定することもできます。  
![\[スクリーンショットは、Lake Formation の [アプリケーション統合設定] ページを示しています。[Allow external engines to filter data in Amazon S3 locations registered with Lake Formation](外部エンジンが Lake Formation に登録された Amazon S3 ロケーション内のデータをフィルタリングすることを許可する) オプションが選択されています。[Session tag values] (セッションタグ値) のテキストボックスは空ですが、フィールドの下に 6 つのタグが「engine1」、「engine2」、「engine3」、「session1」、「session2」、および「session3」の値で表示されています。最後のフィールドには、 AWS アカウント IDsフィールドが表示されます。テキストフィールドは空ですが、このフィールドの下にアカウント ID のタグが 3 個表示されています。アカウント ID の値はマスキング処理されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cred-vending-external-data-filtering.png)

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

`put-data-lake-settings` CLI コマンドを使用して以下のパラメータを設定します。

この AWS CLI コマンドを使用する際に設定するフィールドは 3 つあります。
+ `allow-external-data-filtering ` – (ブール) サードパーティーエンジンが、現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報にアクセスできることを示します。
+ `external-data-filtering-allow-list` – (配列) サードパーティーエンジンの使用時に、現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報にアクセスできるアカウント ID のリストです。AllowExternalDataFiltering が true に設定されている場合、ExternalDataFilteringAllowList プロパティには少なくとも 1 つのアカウント ID を含める必要があります。空のリストは使用できません。
+ `authorized-sessions-tag-value-list` – (配列) 認可されたセッションタグ値 (文字列) のリストです。IAM ロールの認証情報に認可されたキーバリューペアがアタッチされている場合、セッションタグがリストに含まれていると、現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報に対するアクセス権がセッションに付与されます。認可されたセッションタグキーは `*LakeFormationAuthorizedCaller*` として定義されます。
+ `AllowFullTableExternalDataAccess` - (ブール値) 呼び出し元が完全なデータアクセスアクセス許可を持っている場合に、サードパーティのクエリエンジンがセッションタグなしでデータアクセス認証情報を取得することを許可するかどうか。

例えば、次のようになります。

```
aws lakeformation put-data-lake-settings --cli-input-json file://datalakesettings.json

{
  "DataLakeSettings": {
    "DataLakeAdmins": [
      {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111111111111:user/lakeAdmin"
      }
    ],
    "CreateDatabaseDefaultPermissions": [],
    "CreateTableDefaultPermissions": [],
    "TrustedResourceOwners": [],
    "AllowExternalDataFiltering": true,
    "ExternalDataFilteringAllowList": [
        {"DataLakePrincipalIdentifier": "111111111111"}
        ],
    "AuthorizedSessionTagValueList": ["engine1"],
    "AllowFullTableExternalDataAccess": false
    }
    

}
```

------
#### [ API/SDK ]

`PutDataLakeSetting` API 操作を使用して以下のパラメータを設定します。

この API 操作を使用する場合は、以下の 3 つのフィールドを設定します。
+ `AllowExternalDataFiltering` – (ブール) サードパーティーエンジンが、現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報にアクセスできるかどうかを示します。
+ `ExternalDataFilteringAllowList` – (配列) サードパーティーエンジンを使用して、現在のアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報にアクセスできるアカウント ID のリストです。
+ `AuthorizedSectionsTagValueList` – (配列) 認可されたタグ値 (文字列) のリストです。IAM ロールの認証情報に認可済みのタグがアタッチされている場合は、設定されたアカウントにあるリソースのフィルタリングされていないメタデータ情報とデータアクセス認証情報に対するアクセス権がセッションに付与されます。認可済みのセッションタグキーは `*LakeFormationAuthorizedCaller*` として定義されます。
+  `AllowFullTableExternalDataAccess` - (ブール値) 呼び出し元が完全なデータアクセスアクセス許可を持っている場合に、サードパーティのクエリエンジンがセッションタグなしでデータアクセス認証情報を取得することを許可するかどうか。

例えば、次のようになります。

```
//Enable session tag on existing data lake settings
public void sessionTagSetUpForExternalFiltering(AWSLakeFormationClient lakeformation) {
    GetDataLakeSettingsResult getDataLakeSettingsResult = lfClient.getDataLakeSettings(new GetDataLakeSettingsRequest());
    DataLakeSettings dataLakeSettings = getDataLakeSettingsResult.getDataLakeSettings();
    
    //set account level flag to allow external filtering
    dataLakeSettings.setAllowExternalDataFiltering(true);
    
    //set account that are allowed to call credential vending or Glue GetFilteredMetadata API
    List<DataLakePrincipal> allowlist = new ArrayList<>();
    allowlist.add(new DataLakePrincipal().withDataLakePrincipalIdentifier("111111111111"));
    dataLakeSettings.setWhitelistedForExternalDataFiltering(allowlist);
    
    //set registered session tag values
    List<String> registeredTagValues = new ArrayList<>();
    registeredTagValues.add("engine1");
    dataLakeSettings.setAuthorizedSessionTagValueList(registeredTagValues);

    lakeformation.putDataLakeSettings(new PutDataLakeSettingsRequest().withDataLakeSettings(dataLakeSettings));
}
```

------