diff --git a/scripts/patches/lakeformation.py b/scripts/patches/lakeformation.py index ee9a44436..504372d1c 100644 --- a/scripts/patches/lakeformation.py +++ b/scripts/patches/lakeformation.py @@ -29,6 +29,17 @@ "op": "remove", "path": "/PropertyTypes/AWS::LakeFormation::PrincipalPermissions.Resource/Properties/Catalog/Type", }, + # Rename AWS::LakeFormation::PrincipalPermissions.Resource to AWS::LakeFormation::PrincipalPermissions.PrincipalResource + { + "op": "move", + "from": "/PropertyTypes/AWS::LakeFormation::PrincipalPermissions.Resource", + "path": "/PropertyTypes/AWS::LakeFormation::PrincipalPermissions.PrincipalResource", + }, + { + "op": "replace", + "path": "/ResourceTypes/AWS::LakeFormation::PrincipalPermissions/Properties/Resource/Type", + "value": "PrincipalResource", + }, { "op": "add", "path": "/PropertyTypes/AWS::LakeFormation::TagAssociation.Resource/Properties/Catalog/PrimitiveType", diff --git a/troposphere/lakeformation.py b/troposphere/lakeformation.py index 197b32734..f1a5e261b 100644 --- a/troposphere/lakeformation.py +++ b/troposphere/lakeformation.py @@ -72,114 +72,153 @@ class DataLakeSettings(AWSObject): } -class DataCellsFilterResource(AWSProperty): +class DatabaseResource(AWSProperty): """ - `DataCellsFilterResource `__ + `DatabaseResource `__ """ props: PropsDictType = { - "DatabaseName": (str, True), + "CatalogId": (str, True), "Name": (str, True), - "TableCatalogId": (str, True), - "TableName": (str, True), } -class DataLocationResource(AWSProperty): +class PermissionsDataLocationResource(AWSProperty): """ - `DataLocationResource `__ + `PermissionsDataLocationResource `__ + """ + + props: PropsDictType = { + "CatalogId": (str, False), + "S3Resource": (str, False), + } + + +class TableWildcard(AWSProperty): + """ + `TableWildcard `__ + """ + + props: PropsDictType = {} + + +class TableResource(AWSProperty): + """ + `TableResource `__ """ props: PropsDictType = { "CatalogId": (str, True), - "ResourceArn": (str, True), + "DatabaseName": (str, True), + "Name": (str, False), + "TableWildcard": (TableWildcard, False), } -class DatabaseResource(AWSProperty): +class TableWithColumnsResource(AWSProperty): """ - `DatabaseResource `__ + `TableWithColumnsResource `__ """ props: PropsDictType = { "CatalogId": (str, True), + "ColumnNames": ([str], False), + "ColumnWildcard": (ColumnWildcard, False), + "DatabaseName": (str, True), "Name": (str, True), } -class LFTagKeyResource(AWSProperty): +class ResourceProperty(AWSProperty): """ - `LFTagKeyResource `__ + `ResourceProperty `__ """ props: PropsDictType = { - "CatalogId": (str, True), - "TagKey": (str, True), - "TagValues": ([str], True), + "DataLocationResource": (PermissionsDataLocationResource, False), + "DatabaseResource": (DatabaseResource, False), + "TableResource": (TableResource, False), + "TableWithColumnsResource": (TableWithColumnsResource, False), } -class LFTag(AWSProperty): +class Permissions(AWSObject): """ - `LFTag `__ + `Permissions `__ """ + resource_type = "AWS::LakeFormation::Permissions" + props: PropsDictType = { - "TagKey": (str, False), - "TagValues": ([str], False), + "DataLakePrincipal": (DataLakePrincipal, True), + "Permissions": ([str], False), + "PermissionsWithGrantOption": ([str], False), + "Resource": (ResourceProperty, True), } -class LFTagPolicyResource(AWSProperty): +class DataCellsFilterResource(AWSProperty): """ - `LFTagPolicyResource `__ + `DataCellsFilterResource `__ """ props: PropsDictType = { - "CatalogId": (str, True), - "Expression": ([LFTag], True), - "ResourceType": (str, True), + "DatabaseName": (str, True), + "Name": (str, True), + "TableCatalogId": (str, True), + "TableName": (str, True), } -class TableWildcard(AWSProperty): +class DataLocationResource(AWSProperty): """ - `TableWildcard `__ + `DataLocationResource `__ """ - props: PropsDictType = {} + props: PropsDictType = { + "CatalogId": (str, True), + "ResourceArn": (str, True), + } -class TableResource(AWSProperty): +class LFTagKeyResource(AWSProperty): """ - `TableResource `__ + `LFTagKeyResource `__ """ props: PropsDictType = { "CatalogId": (str, True), - "DatabaseName": (str, True), - "Name": (str, False), - "TableWildcard": (TableWildcard, False), + "TagKey": (str, True), + "TagValues": ([str], True), } -class TableWithColumnsResource(AWSProperty): +class LFTag(AWSProperty): """ - `TableWithColumnsResource `__ + `LFTag `__ + """ + + props: PropsDictType = { + "TagKey": (str, False), + "TagValues": ([str], False), + } + + +class LFTagPolicyResource(AWSProperty): + """ + `LFTagPolicyResource `__ """ props: PropsDictType = { "CatalogId": (str, True), - "ColumnNames": ([str], False), - "ColumnWildcard": (ColumnWildcard, False), - "DatabaseName": (str, True), - "Name": (str, True), + "Expression": ([LFTag], True), + "ResourceType": (str, True), } -class ResourceProperty(AWSProperty): +class PrincipalResource(AWSProperty): """ - `ResourceProperty `__ + `PrincipalResource `__ """ props: PropsDictType = { @@ -194,21 +233,6 @@ class ResourceProperty(AWSProperty): } -class Permissions(AWSObject): - """ - `Permissions `__ - """ - - resource_type = "AWS::LakeFormation::Permissions" - - props: PropsDictType = { - "DataLakePrincipal": (DataLakePrincipal, True), - "Permissions": ([str], False), - "PermissionsWithGrantOption": ([str], False), - "Resource": (ResourceProperty, True), - } - - class PrincipalPermissions(AWSObject): """ `PrincipalPermissions `__ @@ -221,7 +245,7 @@ class PrincipalPermissions(AWSObject): "Permissions": ([str], True), "PermissionsWithGrantOption": ([str], True), "Principal": (DataLakePrincipal, True), - "Resource": (ResourceProperty, True), + "Resource": (PrincipalResource, True), } @@ -302,14 +326,3 @@ class TagAssociation(AWSObject): "LFTags": ([LFTagPair], True), "Resource": (TagAssociationResource, True), } - - -class PermissionsDataLocationResource(AWSProperty): - """ - `PermissionsDataLocationResource `__ - """ - - props: PropsDictType = { - "CatalogId": (str, False), - "S3Resource": (str, False), - }