iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
1,000 lines • 93.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Robomaker = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [robomaker](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrobomaker.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Robomaker extends shared_1.PolicyStatement {
/**
* Statement provider for service [robomaker](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsrobomaker.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 = 'robomaker';
this.accessLevelList = {
Write: [
'BatchDeleteWorlds',
'CancelDeploymentJob',
'CancelSimulationJob',
'CancelSimulationJobBatch',
'CancelWorldExportJob',
'CancelWorldGenerationJob',
'CreateDeploymentJob',
'CreateFleet',
'CreateRobot',
'CreateRobotApplication',
'CreateRobotApplicationVersion',
'CreateSimulationApplication',
'CreateSimulationApplicationVersion',
'CreateSimulationJob',
'CreateWorldExportJob',
'CreateWorldGenerationJob',
'CreateWorldTemplate',
'DeleteFleet',
'DeleteRobot',
'DeleteRobotApplication',
'DeleteSimulationApplication',
'DeleteWorldTemplate',
'DeregisterRobot',
'RegisterRobot',
'RestartSimulationJob',
'StartSimulationJobBatch',
'SyncDeploymentJob',
'UpdateRobotApplication',
'UpdateRobotDeployment',
'UpdateSimulationApplication',
'UpdateWorldTemplate'
],
Read: [
'BatchDescribeSimulationJob',
'DescribeDeploymentJob',
'DescribeFleet',
'DescribeRobot',
'DescribeRobotApplication',
'DescribeSimulationApplication',
'DescribeSimulationJob',
'DescribeSimulationJobBatch',
'DescribeWorld',
'DescribeWorldExportJob',
'DescribeWorldGenerationJob',
'DescribeWorldTemplate',
'GetWorldTemplateBody'
],
List: [
'ListDeploymentJobs',
'ListFleets',
'ListRobotApplications',
'ListRobots',
'ListSimulationApplications',
'ListSimulationJobBatches',
'ListSimulationJobs',
'ListSupportedAvailabilityZones',
'ListTagsForResource',
'ListWorldExportJobs',
'ListWorldGenerationJobs',
'ListWorldTemplates',
'ListWorlds'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
/**
* Delete one or more worlds in a batch operation
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_BatchDeleteWorlds.html
*/
toBatchDeleteWorlds() {
return this.to('BatchDeleteWorlds');
}
/**
* Describe multiple simulation jobs
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_BatchDescribeSimulationJob.html
*/
toBatchDescribeSimulationJob() {
return this.to('BatchDescribeSimulationJob');
}
/**
* Cancel a deployment job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CancelDeploymentJob.html
*/
toCancelDeploymentJob() {
return this.to('CancelDeploymentJob');
}
/**
* Cancel a simulation job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CancelSimulationJob.html
*/
toCancelSimulationJob() {
return this.to('CancelSimulationJob');
}
/**
* Cancel a simulation job batch
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CancelSimulationJobBatch.html
*/
toCancelSimulationJobBatch() {
return this.to('CancelSimulationJobBatch');
}
/**
* Cancel a world export job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CancelWorldExportJob.html
*/
toCancelWorldExportJob() {
return this.to('CancelWorldExportJob');
}
/**
* Cancel a world generation job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CancelWorldGenerationJob.html
*/
toCancelWorldGenerationJob() {
return this.to('CancelWorldGenerationJob');
}
/**
* Create a deployment job
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateDeploymentJob.html
*/
toCreateDeploymentJob() {
return this.to('CreateDeploymentJob');
}
/**
* Create a deployment fleet that represents a logical group of robots running the same robot application
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateFleet.html
*/
toCreateFleet() {
return this.to('CreateFleet');
}
/**
* Create a robot that can be registered to a fleet
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateRobot.html
*/
toCreateRobot() {
return this.to('CreateRobot');
}
/**
* Create a robot application
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateRobotApplication.html
*/
toCreateRobotApplication() {
return this.to('CreateRobotApplication');
}
/**
* Create a snapshot of a robot application
*
* Access Level: Write
*
* Dependent actions:
* - s3:GetObject
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateRobotApplicationVersion.html
*/
toCreateRobotApplicationVersion() {
return this.to('CreateRobotApplicationVersion');
}
/**
* Create a simulation application
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateSimulationApplication.html
*/
toCreateSimulationApplication() {
return this.to('CreateSimulationApplication');
}
/**
* Create a snapshot of a simulation application
*
* Access Level: Write
*
* Dependent actions:
* - s3:GetObject
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateSimulationApplicationVersion.html
*/
toCreateSimulationApplicationVersion() {
return this.to('CreateSimulationApplicationVersion');
}
/**
* Create a simulation job
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateSimulationJob.html
*/
toCreateSimulationJob() {
return this.to('CreateSimulationJob');
}
/**
* Create a world export job
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateWorldExportJob.html
*/
toCreateWorldExportJob() {
return this.to('CreateWorldExportJob');
}
/**
* Create a world generation job
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateWorldGenerationJob.html
*/
toCreateWorldGenerationJob() {
return this.to('CreateWorldGenerationJob');
}
/**
* Create a world template
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_CreateWorldTemplate.html
*/
toCreateWorldTemplate() {
return this.to('CreateWorldTemplate');
}
/**
* Delete a deployment fleet
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeleteFleet.html
*/
toDeleteFleet() {
return this.to('DeleteFleet');
}
/**
* Delete a robot
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeleteRobot.html
*/
toDeleteRobot() {
return this.to('DeleteRobot');
}
/**
* Delete a robot application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeleteRobotApplication.html
*/
toDeleteRobotApplication() {
return this.to('DeleteRobotApplication');
}
/**
* Delete a simulation application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeleteSimulationApplication.html
*/
toDeleteSimulationApplication() {
return this.to('DeleteSimulationApplication');
}
/**
* Delete a world template
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeleteWorldTemplate.html
*/
toDeleteWorldTemplate() {
return this.to('DeleteWorldTemplate');
}
/**
* Deregister a robot from a fleet
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DeregisterRobot.html
*/
toDeregisterRobot() {
return this.to('DeregisterRobot');
}
/**
* Describe a deployment job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeDeploymentJob.html
*/
toDescribeDeploymentJob() {
return this.to('DescribeDeploymentJob');
}
/**
* Describe a deployment fleet
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeFleet.html
*/
toDescribeFleet() {
return this.to('DescribeFleet');
}
/**
* Describe a robot
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeRobot.html
*/
toDescribeRobot() {
return this.to('DescribeRobot');
}
/**
* Describe a robot application
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeRobotApplication.html
*/
toDescribeRobotApplication() {
return this.to('DescribeRobotApplication');
}
/**
* Describe a simulation application
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeSimulationApplication.html
*/
toDescribeSimulationApplication() {
return this.to('DescribeSimulationApplication');
}
/**
* Describe a simulation job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeSimulationJob.html
*/
toDescribeSimulationJob() {
return this.to('DescribeSimulationJob');
}
/**
* Describe a simulation job batch
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeSimulationJobBatch.html
*/
toDescribeSimulationJobBatch() {
return this.to('DescribeSimulationJobBatch');
}
/**
* Describe a world
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeWorld.html
*/
toDescribeWorld() {
return this.to('DescribeWorld');
}
/**
* Describe a world export job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeWorldExportJob.html
*/
toDescribeWorldExportJob() {
return this.to('DescribeWorldExportJob');
}
/**
* Describe a world generation job
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeWorldGenerationJob.html
*/
toDescribeWorldGenerationJob() {
return this.to('DescribeWorldGenerationJob');
}
/**
* Describe a world template
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_DescribeWorldTemplate.html
*/
toDescribeWorldTemplate() {
return this.to('DescribeWorldTemplate');
}
/**
* Get the body of a world template
*
* Access Level: Read
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_GetWorldTemplateBody.html
*/
toGetWorldTemplateBody() {
return this.to('GetWorldTemplateBody');
}
/**
* List deployment jobs
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListDeploymentJobs.html
*/
toListDeploymentJobs() {
return this.to('ListDeploymentJobs');
}
/**
* List fleets
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListFleets.html
*/
toListFleets() {
return this.to('ListFleets');
}
/**
* List robot applications
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListRobotApplications.html
*/
toListRobotApplications() {
return this.to('ListRobotApplications');
}
/**
* List robots
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListRobots.html
*/
toListRobots() {
return this.to('ListRobots');
}
/**
* List simulation applications
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListSimulationApplications.html
*/
toListSimulationApplications() {
return this.to('ListSimulationApplications');
}
/**
* List simulation job batches
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListSimulationJobBatches.html
*/
toListSimulationJobBatches() {
return this.to('ListSimulationJobBatches');
}
/**
* List simulation jobs
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListSimulationJobs.html
*/
toListSimulationJobs() {
return this.to('ListSimulationJobs');
}
/**
* Lists supported availability zones
*
* Access Level: List
*/
toListSupportedAvailabilityZones() {
return this.to('ListSupportedAvailabilityZones');
}
/**
* List tags for a RoboMaker resource
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* List world export jobs
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListWorldExportJobs.html
*/
toListWorldExportJobs() {
return this.to('ListWorldExportJobs');
}
/**
* List world generation jobs
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListWorldGenerationJobs.html
*/
toListWorldGenerationJobs() {
return this.to('ListWorldGenerationJobs');
}
/**
* List world templates
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListWorldTemplates.html
*/
toListWorldTemplates() {
return this.to('ListWorldTemplates');
}
/**
* List worlds
*
* Access Level: List
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_ListWorlds.html
*/
toListWorlds() {
return this.to('ListWorlds');
}
/**
* Register a robot to a fleet
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_RegisterRobot.html
*/
toRegisterRobot() {
return this.to('RegisterRobot');
}
/**
* Restart a running simulation job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_RestartSimulationJob.html
*/
toRestartSimulationJob() {
return this.to('RestartSimulationJob');
}
/**
* Create a simulation job batch
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_StartSimulationJobBatch.html
*/
toStartSimulationJobBatch() {
return this.to('StartSimulationJobBatch');
}
/**
* Ensures the most recently deployed robot application is deployed to all robots in the fleet
*
* Access Level: Write
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_SyncDeploymentJob.html
*/
toSyncDeploymentJob() {
return this.to('SyncDeploymentJob');
}
/**
* Add tags to a RoboMaker resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
* - .ifAwsRequestTag()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Remove tags from a RoboMaker resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Update a robot application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_UpdateRobotApplication.html
*/
toUpdateRobotApplication() {
return this.to('UpdateRobotApplication');
}
/**
* Report the deployment status for an individual robot
*
* Access Level: Write
*/
toUpdateRobotDeployment() {
return this.to('UpdateRobotDeployment');
}
/**
* Update a simulation application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_UpdateSimulationApplication.html
*/
toUpdateSimulationApplication() {
return this.to('UpdateSimulationApplication');
}
/**
* Update a world template
*
* Access Level: Write
*
* https://docs.aws.amazon.com/robomaker/latest/dg/API_UpdateWorldTemplate.html
*/
toUpdateWorldTemplate() {
return this.to('UpdateWorldTemplate');
}
/**
* Adds a resource of type robotApplication to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/managing-robot-applications.html
*
* @param applicationName - Identifier for the applicationName.
* @param createdOnEpoch - Identifier for the createdOnEpoch.
* @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()
*/
onRobotApplication(applicationName, createdOnEpoch, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:robot-application/${applicationName}/${createdOnEpoch}`);
}
/**
* Adds a resource of type simulationApplication to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/managing-simulation-applications.html
*
* @param applicationName - Identifier for the applicationName.
* @param createdOnEpoch - Identifier for the createdOnEpoch.
* @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()
*/
onSimulationApplication(applicationName, createdOnEpoch, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:simulation-application/${applicationName}/${createdOnEpoch}`);
}
/**
* Adds a resource of type simulationJob to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/simulation.html
*
* @param simulationJobId - Identifier for the simulationJobId.
* @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()
*/
onSimulationJob(simulationJobId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:simulation-job/${simulationJobId}`);
}
/**
* Adds a resource of type simulationJobBatch to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/simulation-job-batch.html
*
* @param simulationJobBatchId - Identifier for the simulationJobBatchId.
* @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()
*/
onSimulationJobBatch(simulationJobBatchId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:simulation-job-batch/${simulationJobBatchId}`);
}
/**
* Adds a resource of type deploymentJob to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/deployment.html
*
* @param deploymentJobId - Identifier for the deploymentJobId.
* @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()
*/
onDeploymentJob(deploymentJobId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:deployment-job/${deploymentJobId}`);
}
/**
* Adds a resource of type robot to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/fleets.html
*
* @param robotName - Identifier for the robotName.
* @param createdOnEpoch - Identifier for the createdOnEpoch.
* @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()
*/
onRobot(robotName, createdOnEpoch, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:robot/${robotName}/${createdOnEpoch}`);
}
/**
* Adds a resource of type deploymentFleet to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/managing-simulation-applications.html
*
* @param fleetName - Identifier for the fleetName.
* @param createdOnEpoch - Identifier for the createdOnEpoch.
* @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()
*/
onDeploymentFleet(fleetName, createdOnEpoch, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:deployment-fleet/${fleetName}/${createdOnEpoch}`);
}
/**
* Adds a resource of type worldGenerationJob to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/worlds-managing-generation-jobs.html
*
* @param worldGenerationJobId - Identifier for the worldGenerationJobId.
* @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()
*/
onWorldGenerationJob(worldGenerationJobId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:world-generation-job/${worldGenerationJobId}`);
}
/**
* Adds a resource of type worldExportJob to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/worlds-managing-export-jobs.html
*
* @param worldExportJobId - Identifier for the worldExportJobId.
* @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()
*/
onWorldExportJob(worldExportJobId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:world-export-job/${worldExportJobId}`);
}
/**
* Adds a resource of type worldTemplate to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/worlds-managing-simworld-templates.html
*
* @param worldTemplateJobId - Identifier for the worldTemplateJobId.
* @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()
*/
onWorldTemplate(worldTemplateJobId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:world-template/${worldTemplateJobId}`);
}
/**
* Adds a resource of type world to the statement
*
* https://docs.aws.amazon.com/robomaker/latest/dg/worlds-managing-generated-worlds.html
*
* @param worldId - Identifier for the worldId.
* @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()
*/
onWorld(worldId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:robomaker:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:world/${worldId}`);
}
/**
* Filters access based on the tags that are passed in the request
*
* https://docs.aws.amazon.com/robomaker/latest/dg/tagging-resources-iam-policies.html
*
* Applies to actions:
* - .toCreateDeploymentJob()
* - .toCreateFleet()
* - .toCreateRobot()
* - .toCreateRobotApplication()
* - .toCreateSimulationApplication()
* - .toCreateSimulationJob()
* - .toCreateWorldExportJob()
* - .toCreateWorldGenerationJob()
* - .toCreateWorldTemplate()
* - .toStartSimulationJobBatch()
* - .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 based on the tags associated with the resource
*
* https://docs.aws.amazon.com/robomaker/latest/dg/tagging-resources-iam-policies.html
*
* Applies to resource types:
* - robotApplication
* - simulationApplication
* - simulationJob
* - simulationJobBatch
* - deploymentJob
* - robot
* - deploymentFleet
* - worldGenerationJob
* - worldExportJob
* - worldTemplate
* - world
*
* @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 based on the tag keys that are passed in the request
*
* https://docs.aws.amazon.com/robomaker/latest/dg/tagging-resources-iam-policies.html
*
* Applies to actions:
* - .toCreateDeploymentJob()
* - .toCreateFleet()
* - .toCreateRobot()
* - .toCreateRobotApplication()
* - .toCreateSimulationApplication()
* - .toCreateSimulationJob()
* - .toCreateWorldExportJob()
* - .toCreateWorldGenerationJob()
* - .toCreateWorldTemplate()
* - .toStartSimulationJobBatch()
* - .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.Robomaker = Robomaker;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9ib21ha2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicm9ib21ha2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUV6RDs7OztHQUlHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsd0JBQWU7SUFHNUM7Ozs7T0FJRztJQUNILFlBQVksR0FBWTtRQUN0QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFSTixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQW90QnpCLG9CQUFlLEdBQW9CO1lBQzNDLEtBQUssRUFBRTtnQkFDTCxtQkFBbUI7Z0JBQ25CLHFCQUFxQjtnQkFDckIscUJBQXFCO2dCQUNyQiwwQkFBMEI7Z0JBQzFCLHNCQUFzQjtnQkFDdEIsMEJBQTBCO2dCQUMxQixxQkFBcUI7Z0JBQ3JCLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYix3QkFBd0I7Z0JBQ3hCLCtCQUErQjtnQkFDL0IsNkJBQTZCO2dCQUM3QixvQ0FBb0M7Z0JBQ3BDLHFCQUFxQjtnQkFDckIsc0JBQXNCO2dCQUN0QiwwQkFBMEI7Z0JBQzFCLHFCQUFxQjtnQkFDckIsYUFBYTtnQkFDYixhQUFhO2dCQUNiLHdCQUF3QjtnQkFDeEIsNkJBQTZCO2dCQUM3QixxQkFBcUI7Z0JBQ3JCLGlCQUFpQjtnQkFDakIsZUFBZTtnQkFDZixzQkFBc0I7Z0JBQ3RCLHlCQUF5QjtnQkFDekIsbUJBQW1CO2dCQUNuQix3QkFBd0I7Z0JBQ3hCLHVCQUF1QjtnQkFDdkIsNkJBQTZCO2dCQUM3QixxQkFBcUI7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osNEJBQTRCO2dCQUM1Qix1QkFBdUI7Z0JBQ3ZCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZiwwQkFBMEI7Z0JBQzFCLCtCQUErQjtnQkFDL0IsdUJBQXVCO2dCQUN2Qiw0QkFBNEI7Z0JBQzVCLGVBQWU7Z0JBQ2Ysd0JBQXdCO2dCQUN4Qiw0QkFBNEI7Z0JBQzVCLHVCQUF1QjtnQkFDdkIsc0JBQXNCO2FBQ3ZCO1lBQ0Qs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QUUsUUFBNEI7UUFDM0YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFtQixNQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0ksZ0JBQWdCLENBQUMsTUFBYyxFQUFFLEtBQXdCLEVBQUUsUUFBNEI7UUFDNUYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFvQixNQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0ksWUFBWSxDQUFDLEtBQXdCLEVBQUUsUUFBNEI7UUFDeEUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQXZpQ0QsOEJBdWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjY2Vzc0xldmVsTGlzdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hY2Nlc3MtbGV2ZWwnO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBPcGVyYXRvciB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFtyb2JvbWFrZXJdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2F3c3JvYm9tYWtlci5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIFJvYm9tYWtlciBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ3JvYm9tYWtlcic7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbcm9ib21ha2VyXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3Nyb2JvbWFrZXIuaHRtbCkuXG4gICAqXG4gICAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2lkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgb25lIG9yIG1vcmUgd29ybGRzIGluIGEgYmF0Y2ggb3BlcmF0aW9uXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JvYm9tYWtlci9sYXRlc3QvZGcvQVBJX0JhdGNoRGVsZXRlV29ybGRzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoRGVsZXRlV29ybGRzKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaERlbGV0ZVdvcmxkcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlIG11bHRpcGxlIHNpbXVsYXRpb24gam9ic1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JvYm9tYWtlci9sYXRlc3QvZGcvQVBJX0JhdGNoRGVzY3JpYmVTaW11bGF0aW9uSm9iLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoRGVzY3JpYmVTaW11bGF0aW9uSm9iKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaERlc2NyaWJlU2ltdWxhdGlvbkpvYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIGRlcGxveW1lbnQgam9iXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JvYm9tYWtlci9sYXRlc3QvZGcvQVBJX0NhbmNlbERlcGxveW1lbnRKb2IuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FuY2VsRGVwbG95bWVudEpvYigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FuY2VsRGVwbG95bWVudEpvYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIHNpbXVsYXRpb24gam9iXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JvYm9tYWtlci9sYXRlc3QvZGcvQVBJX0NhbmNlbFNpbXVsYXRpb25Kb2IuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FuY2VsU2ltdWxhdGlvbkpvYigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQ2FuY2VsU2ltdWxhdGlvbkpvYicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhIHNpbXVsYXRpb24gam9iIGJhdGNoXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGV