iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
1,025 lines • 92.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Datasync = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [datasync](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Datasync extends shared_1.PolicyStatement {
/**
* Statement provider for service [datasync](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsdatasync.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 = 'datasync';
this.accessLevelList = {
Write: [
'AddStorageSystem',
'CancelTaskExecution',
'CreateAgent',
'CreateLocationAzureBlob',
'CreateLocationEfs',
'CreateLocationFsxLustre',
'CreateLocationFsxOntap',
'CreateLocationFsxOpenZfs',
'CreateLocationFsxWindows',
'CreateLocationHdfs',
'CreateLocationNfs',
'CreateLocationObjectStorage',
'CreateLocationS3',
'CreateLocationSmb',
'CreateTask',
'DeleteAgent',
'DeleteLocation',
'DeleteTask',
'GenerateRecommendations',
'RemoveStorageSystem',
'StartDiscoveryJob',
'StartTaskExecution',
'StopDiscoveryJob',
'UpdateAgent',
'UpdateDiscoveryJob',
'UpdateLocationAzureBlob',
'UpdateLocationEfs',
'UpdateLocationFsxLustre',
'UpdateLocationFsxOntap',
'UpdateLocationFsxOpenZfs',
'UpdateLocationFsxWindows',
'UpdateLocationHdfs',
'UpdateLocationNfs',
'UpdateLocationObjectStorage',
'UpdateLocationS3',
'UpdateLocationSmb',
'UpdateStorageSystem',
'UpdateTask',
'UpdateTaskExecution'
],
Read: [
'DescribeAgent',
'DescribeDiscoveryJob',
'DescribeLocationAzureBlob',
'DescribeLocationEfs',
'DescribeLocationFsxLustre',
'DescribeLocationFsxOntap',
'DescribeLocationFsxOpenZfs',
'DescribeLocationFsxWindows',
'DescribeLocationHdfs',
'DescribeLocationNfs',
'DescribeLocationObjectStorage',
'DescribeLocationS3',
'DescribeLocationSmb',
'DescribeStorageSystem',
'DescribeTask',
'DescribeTaskExecution',
'ListTagsForResource'
],
List: [
'DescribeStorageSystemResourceMetrics',
'DescribeStorageSystemResources',
'ListAgents',
'ListDiscoveryJobs',
'ListLocations',
'ListStorageSystems',
'ListTaskExecutions',
'ListTasks'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
/**
* Grants permission to create a storage system
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_AddStorageSystem.html
*/
toAddStorageSystem() {
return this.to('AddStorageSystem');
}
/**
* Grants permission to cancel execution of a sync task
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CancelTaskExecution.html
*/
toCancelTaskExecution() {
return this.to('CancelTaskExecution');
}
/**
* Grants permission to activate an agent that you have deployed on your host
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateAgent.html
*/
toCreateAgent() {
return this.to('CreateAgent');
}
/**
* Grants permission to create an endpoint for a Microsoft Azure Blob Storage container
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationAzureBlob.html
*/
toCreateLocationAzureBlob() {
return this.to('CreateLocationAzureBlob');
}
/**
* Grants permission to create an endpoint for an Amazon EFS file system
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationEfs.html
*/
toCreateLocationEfs() {
return this.to('CreateLocationEfs');
}
/**
* Grants permission to create an endpoint for an Amazon Fsx Lustre
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationFsxLustre.html
*/
toCreateLocationFsxLustre() {
return this.to('CreateLocationFsxLustre');
}
/**
* Grants permission to create an endpoint for Amazon FSx for ONTAP
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationFsxOntap.html
*/
toCreateLocationFsxOntap() {
return this.to('CreateLocationFsxOntap');
}
/**
* Grants permission to create an endpoint for Amazon FSx for OpenZFS
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationFsxOpenZfs.html
*/
toCreateLocationFsxOpenZfs() {
return this.to('CreateLocationFsxOpenZfs');
}
/**
* Grants permission to create an endpoint for an Amazon FSx Windows File Server file system
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationFsxWindows.html
*/
toCreateLocationFsxWindows() {
return this.to('CreateLocationFsxWindows');
}
/**
* Grants permission to create an endpoint for an Amazon Hdfs
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationHdfs.html
*/
toCreateLocationHdfs() {
return this.to('CreateLocationHdfs');
}
/**
* Grants permission to create an endpoint for a NFS file system
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationNfs.html
*/
toCreateLocationNfs() {
return this.to('CreateLocationNfs');
}
/**
* Grants permission to create an endpoint for a self-managed object storage bucket
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationObjectStorage.html
*/
toCreateLocationObjectStorage() {
return this.to('CreateLocationObjectStorage');
}
/**
* Grants permission to create an endpoint for an Amazon S3 bucket
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationS3.html
*/
toCreateLocationS3() {
return this.to('CreateLocationS3');
}
/**
* Grants permission to create an endpoint for an SMB file system
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateLocationSmb.html
*/
toCreateLocationSmb() {
return this.to('CreateLocationSmb');
}
/**
* Grants permission to create a sync task
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_CreateTask.html
*/
toCreateTask() {
return this.to('CreateTask');
}
/**
* Grants permission to delete an agent
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DeleteAgent.html
*/
toDeleteAgent() {
return this.to('DeleteAgent');
}
/**
* Grants permission to delete a location used by AWS DataSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DeleteLocation.html
*/
toDeleteLocation() {
return this.to('DeleteLocation');
}
/**
* Grants permission to delete a sync task
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DeleteTask.html
*/
toDeleteTask() {
return this.to('DeleteTask');
}
/**
* Grants permission to view metadata such as name, network interfaces, and the status (that is, whether the agent is running or not) about a sync agent
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeAgent.html
*/
toDescribeAgent() {
return this.to('DescribeAgent');
}
/**
* Grants permission to describe metadata about a discovery job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeDiscoveryJob.html
*/
toDescribeDiscoveryJob() {
return this.to('DescribeDiscoveryJob');
}
/**
* Grants permission to view metadata, such as the path information about an Azure Blob Storage sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationAzureBlob.html
*/
toDescribeLocationAzureBlob() {
return this.to('DescribeLocationAzureBlob');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon EFS sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationEfs.html
*/
toDescribeLocationEfs() {
return this.to('DescribeLocationEfs');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon FSx Lustre sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationFsxLustre.html
*/
toDescribeLocationFsxLustre() {
return this.to('DescribeLocationFsxLustre');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon FSx for ONTAP sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationFsxOntap.html
*/
toDescribeLocationFsxOntap() {
return this.to('DescribeLocationFsxOntap');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon FSx OpenZFS sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationFsxOpenZfs.html
*/
toDescribeLocationFsxOpenZfs() {
return this.to('DescribeLocationFsxOpenZfs');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon FSx Windows sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationFsxWindows.html
*/
toDescribeLocationFsxWindows() {
return this.to('DescribeLocationFsxWindows');
}
/**
* Grants permission to view metadata, such as the path information about an Amazon HDFS sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationHdfs.html
*/
toDescribeLocationHdfs() {
return this.to('DescribeLocationHdfs');
}
/**
* Grants permission to view metadata, such as the path information, about a NFS sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationNfs.html
*/
toDescribeLocationNfs() {
return this.to('DescribeLocationNfs');
}
/**
* Grants permission to view metadata about a self-managed object storage server location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationObjectStorage.html
*/
toDescribeLocationObjectStorage() {
return this.to('DescribeLocationObjectStorage');
}
/**
* Grants permission to view metadata, such as bucket name, about an Amazon S3 bucket sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationS3.html
*/
toDescribeLocationS3() {
return this.to('DescribeLocationS3');
}
/**
* Grants permission to view metadata, such as the path information, about an SMB sync location
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeLocationSmb.html
*/
toDescribeLocationSmb() {
return this.to('DescribeLocationSmb');
}
/**
* Grants permission to view metadata about a storage system
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeStorageSystem.html
*/
toDescribeStorageSystem() {
return this.to('DescribeStorageSystem');
}
/**
* Grants permission to describe resource metrics collected by a discovery job
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeStorageSystemResourceMetrics.html
*/
toDescribeStorageSystemResourceMetrics() {
return this.to('DescribeStorageSystemResourceMetrics');
}
/**
* Grants permission to describe resources identified by a discovery job
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeStorageSystemResources.html
*/
toDescribeStorageSystemResources() {
return this.to('DescribeStorageSystemResources');
}
/**
* Grants permission to view metadata about a sync task
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTask.html
*/
toDescribeTask() {
return this.to('DescribeTask');
}
/**
* Grants permission to view metadata about a sync task that is being executed
*
* Access Level: Read
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_DescribeTaskExecution.html
*/
toDescribeTaskExecution() {
return this.to('DescribeTaskExecution');
}
/**
* Grants permission to generate recommendations for a resource identified by a discovery job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_GenerateRecommendations.html
*/
toGenerateRecommendations() {
return this.to('GenerateRecommendations');
}
/**
* Grants permission to list agents owned by an AWS account in a region specified in the request
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListAgents.html
*/
toListAgents() {
return this.to('ListAgents');
}
/**
* Grants permission to list discovery jobs
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListDiscoveryJobs.html
*/
toListDiscoveryJobs() {
return this.to('ListDiscoveryJobs');
}
/**
* Grants permission to list source and destination sync locations
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListLocations.html
*/
toListLocations() {
return this.to('ListLocations');
}
/**
* Grants permission to list storage systems
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListStorageSystems.html
*/
toListStorageSystems() {
return this.to('ListStorageSystems');
}
/**
* Grants permission to list tags that have been added to the specified resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list executed sync tasks
*
* Access Level: List
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListTaskExecutions.html
*/
toListTaskExecutions() {
return this.to('ListTaskExecutions');
}
/**
* Grants permission to list of all the sync tasks
*
* Access Level: List
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_ListTasks.html
*/
toListTasks() {
return this.to('ListTasks');
}
/**
* Grants permission to delete a storage system
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_RemoveStorageSystem.html
*/
toRemoveStorageSystem() {
return this.to('RemoveStorageSystem');
}
/**
* Grants permission to start a discovery job for a storage system
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_StartDiscoveryJob.html
*/
toStartDiscoveryJob() {
return this.to('StartDiscoveryJob');
}
/**
* Grants permission to start a specific invocation of a sync task
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_StartTaskExecution.html
*/
toStartTaskExecution() {
return this.to('StartTaskExecution');
}
/**
* Grants permission to stop a discovery job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_StopDiscoveryJob.html
*/
toStopDiscoveryJob() {
return this.to('StopDiscoveryJob');
}
/**
* Grants permission to apply a key-value pair to an AWS resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to remove one or more tags from the specified resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update the name of an agent
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateAgent.html
*/
toUpdateAgent() {
return this.to('UpdateAgent');
}
/**
* Grants permission to update a discovery job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateDiscoveryJob.html
*/
toUpdateDiscoveryJob() {
return this.to('UpdateDiscoveryJob');
}
/**
* Grants permission to update an Azure Blob Storage sync location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationAzureBlob.html
*/
toUpdateLocationAzureBlob() {
return this.to('UpdateLocationAzureBlob');
}
/**
* Grants permission to update an EFS sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationEfs.html
*/
toUpdateLocationEfs() {
return this.to('UpdateLocationEfs');
}
/**
* Grants permission to update an FSx Lustre sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationFsxLustre.html
*/
toUpdateLocationFsxLustre() {
return this.to('UpdateLocationFsxLustre');
}
/**
* Grants permission to update an FSx ONTAP sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationFsxOntap.html
*/
toUpdateLocationFsxOntap() {
return this.to('UpdateLocationFsxOntap');
}
/**
* Grants permission to update an FSx OpenZFS sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationFsxOpenZfs.html
*/
toUpdateLocationFsxOpenZfs() {
return this.to('UpdateLocationFsxOpenZfs');
}
/**
* Grants permission to update an FSx Windows sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationFsxWindows.html
*/
toUpdateLocationFsxWindows() {
return this.to('UpdateLocationFsxWindows');
}
/**
* Grants permission to update an HDFS sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationHdfs.html
*/
toUpdateLocationHdfs() {
return this.to('UpdateLocationHdfs');
}
/**
* Grants permission to update an NFS sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationNfs.html
*/
toUpdateLocationNfs() {
return this.to('UpdateLocationNfs');
}
/**
* Grants permission to update a self-managed object storage server location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationObjectStorage.html
*/
toUpdateLocationObjectStorage() {
return this.to('UpdateLocationObjectStorage');
}
/**
* Grants permission to update an S3 sync Location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationS3.html
*/
toUpdateLocationS3() {
return this.to('UpdateLocationS3');
}
/**
* Grants permission to update a SMB sync location
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateLocationSmb.html
*/
toUpdateLocationSmb() {
return this.to('UpdateLocationSmb');
}
/**
* Grants permission to update a storage system
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateStorageSystem.html
*/
toUpdateStorageSystem() {
return this.to('UpdateStorageSystem');
}
/**
* Grants permission to update metadata associated with a sync task
*
* Access Level: Write
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTask.html
*/
toUpdateTask() {
return this.to('UpdateTask');
}
/**
* Grants permission to update execution of a sync task
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/datasync/latest/userguide/API_UpdateTaskExecution.html
*/
toUpdateTaskExecution() {
return this.to('UpdateTaskExecution');
}
/**
* Adds a resource of type agent to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/working-with-agents.html
*
* @param agentId - Identifier for the agentId.
* @param accountId - 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()
*/
onAgent(agentId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:agent/${agentId}`);
}
/**
* Adds a resource of type location to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/working-with-locations.html
*
* @param locationId - Identifier for the locationId.
* @param accountId - 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()
*/
onLocation(locationId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:location/${locationId}`);
}
/**
* Adds a resource of type task to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/working-with-tasks.html
*
* @param taskId - Identifier for the taskId.
* @param accountId - 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()
*/
onTask(taskId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:task/${taskId}`);
}
/**
* Adds a resource of type taskexecution to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/working-with-task-executions.html
*
* @param taskId - Identifier for the taskId.
* @param executionId - Identifier for the executionId.
* @param accountId - 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()
*/
onTaskexecution(taskId, executionId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:task/${taskId}/execution/${executionId}`);
}
/**
* Adds a resource of type storagesystem to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/discovery-configure-storage.html
*
* @param storageSystemId - Identifier for the storageSystemId.
* @param accountId - 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()
*/
onStoragesystem(storageSystemId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:system/${storageSystemId}`);
}
/**
* Adds a resource of type discoveryjob to the statement
*
* https://docs.aws.amazon.com/datasync/latest/userguide/discovery-job-create.html
*
* @param storageSystemId - Identifier for the storageSystemId.
* @param discoveryJobId - Identifier for the discoveryJobId.
* @param accountId - 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()
*/
onDiscoveryjob(storageSystemId, discoveryJobId, accountId, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:datasync:${region ?? this.defaultRegion}:${accountId ?? this.defaultAccount}:system/${storageSystemId}/job/${discoveryJobId}`);
}
/**
* Filters access by the 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:
* - .toAddStorageSystem()
* - .toCreateAgent()
* - .toCreateLocationAzureBlob()
* - .toCreateLocationEfs()
* - .toCreateLocationFsxLustre()
* - .toCreateLocationFsxOntap()
* - .toCreateLocationFsxOpenZfs()
* - .toCreateLocationFsxWindows()
* - .toCreateLocationHdfs()
* - .toCreateLocationNfs()
* - .toCreateLocationObjectStorage()
* - .toCreateLocationS3()
* - .toCreateLocationSmb()
* - .toCreateTask()
* - .toStartTaskExecution()
* - .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 associated with the resource
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to actions:
* - .toAddStorageSystem()
* - .toCancelTaskExecution()
* - .toDescribeTaskExecution()
* - .toListTaskExecutions()
* - .toStartTaskExecution()
* - .toUpdateTaskExecution()
*
* Applies to resource types:
* - agent
* - location
* - task
* - taskexecution
* - storagesystem
* - discoveryjob
*
* @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 tag keys in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toAddStorageSystem()
* - .toCreateAgent()
* - .toCreateLocationAzureBlob()
* - .toCreateLocationEfs()
* - .toCreateLocationFsxLustre()
* - .toCreateLocationFsxOntap()
* - .toCreateLocationFsxOpenZfs()
* - .toCreateLocationFsxWindows()
* - .toCreateLocationHdfs()
* - .toCreateLocationNfs()
* - .toCreateLocationObjectStorage()
* - .toCreateLocationS3()
* - .toCreateLocationSmb()
* - .toCreateTask()
* - .toStartTaskExecution()
* - .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.Datasync = Datasync;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkYXRhc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFFekQ7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFlO0lBRzNDOzs7O09BSUc7SUFDSCxZQUFZLEdBQVk7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBUk4sa0JBQWEsR0FBRyxVQUFVLENBQUM7UUFrekJ4QixvQkFBZSxHQUFvQjtZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsa0JBQWtCO2dCQUNsQixxQkFBcUI7Z0JBQ3JCLGFBQWE7Z0JBQ2IseUJBQXlCO2dCQUN6QixtQkFBbUI7Z0JBQ25CLHlCQUF5QjtnQkFDekIsd0JBQXdCO2dCQUN4QiwwQkFBMEI7Z0JBQzFCLDBCQUEwQjtnQkFDMUIsb0JBQW9CO2dCQUNwQixtQkFBbUI7Z0JBQ25CLDZCQUE2QjtnQkFDN0Isa0JBQWtCO2dCQUNsQixtQkFBbUI7Z0JBQ25CLFlBQVk7Z0JBQ1osYUFBYTtnQkFDYixnQkFBZ0I7Z0JBQ2hCLFlBQVk7Z0JBQ1oseUJBQXlCO2dCQUN6QixxQkFBcUI7Z0JBQ3JCLG1CQUFtQjtnQkFDbkIsb0JBQW9CO2dCQUNwQixrQkFBa0I7Z0JBQ2xCLGFBQWE7Z0JBQ2Isb0JBQW9CO2dCQUNwQix5QkFBeUI7Z0JBQ3pCLG1CQUFtQjtnQkFDbkIseUJBQXlCO2dCQUN6Qix3QkFBd0I7Z0JBQ3hCLDBCQUEwQjtnQkFDMUIsMEJBQTBCO2dCQUMxQixvQkFBb0I7Z0JBQ3BCLG1CQUFtQjtnQkFDbkIsNkJBQTZCO2dCQUM3QixrQkFBa0I7Z0JBQ2xCLG1CQUFtQjtnQkFDbkIscUJBQXFCO2dCQUNyQixZQUFZO2dCQUNaLHFCQUFxQjthQUN0QjtZQUNELElBQUksRUFBRTtnQkFDSixlQUFlO2dCQUNmLHNCQUFzQjtnQkFDdEIsMkJBQTJCO2dCQUMzQixxQkFBcUI7Z0JBQ3JCLDJCQUEyQjtnQkFDM0IsMEJB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QWUsV0FBWSxlQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3SyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNJLGNBQWMsQ0FBQyxlQUF1QixFQUFFLGNBQXNCLEVBQUUsU0FBa0IsRUFBRSxNQUFlLEVBQUUsU0FBa0I7UUFDNUgsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQVEsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBaUIsYUFBYyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWMsSUFBSyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWUsV0FBWSxlQUFnQixRQUFTLGNBQWUsRUFBRSxDQUFDLENBQUM7SUFDck0sQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNJLGVBQWUsQ0FBQyxNQUFjLEVBQUUsS0FBd0IsRUFBRSxRQUE0QjtRQUMzRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQW1CLE1BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSSxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsS0FBd0IsRUFBRSxRQUE0QjtRQUM1RixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW9CLE1BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNJLFlBQVksQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUFsa0NELDRCQWtrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbZGF0YXN5bmNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c2RhdGFzeW5jLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgRGF0YXN5bmMgZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdkYXRhc3luYyc7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbZGF0YXN5bmNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c2RhdGFzeW5jLmh0bWwpLlxuICAgKlxuICAgKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNpZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNpZCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgc3RvcmFnZSBzeXN0ZW1cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RhdGFzeW5jL2xhdGVzdC91c2VyZ3VpZGUvQVBJX0FkZFN0b3JhZ2VTeXN0ZW0uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQWRkU3RvcmFnZVN5c3RlbSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQWRkU3RvcmFnZVN5c3RlbScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhbmNlbCBleGVjdXRpb24gb2YgYSBzeW5jIHRhc2tcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1Jlc291cmNlVGFnKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RhdGFzeW5jL2xhdGVzdC91c2VyZ3VpZGUvQVBJX0NhbmNlbFRhc2tFeGVjdXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FuY2VsVGFza0V4ZWN1dGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FuY2VsVGFza0V4ZWN1dGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGFjdGl2YXRlIGFuIGFnZW50IHRoYXQgeW91IGhhdmUgZGVwbG95ZWQgb24geW91ciBob3N0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZBd3NSZXF1ZXN0VGFnKClcbiAgICogLSAuaWZBd3NUYWdLZXlzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2RhdGFzeW5jL2xhdGVzdC91c2VyZ3VpZGUvQVBJX0NyZWF0ZUFnZW50Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NyZWF0ZUFnZW50KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDcmVhdGVBZ2VudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBlbmRwb2ludCBmb3IgYSBNaWNyb3NvZnQgQXp1cmUgQmxvYiBTdG9yYWdlIGNvbnRhaW5lclxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmQXdzUmVxdWVzdFRhZygpXG4gICAqIC0gLmlmQXdzVGFnS2V5cygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9kYXRhc3luYy9sYXRlc3QvdXNlcmd1aWRlL0FQSV9DcmVhdGVMb2NhdGlvbkF6dXJlQmxvYi5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9DcmVhdGVMb2N