타사 쿼리 엔진이 애플리케이션 통합 API 작업을 호출할 수 있는 권한을 활성화합니다. - AWS Lake Formation

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

타사 쿼리 엔진이 애플리케이션 통합 API 작업을 호출할 수 있는 권한을 활성화합니다.

타사 쿼리 엔진이 AWS Lake Formation 콘솔, AWS CLI 또는 API/SDK를 통해 애플리케이션 통합 API 작업을 호출할 수 있도록 하려면 다음 단계를 따르세요.

Console
외부 데이터 필터링을 위해 계정을 등록하려면:
  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/lakeformation/ 에서 Lake Formation 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 권한을 확장한 다음 애플리케이션 통합 설정을 선택합니다.

  3. 애플리케이션 통합 설정 페이지에서 외부 엔진이 등록된 Amazon S3 위치의 데이터를 필터링하도록 허용 옵션을 선택합니다Lake Formation.

  4. 타사 엔진용으로 생성한 세션 태그를 입력합니다. 세션 태그에 대한 자세한 내용은 AWS Identity and Access Management사용 설명서의 AWSSTS에서의 세션 태그 전달을 참조하십시오.

  5. 타사 엔진을 사용하여 필터링되지 않은 메타데이터 정보와 현재 계정 내 리소스의 데이터 액세스 자격 증명에 액세스할 수 있는 사용자의 계정 ID를 입력합니다.

    AWS계정 ID 필드를 사용하여 계정 간 액세스를 구성할 수도 있습니다.

    
                    스크린샷은 의 애플리케이션 통합 설정 페이지를 보여줍니다. Lake Formation 등록된 Amazon S3 위치의 데이터를 외부 엔진이 필터링하도록 허용 옵션이 선택되었습니다. Lake Formation 세션 태그 값의 경우 텍스트 상자는 비어 있지만 필드 아래에는 “엔진1, “엔진2", “엔진3", “세션1", “세션1", “세션2", “세션3"이라는 6개의 태그가 표시됩니다. 마지막 필드에는 ID 필드가 표시됩니다. AWS 계정 텍스트 필드는 비어 있지만 이 필드 아래에 계정 ID와 함께 세 개의 태그가 표시됩니다. 계정 ID 값이 삭제됩니다.
CLI

put-data-lake-settingsCLI 명령을 사용하여 다음 파라미터를 설정합니다.

이 AWS CLI 명령을 사용할 때 구성할 필드는 세 가지입니다.

  • allow-external-data-filtering — (boolean) 타사 엔진이 현재 계정에 있는 리소스의 필터링되지 않은 메타데이터 정보 및 데이터 액세스 자격 증명에 액세스할 수 있음을 나타냅니다.

  • external-data-filtering-allow-list— (배열) 타사 엔진을 사용할 때 현재 계정에 있는 리소스의 필터링되지 않은 메타데이터 정보 및 데이터 액세스 자격 증명에 액세스할 수 있는 계정 ID 목록입니다.

  • authorized-sessions-tag-value-list— (배열) 승인된 세션 태그 값 (문자열) 목록. IAM 역할 자격 증명이 승인된 키-값 쌍과 연결된 경우, 세션 태그가 목록에 포함되면 세션은 구성된 계정의 리소스에 대한 필터링되지 않은 메타데이터 정보 및 데이터 액세스 자격 증명에 대한 액세스 권한을 부여받습니다. 승인된 세션 태그 키는 다음과 같이 정의됩니다. *LakeFormationAuthorizedCaller*

  • AllowFullTableExternalDataAccess- (boolean) 호출자에게 전체 데이터 액세스 권한이 있는 경우 타사 쿼리 엔진이 세션 태그 없이 데이터 액세스 자격 증명을 가져올 수 있도록 허용할지 여부.

예:

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

PutDataLakeSettingAPI 작업을 사용하여 다음 파라미터를 설정합니다.

이 API 작업을 사용할 때 구성할 필드는 세 가지입니다.

  • AllowExternalDataFiltering— (Boolean) 타사 엔진이 현재 계정 내 리소스의 필터링되지 않은 메타데이터 정보 및 데이터 액세스 자격 증명에 액세스할 수 있는지 여부를 나타냅니다.

  • ExternalDataFilteringAllowList— (배열) 타사 엔진을 사용하여 현재 계정에 있는 리소스의 필터링되지 않은 메타데이터 정보 및 데이터 액세스 자격 증명에 액세스할 수 있는 계정 ID 목록입니다.

  • AuthorizedSectionsTagValueList— (배열) 승인된 태그 값 (문자열) 목록. IAM 역할 자격 증명에 승인된 태그가 첨부된 경우 세션에는 필터링되지 않은 메타데이터 정보와 구성된 계정의 리소스에 대한 데이터 액세스 자격 증명에 대한 액세스 권한이 부여됩니다. 승인된 세션 태그 키는 로 정의됩니다. *LakeFormationAuthorizedCaller*

  • AllowFullTableExternalDataAccess- (boolean) 호출자에게 전체 데이터 액세스 권한이 있는 경우 타사 쿼리 엔진이 세션 태그 없이 데이터 액세스 자격 증명을 가져올 수 있도록 허용할지 여부.

예:

//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)); }