iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
955 lines • 87.4 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Geo = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [geo](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Geo extends shared_1.PolicyStatement {
/**
* Statement provider for service [geo](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonlocation.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 = 'geo';
this.accessLevelList = {
Write: [
'AssociateTrackerConsumer',
'BatchDeleteDevicePositionHistory',
'BatchDeleteGeofence',
'BatchEvaluateGeofences',
'BatchPutGeofence',
'BatchUpdateDevicePosition',
'CreateGeofenceCollection',
'CreateKey',
'CreateMap',
'CreatePlaceIndex',
'CreateRouteCalculator',
'CreateTracker',
'DeleteGeofenceCollection',
'DeleteKey',
'DeleteMap',
'DeletePlaceIndex',
'DeleteRouteCalculator',
'DeleteTracker',
'DisassociateTrackerConsumer',
'PutGeofence',
'UpdateGeofenceCollection',
'UpdateKey',
'UpdateMap',
'UpdatePlaceIndex',
'UpdateRouteCalculator',
'UpdateTracker'
],
Read: [
'BatchGetDevicePosition',
'CalculateRoute',
'CalculateRouteMatrix',
'DescribeGeofenceCollection',
'DescribeKey',
'DescribeMap',
'DescribePlaceIndex',
'DescribeRouteCalculator',
'DescribeTracker',
'ForecastGeofenceEvents',
'GetDevicePosition',
'GetDevicePositionHistory',
'GetGeofence',
'GetMapGlyphs',
'GetMapSprites',
'GetMapStyleDescriptor',
'GetMapTile',
'GetPlace',
'ListDevicePositions',
'ListGeofences',
'ListTagsForResource',
'ListTrackerConsumers',
'SearchPlaceIndexForPosition',
'SearchPlaceIndexForSuggestions',
'SearchPlaceIndexForText',
'VerifyDevicePosition'
],
List: [
'ListGeofenceCollections',
'ListKeys',
'ListMaps',
'ListPlaceIndexes',
'ListRouteCalculators',
'ListTrackers'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
/**
* Grants permission to create an association between a geofence-collection and a tracker resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_AssociateTrackerConsumer.html
*/
toAssociateTrackerConsumer() {
return this.to('AssociateTrackerConsumer');
}
/**
* Grants permission to delete a batch of device position histories from a tracker resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchDeleteDevicePositionHistory.html
*/
toBatchDeleteDevicePositionHistory() {
return this.to('BatchDeleteDevicePositionHistory');
}
/**
* Grants permission to delete a batch of geofences from a geofence collection
*
* Access Level: Write
*
* Possible conditions:
* - .ifGeofenceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchDeleteGeofence.html
*/
toBatchDeleteGeofence() {
return this.to('BatchDeleteGeofence');
}
/**
* Grants permission to evaluate device positions against the position of geofences in a given geofence collection
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchEvaluateGeofences.html
*/
toBatchEvaluateGeofences() {
return this.to('BatchEvaluateGeofences');
}
/**
* Grants permission to send a batch request to retrieve device positions
*
* Access Level: Read
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchGetDevicePosition.html
*/
toBatchGetDevicePosition() {
return this.to('BatchGetDevicePosition');
}
/**
* Grants permission to send a batch request for adding geofences into a given geofence collection
*
* Access Level: Write
*
* Possible conditions:
* - .ifGeofenceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchPutGeofence.html
*/
toBatchPutGeofence() {
return this.to('BatchPutGeofence');
}
/**
* Grants permission to upload a position update for one or more devices to a tracker resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_BatchUpdateDevicePosition.html
*/
toBatchUpdateDevicePosition() {
return this.to('BatchUpdateDevicePosition');
}
/**
* Grants permission to calculate routes using a given route calculator resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CalculateRoute.html
*/
toCalculateRoute() {
return this.to('CalculateRoute');
}
/**
* Grants permission to calculate a route matrix using a given route calculator resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CalculateRouteMatrix.html
*/
toCalculateRouteMatrix() {
return this.to('CalculateRouteMatrix');
}
/**
* Grants permission to create a geofence-collection
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreateGeofenceCollection.html
*/
toCreateGeofenceCollection() {
return this.to('CreateGeofenceCollection');
}
/**
* Grants permission to create an API key resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreateKey.html
*/
toCreateKey() {
return this.to('CreateKey');
}
/**
* Grants permission to create a map resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreateMap.html
*/
toCreateMap() {
return this.to('CreateMap');
}
/**
* Grants permission to create a place index resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreatePlaceIndex.html
*/
toCreatePlaceIndex() {
return this.to('CreatePlaceIndex');
}
/**
* Grants permission to create a route calculator resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreateRouteCalculator.html
*/
toCreateRouteCalculator() {
return this.to('CreateRouteCalculator');
}
/**
* Grants permission to create a tracker resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_CreateTracker.html
*/
toCreateTracker() {
return this.to('CreateTracker');
}
/**
* Grants permission to delete a geofence-collection
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteGeofenceCollection.html
*/
toDeleteGeofenceCollection() {
return this.to('DeleteGeofenceCollection');
}
/**
* Grants permission to delete an API key resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteKey.html
*/
toDeleteKey() {
return this.to('DeleteKey');
}
/**
* Grants permission to delete a map resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteMap.html
*/
toDeleteMap() {
return this.to('DeleteMap');
}
/**
* Grants permission to delete a place index resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeletePlaceIndex.html
*/
toDeletePlaceIndex() {
return this.to('DeletePlaceIndex');
}
/**
* Grants permission to delete a route calculator resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteRouteCalculator.html
*/
toDeleteRouteCalculator() {
return this.to('DeleteRouteCalculator');
}
/**
* Grants permission to delete a tracker resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DeleteTracker.html
*/
toDeleteTracker() {
return this.to('DeleteTracker');
}
/**
* Grants permission to retrieve geofence collection details
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeGeofenceCollection.html
*/
toDescribeGeofenceCollection() {
return this.to('DescribeGeofenceCollection');
}
/**
* Grants permission to retrieve API key resource details and secret
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeKey.html
*/
toDescribeKey() {
return this.to('DescribeKey');
}
/**
* Grants permission to retrieve map resource details
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeMap.html
*/
toDescribeMap() {
return this.to('DescribeMap');
}
/**
* Grants permission to retrieve place-index resource details
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribePlaceIndex.html
*/
toDescribePlaceIndex() {
return this.to('DescribePlaceIndex');
}
/**
* Grants permission to retrieve route calculator resource details
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeRouteCalculator.html
*/
toDescribeRouteCalculator() {
return this.to('DescribeRouteCalculator');
}
/**
* Grants permission to retrieve a tracker resource details
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DescribeTracker.html
*/
toDescribeTracker() {
return this.to('DescribeTracker');
}
/**
* Grants permission to remove the association between a tracker resource and a geofence-collection
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_DisassociateTrackerConsumer.html
*/
toDisassociateTrackerConsumer() {
return this.to('DisassociateTrackerConsumer');
}
/**
* Grants permission to forecast events for geofences stored in a given geofence collection
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ForecastGeofenceEvents.html
*/
toForecastGeofenceEvents() {
return this.to('ForecastGeofenceEvents');
}
/**
* Grants permission to retrieve the latest device position
*
* Access Level: Read
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetDevicePosition.html
*/
toGetDevicePosition() {
return this.to('GetDevicePosition');
}
/**
* Grants permission to retrieve the device position history
*
* Access Level: Read
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetDevicePositionHistory.html
*/
toGetDevicePositionHistory() {
return this.to('GetDevicePositionHistory');
}
/**
* Grants permission to retrieve the geofence details from a geofence-collection
*
* Access Level: Read
*
* Possible conditions:
* - .ifGeofenceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetGeofence.html
*/
toGetGeofence() {
return this.to('GetGeofence');
}
/**
* Grants permission to retrieve the glyph file for a map resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapGlyphs.html
*/
toGetMapGlyphs() {
return this.to('GetMapGlyphs');
}
/**
* Grants permission to retrieve the sprite file for a map resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapSprites.html
*/
toGetMapSprites() {
return this.to('GetMapSprites');
}
/**
* Grants permission to retrieve the map style descriptor from a map resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapStyleDescriptor.html
*/
toGetMapStyleDescriptor() {
return this.to('GetMapStyleDescriptor');
}
/**
* Grants permission to retrieve the map tile from the map resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetMapTile.html
*/
toGetMapTile() {
return this.to('GetMapTile');
}
/**
* Grants permission to find a place by its unique ID
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_GetPlace.html
*/
toGetPlace() {
return this.to('GetPlace');
}
/**
* Grants permission to retrieve a list of devices and their latest positions from the given tracker resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListDevicePositions.html
*/
toListDevicePositions() {
return this.to('ListDevicePositions');
}
/**
* Grants permission to lists geofence-collections
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListGeofenceCollections.html
*/
toListGeofenceCollections() {
return this.to('ListGeofenceCollections');
}
/**
* Grants permission to list geofences stored in a given geofence collection
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListGeofences.html
*/
toListGeofences() {
return this.to('ListGeofences');
}
/**
* Grants permission to list API key resources
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListKeys.html
*/
toListKeys() {
return this.to('ListKeys');
}
/**
* Grants permission to list map resources
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListMaps.html
*/
toListMaps() {
return this.to('ListMaps');
}
/**
* Grants permission to return a list of place index resources
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListPlaceIndexes.html
*/
toListPlaceIndexes() {
return this.to('ListPlaceIndexes');
}
/**
* Grants permission to return a list of route calculator resources
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListRouteCalculators.html
*/
toListRouteCalculators() {
return this.to('ListRouteCalculators');
}
/**
* Grants permission to list the tags (metadata) which you have assigned to the resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to retrieve a list of geofence collections currently associated to the given tracker resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListTrackerConsumers.html
*/
toListTrackerConsumers() {
return this.to('ListTrackerConsumers');
}
/**
* Grants permission to return a list of tracker resources
*
* Access Level: List
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_ListTrackers.html
*/
toListTrackers() {
return this.to('ListTrackers');
}
/**
* Grants permission to add a new geofence or update an existing geofence to a given geofence-collection
*
* Access Level: Write
*
* Possible conditions:
* - .ifGeofenceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_PutGeofence.html
*/
toPutGeofence() {
return this.to('PutGeofence');
}
/**
* Grants permission to reverse geocodes a given coordinate
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForPosition.html
*/
toSearchPlaceIndexForPosition() {
return this.to('SearchPlaceIndexForPosition');
}
/**
* Grants permission to generate suggestions for addresses and points of interest based on partial or misspelled free-form text
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForSuggestions.html
*/
toSearchPlaceIndexForSuggestions() {
return this.to('SearchPlaceIndexForSuggestions');
}
/**
* Grants permission to geocode free-form text, such as an address, name, city or region
*
* Access Level: Read
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_SearchPlaceIndexForText.html
*/
toSearchPlaceIndexForText() {
return this.to('SearchPlaceIndexForText');
}
/**
* Grants permission to adds to or modifies the tags of the given resource. Tags are metadata which can be used to manage a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to remove the given tags (metadata) from the resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update a geofence collection
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateGeofenceCollection.html
*/
toUpdateGeofenceCollection() {
return this.to('UpdateGeofenceCollection');
}
/**
* Grants permission to update an API key resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateKey.html
*/
toUpdateKey() {
return this.to('UpdateKey');
}
/**
* Grants permission to update a map resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateMap.html
*/
toUpdateMap() {
return this.to('UpdateMap');
}
/**
* Grants permission to update a place index resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdatePlaceIndex.html
*/
toUpdatePlaceIndex() {
return this.to('UpdatePlaceIndex');
}
/**
* Grants permission to update a route calculator resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateRouteCalculator.html
*/
toUpdateRouteCalculator() {
return this.to('UpdateRouteCalculator');
}
/**
* Grants permission to update a tracker resource
*
* Access Level: Write
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_UpdateTracker.html
*/
toUpdateTracker() {
return this.to('UpdateTracker');
}
/**
* Grants permission to verify a device position
*
* Access Level: Read
*
* Possible conditions:
* - .ifDeviceIds()
*
* https://docs.aws.amazon.com/location/latest/APIReference/API_VerifyDevicePosition.html
*/
toVerifyDevicePosition() {
return this.to('VerifyDevicePosition');
}
/**
* Adds a resource of type api-key to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/using-apikeys.html
*
* @param keyName - Identifier for the keyName.
* @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()
*/
onApiKey(keyName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:api-key/${keyName}`);
}
/**
* Adds a resource of type geofence-collection to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/geofence-tracker-concepts.html
*
* @param geofenceCollectionName - Identifier for the geofenceCollectionName.
* @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()
* - .ifGeofenceIds()
*/
onGeofenceCollection(geofenceCollectionName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:geofence-collection/${geofenceCollectionName}`);
}
/**
* Adds a resource of type map to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/map-concepts.html
*
* @param mapName - Identifier for the mapName.
* @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()
*/
onMap(mapName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:map/${mapName}`);
}
/**
* Adds a resource of type place-index to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/places-concepts.html
*
* @param indexName - Identifier for the indexName.
* @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()
*/
onPlaceIndex(indexName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:place-index/${indexName}`);
}
/**
* Adds a resource of type route-calculator to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/route-concepts.html
*
* @param calculatorName - Identifier for the calculatorName.
* @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()
*/
onRouteCalculator(calculatorName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:route-calculator/${calculatorName}`);
}
/**
* Adds a resource of type tracker to the statement
*
* https://docs.aws.amazon.com/location/latest/developerguide/geofence-tracker-concepts.html
*
* @param trackerName - Identifier for the trackerName.
* @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()
* - .ifDeviceIds()
*/
onTracker(trackerName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:geo:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:tracker/${trackerName}`);
}
/**
* Filters access by a tag's key and value in a request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
*
* Applies to actions:
* - .toCreateGeofenceCollection()
* - .toCreateKey()
* - .toCreateMap()
* - .toCreatePlaceIndex()
* - .toCreateRouteCalculator()
* - .toCreateTracker()
* - .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 presence of tag key-value pairs in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to resource types:
* - api-key
* - geofence-collection
* - map
* - place-index
* - route-calculator
* - tracker
*
* @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 a request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toCreateGeofenceCollection()
* - .toCreateKey()
* - .toCreateMap()
* - .toCreatePlaceIndex()
* - .toCreateRouteCalculator()
* - .toCreateTracker()
* - .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 presence of device ids in the request
*
* https://docs.aws.amazon.com/location/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys
*
* Applies to actions:
* - .toBatchDeleteDevicePositionHistory()
* - .toBatchGetDevicePosition()
* - .toBatchUpdateDevicePosition()
* - .toGetDevicePosition()
* - .toGetDevicePositionHistory()
* - .toVerifyDevicePosition()
*
* Applies to resource types:
* - tracker
*
* @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`
*/
ifDeviceIds(value, operator) {
return this.if(`DeviceIds`, value, operator ?? 'StringLike');
}
/**
* Filters access by the presence of geofence ids in the request
*
* https://docs.aws.amazon.com/location/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-conditionkeys
*
* Applies to actions:
* - .toBatchDeleteGeofence()
* - .toBatchPutGeofence()
* - .toGetGeofence()
* - .toPutGeofence()
*
* Applies to resource types:
* - geofence-collection
*
* @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`
*/
ifGeofenceIds(value, operator) {
return this.if(`GeofenceIds`, value, operator ?? 'StringLike');
}
}
exports.Geo = Geo;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBeUQ7QUFFekQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLHdCQUFlO0lBR3RDOzs7O09BSUc7SUFDSCxZQUFZLEdBQVk7UUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBUk4sa0JBQWEsR0FBRyxLQUFLLENBQUM7UUE0dEJuQixvQkFBZSxHQUFvQjtZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsMEJBQTBCO2dCQUMxQixrQ0FBa0M7Z0JBQ2xDLHFCQUFxQjtnQkFDckIsd0JBQXdCO2dCQUN4QixrQkFBa0I7Z0JBQ2xCLDJCQUEyQjtnQkFDM0IsMEJBQTBCO2dCQUMxQixXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsa0JBQWtCO2dCQUNsQix1QkFBdUI7Z0JBQ3ZCLGVBQWU7Z0JBQ2YsMEJBQTBCO2dCQUMxQixXQUFXO2dCQUNYLFdBQVc7Z0JBQ1gsa0JBQWtCO2dCQUNsQix1QkFBdUI7Z0JBQ3ZCLGVBQWU7Z0JBQ2YsNkJBQTZCO2dCQUM3QixhQUFhO2dCQUNiLDBCQUEwQjtnQkFDMUIsV0FBVztnQkFDWCxXQUFXO2dCQUNYLGtCQUFrQjtnQkFDbEIsdUJBQXVCO2dCQUN2QixlQUFlO2FBQ2hCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLHdCQUF3QjtnQkFDeEIsZ0JBQWdCO2dCQUNoQixzQkFBc0I7Z0JBQ3RCLDRCQUE0QjtnQkFDNUIsYUFBYTtnQkFDYixhQUFhO2dCQUNiLG9CQUFvQjtnQkFDcEIseUJBQXlCO2dCQUN6QixpQkFBaUI7Z0JBQ2pCLHdCQUF3QjtnQkFDeEIsbUJBQW1CO2dCQUNuQiwwQkFBMEI7Z0JBQzFCLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxlQUFlO2dCQUNmLHVCQUF1QjtnQkFDdkIsWUFBWTtnQkFDWixVQUFVO2dCQUNWLHFCQUFxQjtnQkFDckIsZUFBZTtnQkFDZixxQkFBcUI7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LGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0ksV0FBVyxDQUFDLEtBQXdCLEVBQUUsUUFBNEI7UUFDdkUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLFlBQVksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNJLGFBQWEsQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUF4L0JELGtCQXcvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbZ2VvXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25sb2NhdGlvbi5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEdlbyBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2dlbyc7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbZ2VvXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25sb2NhdGlvbi5odG1sKS5cbiAgICpcbiAgICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzaWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihzaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgZ2VvZmVuY2UtY29sbGVjdGlvbiBhbmQgYSB0cmFja2VyIHJlc291cmNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Fzc29jaWF0ZVRyYWNrZXJDb25zdW1lci5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9Bc3NvY2lhdGVUcmFja2VyQ29uc3VtZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZVRyYWNrZXJDb25zdW1lcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIGJhdGNoIG9mIGRldmljZSBwb3NpdGlvbiBoaXN0b3JpZXMgZnJvbSBhIHRyYWNrZXIgcmVzb3VyY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkRldmljZUlkcygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaERlbGV0ZURldmljZVBvc2l0aW9uSGlzdG9yeS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaERlbGV0ZURldmljZVBvc2l0aW9uSGlzdG9yeSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hEZWxldGVEZXZpY2VQb3NpdGlvbkhpc3RvcnknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkZWxldGUgYSBiYXRjaCBvZiBnZW9mZW5jZXMgZnJvbSBhIGdlb2ZlbmNlIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkdlb2ZlbmNlSWRzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoRGVsZXRlR2VvZmVuY2UuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hEZWxldGVHZW9mZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hEZWxldGVHZW9mZW5jZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGV2YWx1YXRlIGRldmljZSBwb3NpdGlvbnMgYWdhaW5zdCB0aGUgcG9zaXRpb24gb2YgZ2VvZmVuY2VzIGluIGEgZ2l2ZW4gZ2VvZmVuY2UgY29sbGVjdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaEV2YWx1YXRlR2VvZmVuY2VzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoRXZhbHVhdGVHZW9mZW5jZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoRXZhbHVhdGVHZW9mZW5jZXMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzZW5kIGEgYmF0Y2ggcmVxdWVzdCB0byByZXRyaWV2ZSBkZXZpY2UgcG9zaXRpb25zXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkRldmljZUlkcygpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sb2NhdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9CYXRjaEdldERldmljZVBvc2l0aW9uLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0JhdGNoR2V0RGV2aWNlUG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0JhdGNoR2V0RGV2aWNlUG9zaXRpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzZW5kIGEgYmF0Y2ggcmVxdWVzdCBmb3IgYWRkaW5nIGdlb2ZlbmNlcyBpbnRvIGEgZ2l2ZW4gZ2VvZmVuY2UgY29sbGVjdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmR2VvZmVuY2VJZHMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbG9jYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQmF0Y2hQdXRHZW9mZW5jZS5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaFB1dEdlb2ZlbmNlKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdCYXRjaFB1dEdlb2ZlbmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gdXBsb2FkIGEgcG9zaXRpb24gdXBkYXRlIGZvciBvbmUgb3IgbW9yZSBkZXZpY2VzIHRvIGEgdHJhY2tlciByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmRGV2aWNlSWRzKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0JhdGNoVXBkYXRlRGV2aWNlUG9zaXRpb24uaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hVcGRhdGVEZXZpY2VQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hVcGRhdGVEZXZpY2VQb3NpdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhbGN1bGF0ZSByb3V0ZXMgdXNpbmcgYSBnaXZlbiByb3V0ZSBjYWxjdWxhdG9yIHJlc291cmNlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbG9jYXRpb24vbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQ2FsY3VsYXRlUm91dGUuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQ2FsY3VsYXRlUm91dGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NhbGN1bGF0ZVJvdXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY2FsY3VsYXRlIGEgcm91dGUgbWF0cml4IHVzaW5nIGEgZ2l2ZW4gcm91dGUgY2FsY3VsYXRvciByZXNvdXJjZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xvY2F0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0NhbGN1bGF0ZVJvdXRlTWF0cml4Lmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0NhbGN1bGF0ZVJvdXRlTWF0cml4KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdDYWxjdWxhdGVSb3V0ZU1hdHJpeCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIGdlb2ZlbmNlLWNvbGxlY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZkF3c1JlcXVlc3RUYWcoKVxuICAgKiAtIC5pZkF3c1RhZ0tleXMoKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5