PrincipalPermissions
The PrincipalPermissions resource lets you manage permissions for data lake principals in AWS LakeFormation. You can define granular access controls to your data lake resources. For more details, refer to the official AWS documentation: AWS LakeFormation PrincipalPermissionss.
Minimal Example
Create a basic PrincipalPermissions resource with required properties and a common optional property.
ts
import AWS from "alchemy/aws/control";
const basicPermissions = await AWS.LakeFormation.PrincipalPermissions("basicPermissions", {
Resource: {
Table: {
DatabaseName: "finance_db",
Name: "transactions"
}
},
Permissions: ["SELECT"],
Principal: {
DataLakePrincipalIdentifier: "user@example.com"
},
PermissionsWithGrantOption: ["SELECT"]
});
Advanced Configuration
Configure advanced permissions including catalog-level permissions and multiple permissions.
ts
const advancedPermissions = await AWS.LakeFormation.PrincipalPermissions("advancedPermissions", {
Resource: {
Catalog: {}
},
Permissions: ["ALL"],
Catalog: "finance_catalog",
Principal: {
DataLakePrincipalIdentifier: "group:finance-team"
},
PermissionsWithGrantOption: ["SELECT", "INSERT"]
});
Granting Permissions with Options
Demonstrate how to grant permissions with grant options on a specific table.
ts
const tablePermissionsWithGrant = await AWS.LakeFormation.PrincipalPermissions("tablePermissionsWithGrant", {
Resource: {
Table: {
DatabaseName: "sales_db",
Name: "customer_data"
}
},
Permissions: ["INSERT"],
Principal: {
DataLakePrincipalIdentifier: "role:analytics-role"
},
PermissionsWithGrantOption: ["INSERT"]
});
Catalog-Level Permissions
Create a PrincipalPermissions resource that grants catalog-level permissions to a user.
ts
const catalogPermissions = await AWS.LakeFormation.PrincipalPermissions("catalogPermissions", {
Resource: {
Catalog: {}
},
Permissions: ["CREATE_DATABASE"],
Principal: {
DataLakePrincipalIdentifier: "user:admin@example.com"
},
PermissionsWithGrantOption: []
});