cdk-iam-floyd
Version:
AWS IAM policy statement generator with fluent interface for AWS CDK
1,221 lines • 108 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Transfer = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [transfer](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Transfer extends shared_1.PolicyStatement {
/**
* Grants permission to add an access associated with a server
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateAccess.html
*/
toCreateAccess() {
return this.to('CreateAccess');
}
/**
* Grants permission to add an agreement associated with a server
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateAgreement.html
*/
toCreateAgreement() {
return this.to('CreateAgreement');
}
/**
* Grants permission to create a connector
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifRequestConnectorProtocol()
* - .ifRequestSecurityPolicyName()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateConnector.html
*/
toCreateConnector() {
return this.to('CreateConnector');
}
/**
* Grants permission to create a profile
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateProfile.html
*/
toCreateProfile() {
return this.to('CreateProfile');
}
/**
* Grants permission to create a server
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifRequestServerEndpointType()
* - .ifRequestServerDomain()
* - .ifRequestServerProtocols()
* - .ifRequestSecurityPolicyName()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateServer.html
*/
toCreateServer() {
return this.to('CreateServer');
}
/**
* Grants permission to add a user associated with a server
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateUser.html
*/
toCreateUser() {
return this.to('CreateUser');
}
/**
* Grants permission to create a webapp
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateWebApp.html
*/
toCreateWebApp() {
return this.to('CreateWebApp');
}
/**
* Grants permission to create a workflow
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_CreateWorkflow.html
*/
toCreateWorkflow() {
return this.to('CreateWorkflow');
}
/**
* Grants permission to delete access
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteAccess.html
*/
toDeleteAccess() {
return this.to('DeleteAccess');
}
/**
* Grants permission to delete agreement
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteAgreement.html
*/
toDeleteAgreement() {
return this.to('DeleteAgreement');
}
/**
* Grants permission to delete certificate
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteCertificate.html
*/
toDeleteCertificate() {
return this.to('DeleteCertificate');
}
/**
* Grants permission to delete connector
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteConnector.html
*/
toDeleteConnector() {
return this.to('DeleteConnector');
}
/**
* Grants permission to delete a host key associated with a server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteHostKey.html
*/
toDeleteHostKey() {
return this.to('DeleteHostKey');
}
/**
* Grants permission to delete profile
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteProfile.html
*/
toDeleteProfile() {
return this.to('DeleteProfile');
}
/**
* Grants permission to delete a server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteServer.html
*/
toDeleteServer() {
return this.to('DeleteServer');
}
/**
* Grants permission to delete an SSH public key from a user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteSshPublicKey.html
*/
toDeleteSshPublicKey() {
return this.to('DeleteSshPublicKey');
}
/**
* Grants permission to delete a user associated with a server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteUser.html
*/
toDeleteUser() {
return this.to('DeleteUser');
}
/**
* Grants permission to delete webapp
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteWebApp.html
*/
toDeleteWebApp() {
return this.to('DeleteWebApp');
}
/**
* Grants permission to delete webapp customization
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteWebAppCustomization.html
*/
toDeleteWebAppCustomization() {
return this.to('DeleteWebAppCustomization');
}
/**
* Grants permission to delete a workflow
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DeleteWorkflow.html
*/
toDeleteWorkflow() {
return this.to('DeleteWorkflow');
}
/**
* Grants permission to describe an access assigned to a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeAccess.html
*/
toDescribeAccess() {
return this.to('DescribeAccess');
}
/**
* Grants permission to describe an agreement assigned to a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeAgreement.html
*/
toDescribeAgreement() {
return this.to('DescribeAgreement');
}
/**
* Grants permission to describe a certificate
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeCertificate.html
*/
toDescribeCertificate() {
return this.to('DescribeCertificate');
}
/**
* Grants permission to describe a connector
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeConnector.html
*/
toDescribeConnector() {
return this.to('DescribeConnector');
}
/**
* Grants permission to describe an execution associated with a workflow
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeExecution.html
*/
toDescribeExecution() {
return this.to('DescribeExecution');
}
/**
* Grants permission to describe a host key associated with a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeHostKey.html
*/
toDescribeHostKey() {
return this.to('DescribeHostKey');
}
/**
* Grants permission to describe a profile
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeProfile.html
*/
toDescribeProfile() {
return this.to('DescribeProfile');
}
/**
* Grants permission to describe a security policy
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeSecurityPolicy.html
*/
toDescribeSecurityPolicy() {
return this.to('DescribeSecurityPolicy');
}
/**
* Grants permission to describe a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeServer.html
*/
toDescribeServer() {
return this.to('DescribeServer');
}
/**
* Grants permission to describe a user associated with a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeUser.html
*/
toDescribeUser() {
return this.to('DescribeUser');
}
/**
* Grants permission to describe a webapp
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeWebApp.html
*/
toDescribeWebApp() {
return this.to('DescribeWebApp');
}
/**
* Grants permission to describe a webapp customization
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeWebAppCustomization.html
*/
toDescribeWebAppCustomization() {
return this.to('DescribeWebAppCustomization');
}
/**
* Grants permission to describe a workflow
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_DescribeWorkflow.html
*/
toDescribeWorkflow() {
return this.to('DescribeWorkflow');
}
/**
* Grants permission to add a certificate
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ImportCertificate.html
*/
toImportCertificate() {
return this.to('ImportCertificate');
}
/**
* Grants permission to add a host key to a server
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ImportHostKey.html
*/
toImportHostKey() {
return this.to('ImportHostKey');
}
/**
* Grants permission to add an SSH public key to a user
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ImportSshPublicKey.html
*/
toImportSshPublicKey() {
return this.to('ImportSshPublicKey');
}
/**
* Grants permission to list accesses
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListAccesses.html
*/
toListAccesses() {
return this.to('ListAccesses');
}
/**
* Grants permission to list agreements
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListAgreements.html
*/
toListAgreements() {
return this.to('ListAgreements');
}
/**
* Grants permission to list certificates
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListCertificates.html
*/
toListCertificates() {
return this.to('ListCertificates');
}
/**
* Grants permission to list connectors
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListConnectors.html
*/
toListConnectors() {
return this.to('ListConnectors');
}
/**
* Grants permission to list executions associated with a workflow
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListExecutions.html
*/
toListExecutions() {
return this.to('ListExecutions');
}
/**
* Grants permission to list file transfer statuses for connectors
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListFileTransferResults.html
*/
toListFileTransferResults() {
return this.to('ListFileTransferResults');
}
/**
* Grants permission to list host keys associated with a server
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListHostKeys.html
*/
toListHostKeys() {
return this.to('ListHostKeys');
}
/**
* Grants permission to list profiles
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListProfiles.html
*/
toListProfiles() {
return this.to('ListProfiles');
}
/**
* Grants permission to list security policies
*
* Access Level: List
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListSecurityPolicies.html
*/
toListSecurityPolicies() {
return this.to('ListSecurityPolicies');
}
/**
* Grants permission to list servers
*
* Access Level: List
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListServers.html
*/
toListServers() {
return this.to('ListServers');
}
/**
* Grants permission to list tags for an AWS Transfer Family resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list users associated with a server
*
* Access Level: List
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListUsers.html
*/
toListUsers() {
return this.to('ListUsers');
}
/**
* Grants permission to list webapps
*
* Access Level: List
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListWebApps.html
*/
toListWebApps() {
return this.to('ListWebApps');
}
/**
* Grants permission to list workflows
*
* Access Level: List
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_ListWorkflows.html
*/
toListWorkflows() {
return this.to('ListWorkflows');
}
/**
* Grants permission to send a callback for asynchronous custom steps
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_SendWorkflowStepState.html
*/
toSendWorkflowStepState() {
return this.to('SendWorkflowStepState');
}
/**
* Grants permission to initiate a list operation on a remote server using a connector
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StartDirectoryListing.html
*/
toStartDirectoryListing() {
return this.to('StartDirectoryListing');
}
/**
* Grants permission to initiate a connector file transfer
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StartFileTransfer.html
*/
toStartFileTransfer() {
return this.to('StartFileTransfer');
}
/**
* Grants permission to initiate a connector delete operation on remote server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StartRemoteDelete.html
*/
toStartRemoteDelete() {
return this.to('StartRemoteDelete');
}
/**
* Grants permission to initiate a connector move operation on remote server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StartRemoteMove.html
*/
toStartRemoteMove() {
return this.to('StartRemoteMove');
}
/**
* Grants permission to start a server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StartServer.html
*/
toStartServer() {
return this.to('StartServer');
}
/**
* Grants permission to stop a server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_StopServer.html
*/
toStopServer() {
return this.to('StopServer');
}
/**
* Grants permission to tag an AWS Transfer Family resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to test a connector's connection to remote server
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_TestConnection.html
*/
toTestConnection() {
return this.to('TestConnection');
}
/**
* Grants permission to test a server's custom identity provider
*
* Access Level: Read
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_TestIdentityProvider.html
*/
toTestIdentityProvider() {
return this.to('TestIdentityProvider');
}
/**
* Grants permission to untag an AWS Transfer Family resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update access
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateAccess.html
*/
toUpdateAccess() {
return this.to('UpdateAccess');
}
/**
* Grants permission to update an agreement
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateAgreement.html
*/
toUpdateAgreement() {
return this.to('UpdateAgreement');
}
/**
* Grants permission to update a certificate
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateCertificate.html
*/
toUpdateCertificate() {
return this.to('UpdateCertificate');
}
/**
* Grants permission to update a connector
*
* Access Level: Write
*
* Possible conditions:
* - .ifRequestSecurityPolicyName()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateConnector.html
*/
toUpdateConnector() {
return this.to('UpdateConnector');
}
/**
* Grants permission to update a host key
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateHostKey.html
*/
toUpdateHostKey() {
return this.to('UpdateHostKey');
}
/**
* Grants permission to update a profile
*
* Access Level: Write
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateProfile.html
*/
toUpdateProfile() {
return this.to('UpdateProfile');
}
/**
* Grants permission to update the configuration of a server
*
* Access Level: Write
*
* Possible conditions:
* - .ifRequestServerEndpointType()
* - .ifRequestServerProtocols()
* - .ifRequestSecurityPolicyName()
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateServer.html
*/
toUpdateServer() {
return this.to('UpdateServer');
}
/**
* Grants permission to update the configuration of a user
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateUser.html
*/
toUpdateUser() {
return this.to('UpdateUser');
}
/**
* Grants permission to update the configuration of a webapp
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateWebApp.html
*/
toUpdateWebApp() {
return this.to('UpdateWebApp');
}
/**
* Grants permission to update the configuration of a webapp cutomization
*
* Access Level: Write
*
* Dependent actions:
* - iam:PassRole
*
* https://docs.aws.amazon.com/transfer/latest/userguide/API_UpdateWebAppCustomization.html
*/
toUpdateWebAppCustomization() {
return this.to('UpdateWebAppCustomization');
}
/**
* Adds a resource of type user to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/create-user.html
*
* @param serverId - Identifier for the serverId.
* @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()
*/
onUser(serverId, userName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:user/${serverId}/${userName}`);
}
/**
* Adds a resource of type server to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/configuring-servers.html
*
* @param serverId - Identifier for the serverId.
* @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()
*/
onServer(serverId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:server/${serverId}`);
}
/**
* Adds a resource of type workflow to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-workflows.html
*
* @param workflowId - Identifier for the workflowId.
* @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()
*/
onWorkflow(workflowId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:workflow/${workflowId}`);
}
/**
* Adds a resource of type certificate to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/create-b2b-server.html
*
* @param certificateId - Identifier for the certificateId.
* @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()
*/
onCertificate(certificateId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:certificate/${certificateId}`);
}
/**
* Adds a resource of type connector to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/create-b2b-server.html
*
* @param connectorId - Identifier for the connectorId.
* @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()
*/
onConnector(connectorId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:connector/${connectorId}`);
}
/**
* Adds a resource of type profile to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/create-b2b-server.html
*
* @param profileId - Identifier for the profileId.
* @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()
*/
onProfile(profileId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:profile/${profileId}`);
}
/**
* Adds a resource of type agreement to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/create-b2b-server.html
*
* @param serverId - Identifier for the serverId.
* @param agreementId - Identifier for the agreementId.
* @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()
*/
onAgreement(serverId, agreementId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:agreement/${serverId}/${agreementId}`);
}
/**
* Adds a resource of type host-key to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/edit-server-config.html
*
* @param serverId - Identifier for the serverId.
* @param hostKeyId - Identifier for the hostKeyId.
* @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()
*/
onHostKey(serverId, hostKeyId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:host-key/${serverId}/${hostKeyId}`);
}
/**
* Adds a resource of type webapp to the statement
*
* https://docs.aws.amazon.com/transfer/latest/userguide/web-app.html
*
* @param webAppId - Identifier for the webAppId.
* @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()
*/
onWebapp(webAppId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:transfer:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:webapp/${webAppId}`);
}
/**
* Filters access by the tags that are passed in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
*
* Applies to actions:
* - .toCreateAgreement()
* - .toCreateConnector()
* - .toCreateProfile()
* - .toCreateServer()
* - .toCreateUser()
* - .toCreateWebApp()
* - .toCreateWorkflow()
* - .toImportCertificate()
* - .toImportHostKey()
* - .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 tags associated with the resource
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to actions:
* - .toCreateAgreement()
* - .toCreateConnector()
* - .toCreateProfile()
* - .toCreateServer()
* - .toCreateUser()
* - .toCreateWebApp()
* - .toCreateWorkflow()
* - .toImportCertificate()
* - .toImportHostKey()
*
* Applies to resource types:
* - user
* - server
* - workflow
* - certificate
* - connector
* - profile
* - agreement
* - host-key
* - webapp
*
* @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 that are passed in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toCreateAgreement()
* - .toCreateConnector()
* - .toCreateProfile()
* - .toCreateServer()
* - .toCreateUser()
* - .toCreateWebApp()
* - .toCreateWorkflow()
* - .toImportCertificate()
* - .toImportHostKey()
* - .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');
}
/**
* Filters access by the connector protocol that is passed in the request
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-condition-keys.html
*
* Applies to actions:
* - .toCreateConnector()
*
* @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`
*/
ifRequestConnectorProtocol(value, operator) {
return this.if(`RequestConnectorProtocol`, value, operator ?? 'StringLike');
}
/**
* Filters access by the security policy name that is passed in the request
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-condition-keys.html
*
* Applies to actions:
* - .toCreateConnector()
* - .toCreateServer()
* - .toUpdateConnector()
* - .toUpdateServer()
*
* @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`
*/
ifRequestSecurityPolicyName(value, operator) {
return this.if(`RequestSecurityPolicyName`, value, operator ?? 'StringLike');
}
/**
* Filters access by the storage domain that is passed in the request
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-condition-keys.html
*
* Applies to actions:
* - .toCreateServer()
*
* @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`
*/
ifRequestServerDomain(value, operator) {
return this.if(`RequestServerDomain`, value, operator ?? 'StringLike');
}
/**
* Filters access by the endpoint type that is passed in the request
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-condition-keys.html
*
* Applies to actions:
* - .toCreateServer()
* - .toUpdateServer()
*
* @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`
*/
ifRequestServerEndpointType(value, operator) {
return this.if(`RequestServerEndpointType`, value, operator ?? 'StringLike');
}
/**
* Filters access by the server protocols that are passed in the request
*
* https://docs.aws.amazon.com/transfer/latest/userguide/transfer-condition-keys.html
*
* Applies to actions:
* - .toCreateServer()
* - .toUpdateServer()
*
* @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`
*/
ifRequestServerProtocols(value, operator) {
return this.if(`RequestServerProtocols`, value, operator ?? 'StringLike');
}
/**
* Statement provider for service [transfer](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awstransferfamily.html).
*
*/
constructor(props) {
super(props);
this.servicePrefix = 'transfer';
this.accessLevelList = {
Write: [
'CreateAccess',
'CreateAgreement',
'CreateConnector',
'CreateProfile',
'CreateServer',
'CreateUser',
'CreateWebApp',
'CreateWorkflow',
'DeleteAccess',
'DeleteAgreement',
'DeleteCertificate',
'DeleteConnector',
'DeleteHostKey',
'DeleteProfile',
'DeleteServer',
'DeleteSshPublicKey',
'DeleteUser',
'DeleteWebApp',
'DeleteWebAppCustomization',
'DeleteWorkflow',
'ImportCertificate',
'ImportHostKey',
'ImportSshPublicKey',
'SendWorkflowStepState',
'StartDirectoryListing',
'StartFileTransfer',
'StartRemoteDelete',
'StartRemoteMove',
'StartServer',
'StopServer',
'TestConnection',
'UpdateAccess',
'UpdateAgreement',
'UpdateCertificate',
'UpdateConnector',
'UpdateHostKey',
'UpdateProfile',
'UpdateServer',
'UpdateUser',
'UpdateWebApp',
'UpdateWebAppCustomization'
],
Read: [
'DescribeAccess',
'DescribeAgreement',
'DescribeCertificate',
'DescribeConnector',
'DescribeExecution',
'DescribeHostKey',
'DescribeProfile',
'DescribeSecurityPolicy',
'DescribeServer',
'DescribeUser',
'DescribeWebApp',
'DescribeWebAppCustomization',
'DescribeWorkflow',
'ListAccesses',
'ListAgreements',
'ListCertificates',
'ListConnectors',
'ListExecutions',
'ListFileTransferResults',
'ListHostKeys',
'ListProfiles',
'ListTagsForResource',
'TestIdentityProvider'
],
List: [
'ListSecurityPolicies',
'ListServers',
'ListUsers',
'ListWebApps',
'ListWorkflows'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
}
exports.Transfer = Transfer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJmYW1pbHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0cmFuc2ZlcmZhbWlseS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFHekQ7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLHdCQUFlO0lBRzNDOzs7Ozs7Ozs7T0FTRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVE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