使用 Lake Formation 的例子 AWS CLI - AWS Command Line Interface

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

使用 Lake Formation 的例子 AWS CLI

下列程式碼範例說明如何使用 Lake Formation 來執行動作和實作常見案例。 AWS Command Line Interface

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會告訴您如何呼叫個別服務函數,但您可以在其相關情境和跨服務範例中查看內容中的動作。

Scenarios (案例) 是向您展示如何呼叫相同服務中的多個函數來完成特定任務的程式碼範例。

每個範例都包含一個連結 GitHub,您可以在其中找到如何在內容中設定和執行程式碼的指示。

主題

動作

下列程式碼範例會示範如何使用add-lf-tags-to-resource

AWS CLI

若要將一或多個 LF 標籤附加至現有資源

下面的add-lf-tags-to-resource例子附加給定的 LF 標籤到表資源。

aws lakeformation add-lf-tags-to-resource \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "analyst" ] }] }

輸出:

{ "Failures": [] }

如需詳細資訊,請參閱〈L AWS ake Formation 開發人員指南〉中的〈將 LF 標籤指派給資料目錄資源〉。

下列程式碼範例會示範如何使用batch-grant-permissions

AWS CLI

若要將資源的權限批次授與主參與者

下列batch-grant-permissions範例會將指定資源的存取權批次授與主參與者。

aws lakeformation batch-grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Entries": [{ "Id": "1", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] }, { "Id": "2", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_customer" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] }, { "Id": "3", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-business-analyst" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] }, { "Id": "4", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "DataCellsFilter": { "TableCatalogId": "123456789111", "DatabaseName": "tpc", "TableName": "dl_tpc_item", "Name": "developer_item" } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] } ] }

輸出:

{ "Failures": [] }

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

下列程式碼範例會示範如何使用batch-revoke-permissions

AWS CLI

若要從主參與者批次撤銷資源的權限

下列batch-revoke-permissions範例會大量撤銷主參與者對指定資源的存取。

aws lakeformation batch-revoke-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Entries": [{ "Id": "1", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] }, { "Id": "2", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-business-analyst" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] } ] }

輸出:

{ "Failures": [] }

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

下列程式碼範例會示範如何使用cancel-transaction

AWS CLI

若要取消交易

下列cancel-transaction範例會取消交易。

aws lakeformation cancel-transaction \ --transaction-id='b014d972ca8347b89825e33c5774aec4'

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用commit-transaction

AWS CLI

提交交易

下列commit-transaction範例會認可交易。

aws lakeformation commit-transaction \ --transaction-id='b014d972ca8347b89825e33c5774aec4'

輸出:

{ "TransactionStatus": "committed" }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用create-data-cells-filter

AWS CLI

範例 1:建立資料儲存格篩選

下列create-data-cells-filter範例會建立資料儲存格篩選器,以允許根據資料列條件授與特定欄的存取權。

aws lakeformation create-data-cells-filter \ --cli-input-json file://input.json

input.json 的內容:

{ "TableData": { "ColumnNames": ["p_channel_details", "p_start_date_sk", "p_promo_name"], "DatabaseName": "tpc", "Name": "developer_promotion", "RowFilter": { "FilterExpression": "p_promo_name='ese'" }, "TableCatalogId": "123456789111", "TableName": "dl_tpc_promotion" } }

此命令不會產生輸出。

有關更多信息,請參閱湖泊形成開發指南中的 L ake Formation 中的數據過濾和細胞級安全性。AWS

範例 2:建立欄篩選

下列create-data-cells-filter範例會建立資料篩選器,以允許授與特定資料行的存取權。

aws lakeformation create-data-cells-filter \ --cli-input-json file://input.json

input.json 的內容:

{ "TableData": { "ColumnNames": ["p_channel_details", "p_start_date_sk", "p_promo_name"], "DatabaseName": "tpc", "Name": "developer_promotion_allrows", "RowFilter": { "AllRowsWildcard": {} }, "TableCatalogId": "123456789111", "TableName": "dl_tpc_promotion" } }

此命令不會產生輸出。

有關更多信息,請參閱湖泊形成開發指南中的 L ake Formation 中的數據過濾和細胞級安全性。AWS

範例 3:建立含有排除欄的資料篩選

下列create-data-cells-filter範例會建立資料篩選器,以允許除上述資料行以外的所有資料行授與存取權。

aws lakeformation create-data-cells-filter \ --cli-input-json file://input.json

input.json 的內容:

{ "TableData": { "ColumnWildcard": { "ExcludedColumnNames": ["p_channel_details", "p_start_date_sk"] }, "DatabaseName": "tpc", "Name": "developer_promotion_excludecolumn", "RowFilter": { "AllRowsWildcard": {} }, "TableCatalogId": "123456789111", "TableName": "dl_tpc_promotion" } }

此命令不會產生輸出。

有關更多信息,請參閱湖泊形成開發指南中的 L ake Formation 中的數據過濾和細胞級安全性。AWS

下列程式碼範例會示範如何使用create-lf-tag

AWS CLI

建立 LF 標籤的步驟

下列create-lf-tag範例會建立具有指定名稱和值的 LF 標籤。

aws lakeformation create-lf-tag \ --catalog-id '123456789111' \ --tag-key 'usergroup' \ --tag-values '["developer","analyst","campaign"]'

此命令不會產生輸出。

如需詳細資訊,請參閱 L AWS ake Formation 開發人員指南中的 < 管理中繼資料存取控制的 LF 標籤 >。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考CreateLfTag中的。

下列程式碼範例會示範如何使用delete-data-cells-filter

AWS CLI

若要刪除資料儲存格篩選

下面的delete-data-cells-filter示例刪除給定的數據單元格過濾器。

aws lakeformation delete-data-cells-filter \ --cli-input-json file://input.json

input.json 的內容:

{ "TableCatalogId": "123456789111", "DatabaseName": "tpc", "TableName": "dl_tpc_promotion", "Name": "developer_promotion" }

此命令不會產生輸出。

有關更多信息,請參閱湖泊形成開發指南中的 L ake Formation 中的數據過濾和細胞級安全性。AWS

下列程式碼範例會示範如何使用delete-lf-tag

AWS CLI

刪除 LF 標籤定義的步驟

下列delete-lf-tag範例會刪除 LF 標籤定義。

aws lakeformation delete-lf-tag \ --catalog-id '123456789111' \ --tag-key 'usergroup'

此命令不會產生輸出。

如需詳細資訊,請參閱 L AWS ake Formation 開發人員指南中的 < 管理中繼資料存取控制的 LF 標籤 >。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考DeleteLfTag中的。

下列程式碼範例會示範如何使用delete-objects-on-cancel

AWS CLI

若要在取消交易時刪除物件

下列delete-objects-on-cancel範例會在取消交易時刪除列出的 s3 物件。

aws lakeformation delete-objects-on-cancel \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "012345678901", "DatabaseName": "tpc", "TableName": "dl_tpc_household_demographics_gov", "TransactionId": "1234d972ca8347b89825e33c5774aec4", "Objects": [{ "Uri": "s3://lf-data-lake-012345678901/target/dl_tpc_household_demographics_gov/run-unnamed-1-part-block-0-r-00000-snappy-ff26b17504414fe88b302cd795eabd00.parquet", "ETag": "1234ab1fc50a316b149b4e1f21a73800" }] }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用deregister-resource

AWS CLI

取消註冊資料湖儲存

下列deregister-resource範例會將資源取消註冊為 Lake Formation 成所管理。

aws lakeformation deregister-resource \ --cli-input-json file://input.json

input.json 的內容:

{ "ResourceArn": "arn:aws:s3:::lf-emr-athena-result-123" }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的將 Amazon S3 位置新增至資料AWS 湖

下列程式碼範例會示範如何使用describe-transaction

AWS CLI

若要擷取交易詳細資訊

下列describe-transaction範例會傳回單一交易的詳細資訊。

aws lakeformation describe-transaction \ --transaction-id='8cb4b1a7cc8d486fbaca9a64e7d9f5ce'

輸出:

{ "TransactionDescription": { "TransactionId": "12345972ca8347b89825e33c5774aec4", "TransactionStatus": "committed", "TransactionStartTime": "2022-08-10T14:29:04.046000+00:00", "TransactionEndTime": "2022-08-10T14:29:09.681000+00:00" } }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用extend-transaction

AWS CLI

若要延伸交易

下列extend-transaction範例會擴充交易。

aws lakeformation extend-transaction \ --transaction-id='8cb4b1a7cc8d486fbaca9a64e7d9f5ce'

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用get-data-lake-settings

AWS CLI

擷取 AWS Lake 格式化管理的資料湖設定

下列get-data-lake-settings範例會擷取資料湖管理員和其他資料湖設定的清單。

aws lakeformation get-data-lake-settings \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111" }

輸出:

{ "DataLakeSettings": { "DataLakeAdmins": [{ "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" }], "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [ { "Principal": { "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS" }, "Permissions": [ "ALL" ] } ], "TrustedResourceOwners": [], "AllowExternalDataFiltering": true, "ExternalDataFilteringAllowList": [{ "DataLakePrincipalIdentifier": "123456789111" }], "AuthorizedSessionTagValueList": [ "Amazon EMR" ] } }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的變更資料AWS 湖的預設安全性設定

下列程式碼範例會示範如何使用get-effective-permissions-for-path

AWS CLI

擷取位於特定路徑之資源的權限

下列get-effective-permissions-for-path範例會針對位於 Amazon S3 中某個路徑的指定資料表或資料庫資源,傳回 Lake Formation 許可。

aws lakeformation get-effective-permissions-for-path \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "ResourceArn": "arn:aws:s3:::lf-data-lake-123456789111" }

輸出:

{ "Permissions": [{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-campaign-manager" }, "Resource": { "Database": { "Name": "tpc" } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:role/EMR-RuntimeRole" }, "Resource": { "Database": { "Name": "tpc" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:saml-provider/oktaSAMLProvider:user/emr-developer" }, "Resource": { "Database": { "Name": "tpc" } }, "Permissions": [ "ALL", "DESCRIBE" ], "PermissionsWithGrantOption": [] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" }, "Resource": { "Database": { "Name": "tpc" } }, "Permissions": [ "ALL", "ALTER", "CREATE_TABLE", "DESCRIBE", "DROP" ], "PermissionsWithGrantOption": [ "ALL", "ALTER", "CREATE_TABLE", "DESCRIBE", "DROP" ] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:role/LF-GlueServiceRole" }, "Resource": { "Database": { "Name": "tpc" } }, "Permissions": [ "CREATE_TABLE" ], "PermissionsWithGrantOption": [] } ], "NextToken": "E5SlJDSTZleUp6SWpvaU9UQTNORE0zTXpFeE5Ua3pJbjE5TENKbGVIQnBjbUYwYVc5dUlqcDdJbk5sWTI5dVpITWlPakUyTm==" }

有關更多信息,請參閱《Lake Formation 開發指南》中的管理AWS Lake Formation 權限

下列程式碼範例會示範如何使用get-lf-tag

AWS CLI

擷取 LF 標籤定義

下列get-lf-tag範例會擷取 LF 標籤定義。

aws lakeformation get-lf-tag \ --catalog-id '123456789111' \ --tag-key 'usergroup'

輸出:

{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "analyst", "campaign", "developer" ] }

如需詳細資訊,請參閱 L AWS ake Formation 開發人員指南中的 < 管理中繼資料存取控制的 LF 標籤 >。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetLfTag中的。

下列程式碼範例會示範如何使用get-query-state

AWS CLI

若要擷取已提交查詢的狀態

下列get-query-state範例會傳回先前提交的查詢狀態。

aws lakeformation get-query-state \ --query-id='1234273f-4a62-4cda-8d98-69615ee8be9b'

輸出:

{ "State": "FINISHED" }

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南中的交易資料作業

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetQueryState中的。

下列程式碼範例會示範如何使用get-query-statistics

AWS CLI

擷取查詢統計資料

下列get-query-statistics範例會擷取有關計劃和執行查詢的統計資料。

aws lakeformation get-query-statistics \ --query-id='1234273f-4a62-4cda-8d98-69615ee8be9b'

輸出:

{ "ExecutionStatistics": { "AverageExecutionTimeMillis": 0, "DataScannedBytes": 0, "WorkUnitsExecutedCount": 0 }, "PlanningStatistics": { "EstimatedDataToScanBytes": 43235, "PlanningTimeMillis": 2377, "QueueTimeMillis": 440, "WorkUnitsGeneratedCount": 1 }, "QuerySubmissionTime": "2022-08-11T02:14:38.641870+00:00" }

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南中的交易資料作業

下列程式碼範例會示範如何使用get-resource-lf-tags

AWS CLI

列出 LF 標籤

下列list-lf-tags範例會傳回請求者有權檢視的 LF 標籤清單。

aws lakeformation list-lf-tags \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "ResourceShareType": "ALL", "MaxResults": 2 }

輸出:

{ "LFTags": [{ "CatalogId": "123456789111", "TagKey": "category", "TagValues": [ "private", "public" ] }, { "CatalogId": "123456789111", "TagKey": "group", "TagValues": [ "analyst", "campaign", "developer" ] }], "NextToken": "kIiwiZXhwaXJhdGlvbiI6eyJzZWNvbmRzIjoxNjYwMDY4dCI6ZmFsc2V9" }

如需詳細資訊,請參閱 L AWS ake Formation 開發人員指南中的 < 管理中繼資料存取控制的 LF 標籤 >。

下列程式碼範例會示範如何使用get-table-objects

AWS CLI

列出受控管表格物件的步驟

下列get-table-objects範例會傳回組成指定受管理資料表的一組 Amazon S3 物件。

aws lakeformation get-table-objects \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "012345678901", "DatabaseName": "tpc", "TableName": "dl_tpc_household_demographics_gov", "QueryAsOfTime": "2022-08-10T15:00:00" }

輸出:

{ "Objects": [{ "PartitionValues": [], "Objects": [{ "Uri": "s3://lf-data-lake-012345678901/target/dl_tpc_household_demographics_gov/run-unnamed-1-part-block-0-r-00000-snappy-ff26b17504414fe88b302cd795eabd00.parquet", "ETag": "12345b1fc50a316b149b4e1f21a73800", "Size": 43235 }] }] }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetTableObjects中的。

下列程式碼範例會示範如何使用get-work-unit-results

AWS CLI

若要擷取指定查詢的工作單位

下列get-work-unit-results範例會傳回查詢產生的工作單位。

aws lakeformation get-work-units \ --query-id='1234273f-4a62-4cda-8d98-69615ee8be9b' \ --work-unit-id '0' \ --work-unit-token 'B2fMSdmQXe9umX8Ux8XCo4=' outfile

輸出:

outfile with Blob content.

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南中的交易資料作業

下列程式碼範例會示範如何使用get-work-units

AWS CLI

擷取工作單位

下列get-work-units範例會擷取作 StartQueryPlanning 業所產生的工作單位。

aws lakeformation get-work-units \ --query-id='1234273f-4a62-4cda-8d98-69615ee8be9b'

輸出:

{ "WorkUnitRanges": [{ "WorkUnitIdMax": 0, "WorkUnitIdMin": 0, "WorkUnitToken": "1234eMAk4kLO4umqEL4Z5WuxL04AXwABABVhd3MtY3J5cHRvLXB1YmxpYy1rZXkAREEwYm9QbkhINmFYTWphbmMxZW1PQmEyMGlUb0JFbXNlWmRYc0NmckRIR1dmQ0hjY2YzNFdMcmNXb2JGZmhEK0QvZz09AAEAB2F3cy1rbXMAS2Fybjphd3M6a21zOnVzLWVhc3QtMTo3MDkxNTAyNDkyNDk6a2V5L2VmYmI3NDUyLTY1MjYtNGJiOS1iNmZhLTEzYzJkMTM3MmU2OQC4AQIBAHg6eWNF2ZrQATTAuPDJVCEAQSyIF67vX+f88jzGrYq22gE6jkQlpOB+Oet2eqNUmFudAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMCOEWRdafowek3RUmAgEQgDsYZZE84nnnbNmvsqCBPLh19nLQ10mUWOg9IfiaOwefEn6L920V0x1LpJACo7MtIBLXnbGcz2dFDZjFygIAAAAADAAAEAAAAAAAAAAAAAAAAAAQSQf8XDSI5pvR4Fx4JsrS/////wAAAAEAAAAAAAAAAAAAAAEAAACX3/w5h75QAPomfKH+cyEKYU1yccUmBl+VSojiGOtdsUk7vcjYXUUboYm3dvqRqX2s4gROMOn+Ij8R0/8jYmnHkpvyAFNVRPyETyIKg7k5Z9+5I1c2d3446Jw/moWGGxjH8AEG9h27ytmOhozxDOEi/F2ZoXz6wlGDfGUo/2WxCkYOhTyNaw6TM+7drTM7yrW4iNVLUM0LX0xnFjIAhLhooWJek6vjQZUAZzBlAjBH8okRtYP8R7AY2Wls/hqFBhG0V4l42AC0LxsuZbMQrE2SzWZUZ0E9Uew7/n0cyX4CMQDR79INyv4ysMByW9kKGGKyba+cCNklExMR+btBQBmMuB2fMSdmQXe9umX8Ux8XCo4=" }], "QueryId": "1234273f-4a62-4cda-8d98-69615ee8be9b" }

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南中的交易資料作業

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GetWorkUnits中的。

下列程式碼範例會示範如何使用grant-permissions

AWS CLI

範例 1:若要使用 LF 標籤將權限授與資源上的主參與者

下列grant-permissions範例會將 ALL 權限授與資料庫資源上符合 LF 標籤原則的主參與者。

aws lakeformation grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" }, "Resource": { "LFTagPolicy": { "CatalogId": "123456789111", "ResourceType": "DATABASE", "Expression": [{ "TagKey": "usergroup", "TagValues": [ "analyst", "developer" ] }] } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [ "ALL" ] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

範例 2:將資料行層級權限授與主參與者

下列grant-permissions範例會授與選取特定資料行給主參與者的權限。

aws lakeformation grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "TableWithColumns": { "CatalogId": "123456789111", "ColumnNames": ["p_end_date_sk"], "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

範例 3:若要將資料表權限授與主參與者

下列grant-permissions範例會將指定資料庫之所有資料表的 select 權限授與主體。

aws lakeformation grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "TableWildcard": {} } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

範例 4:將 LF 標籤的權限授與主參與者

下列grant-permissions範例會將 LF 標籤的關聯權限授與主體。

aws lakeformation grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "LFTag": { "CatalogId": "123456789111", "TagKey": "category", "TagValues": [ "private", "public" ] } }, "Permissions": [ "ASSOCIATE" ], "PermissionsWithGrantOption": [] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

範例 5:將資料位置的權限授與主參與者

下列grant-permissions範例會將資料位置的權限授與主體。

aws lakeformation grant-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "DataLocation": { "CatalogId": "123456789111", "ResourceArn": "arn:aws:s3:::lf-data-lake-123456789111" } }, "Permissions": [ "DATA_LOCATION_ACCESS" ], "PermissionsWithGrantOption": [] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考GrantPermissions中的。

下列程式碼範例會示範如何使用list-data-cells-filter

AWS CLI

列示資料儲存格篩選

下面的list-data-cells-filter例子列出了給定表中的數據單元格過濾器。

aws lakeformation list-data-cells-filter \ --cli-input-json file://input.json

input.json 的內容:

{ "MaxResults": 2, "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }

輸出:

{ "DataCellsFilters": [{ "TableCatalogId": "123456789111", "DatabaseName": "tpc", "TableName": "dl_tpc_promotion", "Name": "developer_promotion", "RowFilter": { "FilterExpression": "p_promo_name='ese'" }, "ColumnNames": [ "p_channel_details", "p_start_date_sk", "p_purpose", "p_promo_id", "p_promo_name", "p_end_date_sk", "p_discount_active" ] }, { "TableCatalogId": "123456789111", "DatabaseName": "tpc", "TableName": "dl_tpc_promotion", "Name": "developer_promotion_allrows", "RowFilter": { "FilterExpression": "TRUE", "AllRowsWildcard": {} }, "ColumnNames": [ "p_channel_details", "p_start_date_sk", "p_promo_name" ] } ], "NextToken": "2MDA2MTgwNiwibmFub3MiOjE0MDAwMDAwMH19" }

有關更多信息,請參閱湖泊形成開發指南中的 L ake Formation 中的數據過濾和細胞級安全性。AWS

下列程式碼範例會示範如何使用list-permissions

AWS CLI

範例 1:擷取資源的主參與者權限清單

下列list-permissions範例會傳回資料庫資源的主體權限清單。

aws lakeformation list-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "ResourceType": "DATABASE", "MaxResults": 2 }

輸出:

{ "PrincipalResourcePermissions": [{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-campaign-manager" }, "Resource": { "Database": { "CatalogId": "123456789111", "Name": "tpc" } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [] }], "NextToken": "E5SlJDSTZleUp6SWpvaU9UQTNORE0zTXpFeE5Ua3pJbjE5TENKbGVIQnBjbUYwYVc5dUlqcDdJbk5sWTI5dVpITWlPakUyTm" }

有關更多信息,請參閱《Lake Formation 開發指南》中的管理AWS Lake Formation 權限

範例 2:若要使用資料篩選器擷取資料表上的主體權限清單

下列list-permissions範例會列出資料表上的權限,以及授與主參與者的相關資料篩選器。

aws lakeformation list-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_customer" } }, "IncludeRelated": "TRUE", "MaxResults": 10 }

輸出:

{ "PrincipalResourcePermissions": [{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:role/Admin" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "customer", "Name": "customer_invoice" } }, "Permissions": [ "ALL", "ALTER", "DELETE", "DESCRIBE", "DROP", "INSERT" ], "PermissionsWithGrantOption": [ "ALL", "ALTER", "DELETE", "DESCRIBE", "DROP", "INSERT" ] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:role/Admin" }, "Resource": { "TableWithColumns": { "CatalogId": "123456789111", "DatabaseName": "customer", "Name": "customer_invoice", "ColumnWildcard": {} } }, "Permissions": [ "SELECT" ], "PermissionsWithGrantOption": [ "SELECT" ] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:role/Admin" }, "Resource": { "DataCellsFilter": { "TableCatalogId": "123456789111", "DatabaseName": "customer", "TableName": "customer_invoice", "Name": "dl_us_customer" } }, "Permissions": [ "DESCRIBE", "SELECT", "DROP" ], "PermissionsWithGrantOption": [] } ], "NextToken": "VyeUFjY291bnRQZXJtaXNzaW9ucyI6ZmFsc2V9" }

有關更多信息,請參閱《Lake Formation 開發指南》中的管理AWS Lake Formation 權限

範例 3:擷取 LF 標籤上的主體權限清單

下列list-permissions範例會列出授與主參與者之 LF 標籤的權限。

aws lakeformation list-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Resource": { "LFTag": { "CatalogId": "123456789111", "TagKey": "category", "TagValues": [ "private" ] } }, "MaxResults": 10 }

輸出:

{ "PrincipalResourcePermissions": [{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" }, "Resource": { "LFTag": { "CatalogId": "123456789111", "TagKey": "category", "TagValues": [ "*" ] } }, "Permissions": [ "DESCRIBE" ], "PermissionsWithGrantOption": [ "DESCRIBE" ] }, { "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" }, "Resource": { "LFTag": { "CatalogId": "123456789111", "TagKey": "category", "TagValues": [ "*" ] } }, "Permissions": [ "ASSOCIATE" ], "PermissionsWithGrantOption": [ "ASSOCIATE" ] } ], "NextToken": "EJwY21GMGFXOXVJanA3SW5Ocm1pc3Npb25zIjpmYWxzZX0=" }

有關更多信息,請參閱《Lake Formation 開發指南》中的管理AWS Lake Formation 權限

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListPermissions中的。

下列程式碼範例會示範如何使用list-resources

AWS CLI

列出 Lake Formation 所管理的資源

下列list-resources範例會列出符合由 Lake Formation 所管理條件的資源。

aws lakeformation list-resources \ --cli-input-json file://input.json

input.json 的內容:

{ "FilterConditionList": [{ "Field": "ROLE_ARN", "ComparisonOperator": "CONTAINS", "StringValueList": [ "123456789111" ] }], "MaxResults": 10 }

輸出:

{ "ResourceInfoList": [{ "ResourceArn": "arn:aws:s3:::lf-data-lake-123456789111", "RoleArn": "arn:aws:iam::123456789111:role/LF-GlueServiceRole", "LastModified": "2022-07-21T02:12:46.669000+00:00" }, { "ResourceArn": "arn:aws:s3:::lf-emr-test-123456789111", "RoleArn": "arn:aws:iam::123456789111:role/EMRLFS3Role", "LastModified": "2022-07-29T16:22:03.211000+00:00" } ] }

有關更多信息,請參閱《Lake Formation 開發指南》中的管理AWS Lake Formation 權限

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListResources中的。

下列程式碼範例會示範如何使用list-transactions

AWS CLI

列出所有交易明細

下列list-transactions範例會傳回有關交易及其狀態的中繼資料。

aws lakeformation list-transactions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "StatusFilter": "ALL", "MaxResults": 3 }

輸出:

{ "Transactions": [{ "TransactionId": "1234569f08804cb790d950d4d0fe485e", "TransactionStatus": "committed", "TransactionStartTime": "2022-08-10T14:32:29.220000+00:00", "TransactionEndTime": "2022-08-10T14:32:33.751000+00:00" }, { "TransactionId": "12345972ca8347b89825e33c5774aec4", "TransactionStatus": "committed", "TransactionStartTime": "2022-08-10T14:29:04.046000+00:00", "TransactionEndTime": "2022-08-10T14:29:09.681000+00:00" }, { "TransactionId": "12345daf6cb047dbba8ad9b0414613b2", "TransactionStatus": "committed", "TransactionStartTime": "2022-08-10T13:56:51.261000+00:00", "TransactionEndTime": "2022-08-10T13:56:51.547000+00:00" } ], "NextToken": "77X1ebypsI7os+X2lhHsZLGNCDK3nNGpwRdFpicSOHgcX1/QMoniUAKcpR3kj3ts3PVdMA==" }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考ListTransactions中的。

下列程式碼範例會示範如何使用put-data-lake-settings

AWS CLI

若要設定 AWS Lake 格式化管理的資料湖設定

下列put-data-lake-settings範例會設定資料湖管理員和其他資料湖設定的清單。

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

input.json 的內容:

{ "DataLakeSettings": { "DataLakeAdmins": [{ "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-admin" } ], "CreateDatabaseDefaultPermissions": [], "CreateTableDefaultPermissions": [], "TrustedResourceOwners": [], "AllowExternalDataFiltering": true, "ExternalDataFilteringAllowList": [{ "DataLakePrincipalIdentifier ": "123456789111" }], "AuthorizedSessionTagValueList": ["Amazon EMR"] } }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的變更資料AWS 湖的預設安全性設定

下列程式碼範例會示範如何使用register-resource

AWS CLI

範例 1:使用服務連結角色註冊資料湖儲存

下列register-resource範例會使用服務連結角色將資源註冊為由 Lake Formation 管理。

aws lakeformation register-resource \ --cli-input-json file://input.json

input.json 的內容:

{ "ResourceArn": "arn:aws:s3:::lf-emr-athena-result-123", "UseServiceLinkedRole": true }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的將 Amazon S3 位置新增至資料AWS 湖

範例 2:使用自訂角色註冊資料湖儲存

下列register-resource範例會使用自訂角色將資源註冊為由 Lake Formation 管理。

aws lakeformation register-resource \ --cli-input-json file://input.json

input.json 的內容:

{ "ResourceArn": "arn:aws:s3:::lf-emr-athena-result-123", "UseServiceLinkedRole": false, "RoleArn": "arn:aws:iam::123456789111:role/LF-GlueServiceRole" }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的將 Amazon S3 位置新增至資料AWS 湖

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考RegisterResource中的。

下列程式碼範例會示範如何使用remove-lf-tags-from-resource

AWS CLI

若要從資源中移除 LF 標籤

下列remove-lf-tags-from-resource範例會移除 LF 標籤與資料表資源的關聯。

aws lakeformation remove-lf-tags-from-resource \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }

輸出:

{ "Failures": [] }

如需詳細資訊,請參閱〈L AWS ake Formation 開發人員指南〉中的〈將 LF 標籤指派給資料目錄資源〉。

下列程式碼範例會示範如何使用revoke-permissions

AWS CLI

若要從主參與者撤銷資源的權限

下列revoke-permissions範例會撤銷特定資料庫之特定資料表的主體存取權。

aws lakeformation revoke-permissions \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "123456789111", "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::123456789111:user/lf-developer" }, "Resource": { "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_promotion" } }, "Permissions": [ "ALL" ], "PermissionsWithGrantOption": [] }

此命令不會產生輸出。

如需詳細資訊,請參閱 AWS Lake Formation 開發人員指南的授與和撤銷資料目錄資源的權限

下列程式碼範例會示範如何使用search-databases-by-lf-tags

AWS CLI

若要依 LF 標籤搜尋資料庫資源

以下search-databases-by-lf-tags範例搜尋符合 LFTag 運算式的資料庫資源。

aws lakeformation search-databases-by-lf-tags \ --cli-input-json file://input.json

input.json 的內容:

{ "MaxResults": 1, "CatalogId": "123456789111", "Expression": [{ "TagKey": "usergroup", "TagValues": [ "developer" ] }] }

輸出:

{ "DatabaseList": [{ "Database": { "CatalogId": "123456789111", "Name": "tpc" }, "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }] }

有關更多信息,請參閱在 L AWS ake Formation 開發指南中查看 LF 標籤分配給的資源

下列程式碼範例會示範如何使用search-tables-by-lf-tags

AWS CLI

若要依 LF 標籤搜尋表格資源

下列search-tables-by-lf-tags範例會搜尋符合 LFTag 運算式的資料表資源。

aws lakeformation search-tables-by-lf-tags \ --cli-input-json file://input.json

input.json 的內容:

{ "MaxResults": 2, "CatalogId": "123456789111", "Expression": [{ "TagKey": "usergroup", "TagValues": [ "developer" ] }] }

輸出:

{ "NextToken": "c2VhcmNoQWxsVGFnc0luVGFibGVzIjpmYWxzZX0=", "TableList": [{ "Table": { "CatalogId": "123456789111", "DatabaseName": "tpc", "Name": "dl_tpc_item" }, "LFTagOnDatabase": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }], "LFTagsOnTable": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }], "LFTagsOnColumns": [{ "Name": "i_item_desc", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_container", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_wholesale_cost", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_manufact_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_brand_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_formulation", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_current_price", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_size", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_rec_start_date", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_manufact", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_item_sk", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_manager_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_item_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_class_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_class", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_category", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_category_id", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_brand", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_units", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_rec_end_date", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_color", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] }, { "Name": "i_product_name", "LFTags": [{ "CatalogId": "123456789111", "TagKey": "usergroup", "TagValues": [ "developer" ] }] } ] }] }

有關更多信息,請參閱在 L AWS ake Formation 開發指南中查看 LF 標籤分配給的資源

下列程式碼範例會示範如何使用start-query-planning

AWS CLI

若要處理查詢陳述式

下列start-query-planning範例會提交要求以處理查詢陳述式。

aws lakeformation start-query-planning \ --cli-input-json file://input.json

input.json 的內容:

{ "QueryPlanningContext": { "CatalogId": "012345678901", "DatabaseName": "tpc" }, "QueryString": "select * from dl_tpc_household_demographics_gov where hd_income_band_sk=9" }

輸出:

{ "QueryId": "772a273f-4a62-4cda-8d98-69615ee8be9b" }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

下列程式碼範例會示範如何使用start-transaction

AWS CLI

開始新的交易

下列start-transaction範例會啟動新的交易,並傳回其交易 ID。

aws lakeformation start-transaction \ --transaction-type = 'READ_AND_WRITE'

輸出:

{ "TransactionId": "b014d972ca8347b89825e33c5774aec4" }

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考StartTransaction中的。

下列程式碼範例會示範如何使用update-lf-tag

AWS CLI

更新 LF 標籤定義的步驟

下列update-lf-tag範例會更新 LF 標籤定義。

aws lakeformation update-lf-tag \ --catalog-id '123456789111' \ --tag-key 'usergroup' \ --tag-values-to-add '["admin"]'

此命令不會產生輸出。

如需詳細資訊,請參閱 L AWS ake Formation 開發人員指南中的 < 管理中繼資料存取控制的 LF 標籤 >。

  • 如需 API 詳細資訊,請參閱AWS CLI 命令參考UpdateLfTag中的。

下列程式碼範例會示範如何使用update-table-objects

AWS CLI

修改受控管表格物件的步驟

下列update-table-objects範例會將提供的 S3 物件新增至指定的受控資料表。

aws lakeformation update-table-objects \ --cli-input-json file://input.json

input.json 的內容:

{ "CatalogId": "012345678901", "DatabaseName": "tpc", "TableName": "dl_tpc_household_demographics_gov", "TransactionId": "12347a9f75424b9b915f6ff201d2a190", "WriteOperations": [{ "AddObject": { "Uri": "s3://lf-data-lake-012345678901/target/dl_tpc_household_demographics_gov/run-unnamed-1-part-block-0-r-00000-snappy-ff26b17504414fe88b302cd795eabd00.parquet", "ETag": "1234ab1fc50a316b149b4e1f21a73800", "Size": 42200 } }] }

此命令不會產生輸出。

如需詳細資訊,請參閱 Lake Formation 開發人員指南中的交易中的資料AWS 湖讀取和寫入資料湖。