iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
953 lines • 90.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Finspace = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [finspace](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonfinspace.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Finspace extends shared_1.PolicyStatement {
/**
* Statement provider for service [finspace](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonfinspace.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
constructor(sid) {
super(sid);
this.servicePrefix = 'finspace';
this.accessLevelList = {
Write: [
'ConnectKxCluster',
'CreateEnvironment',
'CreateKxChangeset',
'CreateKxCluster',
'CreateKxDatabase',
'CreateKxDataview',
'CreateKxEnvironment',
'CreateKxScalingGroup',
'CreateKxUser',
'CreateKxVolume',
'CreateUser',
'DeleteEnvironment',
'DeleteKxCluster',
'DeleteKxClusterNode',
'DeleteKxDatabase',
'DeleteKxDataview',
'DeleteKxEnvironment',
'DeleteKxScalingGroup',
'DeleteKxUser',
'DeleteKxVolume',
'LoadSampleDataSetGroupIntoEnvironment',
'MountKxDatabase',
'ResetUserPassword',
'UpdateEnvironment',
'UpdateKxClusterCodeConfiguration',
'UpdateKxClusterDatabases',
'UpdateKxDatabase',
'UpdateKxDataview',
'UpdateKxEnvironment',
'UpdateKxEnvironmentNetwork',
'UpdateKxUser',
'UpdateKxVolume',
'UpdateUser'
],
Read: [
'GetEnvironment',
'GetKxChangeset',
'GetKxCluster',
'GetKxConnectionString',
'GetKxDatabase',
'GetKxDataview',
'GetKxEnvironment',
'GetKxScalingGroup',
'GetKxUser',
'GetKxVolume',
'GetLoadSampleDataSetGroupIntoEnvironmentStatus',
'GetUser'
],
List: [
'ListEnvironments',
'ListKxChangesets',
'ListKxClusterNodes',
'ListKxClusters',
'ListKxDatabases',
'ListKxDataviews',
'ListKxEnvironments',
'ListKxScalingGroups',
'ListKxUsers',
'ListKxVolumes',
'ListTagsForResource',
'ListUsers'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
/**
* Grants permission to connect to a kdb cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/userguide/interacting-with-kdb-clusters.html
*/
toConnectKxCluster() {
return this.to('ConnectKxCluster');
}
/**
* Grants permission to create a FinSpace environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateEnvironment.html
*/
toCreateEnvironment() {
return this.to('CreateEnvironment');
}
/**
* Grants permission to create a changeset for a kdb database
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxChangeset.html
*/
toCreateKxChangeset() {
return this.to('CreateKxChangeset');
}
/**
* Grants permission to create a cluster in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* Dependent actions:
* - ec2:DescribeSubnets
* - finspace:MountKxDatabase
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxCluster.html
*/
toCreateKxCluster() {
return this.to('CreateKxCluster');
}
/**
* Grants permission to create a kdb database in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxDatabase.html
*/
toCreateKxDatabase() {
return this.to('CreateKxDatabase');
}
/**
* Grants permission to create a dataview in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxDataview.html
*/
toCreateKxDataview() {
return this.to('CreateKxDataview');
}
/**
* Grants permission to create a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxEnvironment.html
*/
toCreateKxEnvironment() {
return this.to('CreateKxEnvironment');
}
/**
* Grants permission to create a scaling group in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxScalingGroup.html
*/
toCreateKxScalingGroup() {
return this.to('CreateKxScalingGroup');
}
/**
* Grants permission to create a user in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxUser.html
*/
toCreateKxUser() {
return this.to('CreateKxUser');
}
/**
* Grants permission to create a volume in a managed kdb environment
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_CreateKxVolume.html
*/
toCreateKxVolume() {
return this.to('CreateKxVolume');
}
/**
* Grants permission to create a FinSpace user
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toCreateUser() {
return this.to('CreateUser');
}
/**
* Grants permission to delete a FinSpace environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteEnvironment.html
*/
toDeleteEnvironment() {
return this.to('DeleteEnvironment');
}
/**
* Grants permission to delete a kdb cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxCluster.html
*/
toDeleteKxCluster() {
return this.to('DeleteKxCluster');
}
/**
* Grants permission to delete a node from a kdb cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxClusterNode.html
*/
toDeleteKxClusterNode() {
return this.to('DeleteKxClusterNode');
}
/**
* Grants permission to delete a kdb database
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxDatabase.html
*/
toDeleteKxDatabase() {
return this.to('DeleteKxDatabase');
}
/**
* Grants permission to delete a dataview in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxDataview.html
*/
toDeleteKxDataview() {
return this.to('DeleteKxDataview');
}
/**
* Grants permission to delete a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxEnvironment.html
*/
toDeleteKxEnvironment() {
return this.to('DeleteKxEnvironment');
}
/**
* Grants permission to delete a scaling group in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxScalingGroup.html
*/
toDeleteKxScalingGroup() {
return this.to('DeleteKxScalingGroup');
}
/**
* Grants permission to delete a kdb user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxUser.html
*/
toDeleteKxUser() {
return this.to('DeleteKxUser');
}
/**
* Grants permission to delete a volume in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_DeleteKxVolume.html
*/
toDeleteKxVolume() {
return this.to('DeleteKxVolume');
}
/**
* Grants permission to describe a FinSpace environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetEnvironment.html
*/
toGetEnvironment() {
return this.to('GetEnvironment');
}
/**
* Grants permission to describe a changeset for a kdb database
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxChangeset.html
*/
toGetKxChangeset() {
return this.to('GetKxChangeset');
}
/**
* Grants permission to describe a cluster in a managed kdb environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxCluster.html
*/
toGetKxCluster() {
return this.to('GetKxCluster');
}
/**
* Grants permission to retrieve a connection string for kdb clusters
*
* Access Level: Read
*
* Dependent actions:
* - finspace:ConnectKxCluster
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxConnectionString.html
*/
toGetKxConnectionString() {
return this.to('GetKxConnectionString');
}
/**
* Grants permission to describe a kdb database
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxDatabase.html
*/
toGetKxDatabase() {
return this.to('GetKxDatabase');
}
/**
* Grants permission to describe a databiew in a managed kdb environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxDataview.html
*/
toGetKxDataview() {
return this.to('GetKxDataview');
}
/**
* Grants permission to describe a managed kdb environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxEnvironment.html
*/
toGetKxEnvironment() {
return this.to('GetKxEnvironment');
}
/**
* Grants permission to describe a scaling group in a managed kdb environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxScalingGroup.html
*/
toGetKxScalingGroup() {
return this.to('GetKxScalingGroup');
}
/**
* Grants permission to describe a kdb user
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxUser.html
*/
toGetKxUser() {
return this.to('GetKxUser');
}
/**
* Grants permission to describe a volume in a managed kdb environment
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_GetKxVolume.html
*/
toGetKxVolume() {
return this.to('GetKxVolume');
}
/**
* Grants permission to request status of the loading of sample data bundle
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toGetLoadSampleDataSetGroupIntoEnvironmentStatus() {
return this.to('GetLoadSampleDataSetGroupIntoEnvironmentStatus');
}
/**
* Grants permission to describe a FinSpace user
*
* Access Level: Read
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toGetUser() {
return this.to('GetUser');
}
/**
* Grants permission to list FinSpace environments in the AWS account
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListEnvironments.html
*/
toListEnvironments() {
return this.to('ListEnvironments');
}
/**
* Grants permission to list changesets for a kdb database
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxChangesets.html
*/
toListKxChangesets() {
return this.to('ListKxChangesets');
}
/**
* Grants permission to list cluster nodes in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxClusterNodes.html
*/
toListKxClusterNodes() {
return this.to('ListKxClusterNodes');
}
/**
* Grants permission to list clusters in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxClusters.html
*/
toListKxClusters() {
return this.to('ListKxClusters');
}
/**
* Grants permission to list kdb databases in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxDatabases.html
*/
toListKxDatabases() {
return this.to('ListKxDatabases');
}
/**
* Grants permission to list dataviews in a database
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxDataviews.html
*/
toListKxDataviews() {
return this.to('ListKxDataviews');
}
/**
* Grants permission to list managed kdb environments
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxEnvironments.html
*/
toListKxEnvironments() {
return this.to('ListKxEnvironments');
}
/**
* Grants permission to list scaling groups in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxScalingGroups.html
*/
toListKxScalingGroups() {
return this.to('ListKxScalingGroups');
}
/**
* Grants permission to list users in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxUsers.html
*/
toListKxUsers() {
return this.to('ListKxUsers');
}
/**
* Grants permission to list volumes in a managed kdb environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListKxVolumes.html
*/
toListKxVolumes() {
return this.to('ListKxVolumes');
}
/**
* Grants permission to return a list of tags for a resource
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list FinSpace users in an environment
*
* Access Level: List
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toListUsers() {
return this.to('ListUsers');
}
/**
* Grants permission to load sample data bundle into your FinSpace environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toLoadSampleDataSetGroupIntoEnvironment() {
return this.to('LoadSampleDataSetGroupIntoEnvironment');
}
/**
* Grants permission to mount a database to a kdb cluster
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-managed-kdb-db.html
*/
toMountKxDatabase() {
return this.to('MountKxDatabase');
}
/**
* Grants permission to reset the password for a FinSpace user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toResetUserPassword() {
return this.to('ResetUserPassword');
}
/**
* Grants permission to tag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to untag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update a FinSpace environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateEnvironment.html
*/
toUpdateEnvironment() {
return this.to('UpdateEnvironment');
}
/**
* Grants permission to update code configuration for a cluster in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxClusterCodeConfiguration.html
*/
toUpdateKxClusterCodeConfiguration() {
return this.to('UpdateKxClusterCodeConfiguration');
}
/**
* Grants permission to update databases for a cluster in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxClusterDatabases.html
*/
toUpdateKxClusterDatabases() {
return this.to('UpdateKxClusterDatabases');
}
/**
* Grants permission to update a kdb database
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxDatabase.html
*/
toUpdateKxDatabase() {
return this.to('UpdateKxDatabase');
}
/**
* Grants permission to update a dataview in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxDataview.html
*/
toUpdateKxDataview() {
return this.to('UpdateKxDataview');
}
/**
* Grants permission to update a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxEnvironment.html
*/
toUpdateKxEnvironment() {
return this.to('UpdateKxEnvironment');
}
/**
* Grants permission to update the network for a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxEnvironmentNetwork.html
*/
toUpdateKxEnvironmentNetwork() {
return this.to('UpdateKxEnvironmentNetwork');
}
/**
* Grants permission to update a kdb user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxUser.html
*/
toUpdateKxUser() {
return this.to('UpdateKxUser');
}
/**
* Grants permission to update a volume in a managed kdb environment
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/management-api/API_UpdateKxVolume.html
*/
toUpdateKxVolume() {
return this.to('UpdateKxVolume');
}
/**
* Grants permission to update a FinSpace user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-what-is.html
*/
toUpdateUser() {
return this.to('UpdateUser');
}
/**
* Adds a resource of type environment to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onEnvironment(environmentId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:environment/${environmentId}`);
}
/**
* Adds a resource of type user to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param userId - Identifier for the userId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onUser(userId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:user/${userId}`);
}
/**
* Adds a resource of type kxEnvironment to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxEnvironment(environmentId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}`);
}
/**
* Adds a resource of type kxUser to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param userName - Identifier for the userName.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxUser(environmentId, userName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxUser/${userName}`);
}
/**
* Adds a resource of type kxCluster to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param kxCluster - Identifier for the kxCluster.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxCluster(environmentId, kxCluster, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxCluster/${kxCluster}`);
}
/**
* Adds a resource of type kxDatabase to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param kxDatabase - Identifier for the kxDatabase.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxDatabase(environmentId, kxDatabase, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxDatabase/${kxDatabase}`);
}
/**
* Adds a resource of type kxScalingGroup to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param kxScalingGroup - Identifier for the kxScalingGroup.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxScalingGroup(environmentId, kxScalingGroup, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxScalingGroup/${kxScalingGroup}`);
}
/**
* Adds a resource of type kxDataview to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param kxDatabase - Identifier for the kxDatabase.
* @param kxDataview - Identifier for the kxDataview.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxDataview(environmentId, kxDatabase, kxDataview, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxDatabase/${kxDatabase}/kxDataview/${kxDataview}`);
}
/**
* Adds a resource of type kxVolume to the statement
*
* https://docs.aws.amazon.com/finspace/latest/userguide/finspace-example-policies.html
*
* @param environmentId - Identifier for the environmentId.
* @param kxVolume - Identifier for the kxVolume.
* @param account - Account of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's account.
* @param region - Region of the resource; defaults to `*`, unless using the CDK, where the default is the current Stack's region.
* @param partition - Partition of the AWS account [aws, aws-cn, aws-us-gov]; defaults to `aws`, unless using the CDK, where the default is the current Stack's partition.
*
* Possible conditions:
* - .ifAwsResourceTag()
*/
onKxVolume(environmentId, kxVolume, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:finspace:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:kxEnvironment/${environmentId}/kxVolume/${kxVolume}`);
}
/**
* Filters access by the presence of tag key-value pairs in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
*
* Applies to actions:
* - .toCreateEnvironment()
* - .toCreateKxCluster()
* - .toCreateKxDatabase()
* - .toCreateKxDataview()
* - .toCreateKxEnvironment()
* - .toCreateKxScalingGroup()
* - .toCreateKxUser()
* - .toCreateKxVolume()
* - .toCreateUser()
* - .toTagResource()
*
* @param tagKey The tag key to check
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsRequestTag(tagKey, value, operator) {
return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike');
}
/**
* Filters access by the tag key-value pairs attached to the resource
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to resource types:
* - environment
* - user
* - kxEnvironment
* - kxUser
* - kxCluster
* - kxDatabase
* - kxScalingGroup
* - kxDataview
* - kxVolume
*
* @param tagKey The tag key to check
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsResourceTag(tagKey, value, operator) {
return this.if(`aws:ResourceTag/${tagKey}`, value, operator ?? 'StringLike');
}
/**
* Filters access by the presence of tag keys in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toCreateEnvironment()
* - .toCreateKxCluster()
* - .toCreateKxDatabase()
* - .toCreateKxDataview()
* - .toCreateKxEnvironment()
* - .toCreateKxScalingGroup()
* - .toCreateKxUser()
* - .toCreateKxVolume()
* - .toCreateUser()
* - .toTagResource()
* - .toUntagResource()
*
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsTagKeys(value, operator) {
return this.if(`aws:TagKeys`, value, operator ?? 'StringLike');
}
}
exports.Finspace = Finspace;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaW5zcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFFekQ7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFlO0lBRzNDOzs7O09BSUc7SUFDSCxZQUFZLEdBQVk7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBUk4sa0JBQWEsR0FBRyxVQUFVLENBQUM7UUFzc0J4QixvQkFBZSxHQUFvQjtZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsa0JBQWtCO2dCQUNsQixtQkFBbUI7Z0JBQ25CLG1CQUFtQjtnQkFDbkIsaUJBQWlCO2dCQUNqQixrQkFBa0I7Z0JBQ2xCLGtCQUFrQjtnQkFDbEIscUJBQXFCO2dCQUNyQixzQkFBc0I7Z0JBQ3RCLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixZQUFZO2dCQUNaLG1CQUFtQjtnQkFDbkIsaUJBQWlCO2dCQUNqQixxQkFBcUI7Z0JBQ3JCLGtCQUFrQjtnQkFDbEIsa0JBQWtCO2dCQUNsQixxQkFBcUI7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLHVDQUF1QztnQkFDdkMsaUJBQWlCO2dCQUNqQixtQkFBbUI7Z0JBQ25CLG1CQUFtQjtnQkFDbkIsa0NBQWtDO2dCQUNsQywwQkFBMEI7Z0JBQzFCLGtCQUFrQjtnQkFDbEIsa0JBQWtCO2dCQUNsQixxQkFBcUI7Z0JBQ3JCLDRCQUE0QjtnQkFDNUIsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLFlBQVk7YUFDYjtZQUNELElBQUksRUFBRTtnQkFDSixnQkFBZ0I7Z0JBQ2hCLGdCQUFnQjtnQkFDaEIsY0FBYztnQkFDZCx1QkFBdUI7Z0JBQ3ZCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixrQkFBa0I7Z0JBQ2xCLG1CQUFtQjtnQkFDbkIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLGdEQUFnRDtnQkFDaEQsU0FBUzthQUNWO1lB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ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFtmaW5zcGFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uZmluc3BhY2UuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBGaW5zcGFjZSBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2ZpbnNwYWNlJztcblxuICAvKipcbiAgICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFtmaW5zcGFjZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9uZmluc3BhY2UuaHRtbCkuXG4gICAqXG4gICAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2lkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjb25uZWN0IHRvIGEga2RiIGNsdXN0ZXJcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZmluc3BhY2UvbGF0ZXN0L3VzZXJndWlkZS9pbnRlcmFjdGluZy13aXRoLWtkYi1jbHVzdGVycy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Db25uZWN0S3hDbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDb25uZWN0S3hDbHVzdGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgRmluU3BhY2UgZW52aXJvbm1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZmluc3BhY2UvbGF0ZXN0L21hbmFnZW1lbnQtYXBpL0FQSV9DcmVhdGVFbnZpcm9ubWVudC5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVFbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlRW52aXJvbm1lbnQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBjaGFuZ2VzZXQgZm9yIGEga2RiIGRhdGFiYXNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ZpbnNwYWNlL2xhdGVzdC9tYW5hZ2VtZW50LWFwaS9BUElfQ3JlYXRlS3hDaGFuZ2VzZXQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlS3hDaGFuZ2VzZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUt4Q2hhbmdlc2V0Jyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgY2x1c3RlciBpbiBhIG1hbmFnZWQga2RiIGVudmlyb25tZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICpcbiAgICogRGVwZW5kZW50IGFjdGlvbnM6XG4gICAqIC0gZWMyOkRlc2NyaWJlU3VibmV0c1xuICAgKiAtIGZpbnNwYWNlOk1vdW50S3hEYXRhYmFzZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZmluc3BhY2UvbGF0ZXN0L21hbmFnZW1lbnQtYXBpL0FQSV9DcmVhdGVLeENsdXN0ZXIuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlS3hDbHVzdGVyKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVLeENsdXN0ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSBrZGIgZGF0YWJhc2UgaW4gYSBtYW5hZ2VkIGtkYiBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9maW5zcGFjZS9sYXRlc3QvbWFuYWdlbWVudC1hcGkvQVBJX0NyZWF0ZUt4RGF0YWJhc2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ3JlYXRlS3hEYXRhYmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ3JlYXRlS3hEYXRhYmFzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIGRhdGF2aWV3IGluIGEgbWFuYWdlZCBrZGIgZW52aXJvbm1lbnRcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZmluc3BhY2UvbGF0ZXN0L21hbmFnZW1lbnQtYXBpL0FQSV9DcmVhdGVLeERhdGF2aWV3Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUt4RGF0YXZpZXcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NyZWF0ZUt4RGF0YXZpZ