iam-floyd
Version:
AWS IAM policy statement generator with fluent interface
980 lines • 92.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Kendra = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [kendra](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkendra.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Kendra extends shared_1.PolicyStatement {
/**
* Statement provider for service [kendra](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonkendra.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 = 'kendra';
this.accessLevelList = {
Write: [
'AssociateEntitiesToExperience',
'AssociatePersonasToEntities',
'BatchDeleteDocument',
'BatchDeleteFeaturedResultsSet',
'BatchPutDocument',
'ClearQuerySuggestions',
'CreateAccessControlConfiguration',
'CreateDataSource',
'CreateExperience',
'CreateFaq',
'CreateFeaturedResultsSet',
'CreateIndex',
'CreateQuerySuggestionsBlockList',
'CreateThesaurus',
'DeleteAccessControlConfiguration',
'DeleteDataSource',
'DeleteExperience',
'DeleteFaq',
'DeleteIndex',
'DeletePrincipalMapping',
'DeleteQuerySuggestionsBlockList',
'DeleteThesaurus',
'DisassociateEntitiesFromExperience',
'DisassociatePersonasFromEntities',
'PutPrincipalMapping',
'StartDataSourceSyncJob',
'StopDataSourceSyncJob',
'SubmitFeedback',
'UpdateAccessControlConfiguration',
'UpdateDataSource',
'UpdateExperience',
'UpdateFeaturedResultsSet',
'UpdateIndex',
'UpdateQuerySuggestionsBlockList',
'UpdateQuerySuggestionsConfig',
'UpdateThesaurus'
],
Read: [
'BatchGetDocumentStatus',
'DescribeAccessControlConfiguration',
'DescribeDataSource',
'DescribeExperience',
'DescribeFaq',
'DescribeFeaturedResultsSet',
'DescribeIndex',
'DescribePrincipalMapping',
'DescribeQuerySuggestionsBlockList',
'DescribeQuerySuggestionsConfig',
'DescribeThesaurus',
'GetQuerySuggestions',
'GetSnapshots',
'ListTagsForResource',
'Query',
'Retrieve'
],
List: [
'ListAccessControlConfigurations',
'ListDataSourceSyncJobs',
'ListDataSources',
'ListEntityPersonas',
'ListExperienceEntities',
'ListExperiences',
'ListFaqs',
'ListFeaturedResultsSets',
'ListGroupsOlderThanOrderingId',
'ListIndices',
'ListQuerySuggestionsBlockLists',
'ListThesauri'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
/**
* Grants permission to put principal mapping in index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_PutPrincipalMapping.html
*/
toAssociateEntitiesToExperience() {
return this.to('AssociateEntitiesToExperience');
}
/**
* Defines the specific permissions of users or groups in your AWS SSO identity source with access to your Amazon Kendra experience
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_AssociatePersonasToEntities.html
*/
toAssociatePersonasToEntities() {
return this.to('AssociatePersonasToEntities');
}
/**
* Grants permission to batch delete document
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_BatchDeleteDocument.html
*/
toBatchDeleteDocument() {
return this.to('BatchDeleteDocument');
}
/**
* Grants permission to delete a featured results set
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteFeaturedResults.html
*/
toBatchDeleteFeaturedResultsSet() {
return this.to('BatchDeleteFeaturedResultsSet');
}
/**
* Grants permission to do batch get document status
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_BatchGetDocumentStatus.html
*/
toBatchGetDocumentStatus() {
return this.to('BatchGetDocumentStatus');
}
/**
* Grants permission to batch put document
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_BatchPutDocument.html
*/
toBatchPutDocument() {
return this.to('BatchPutDocument');
}
/**
* Grants permission to clear out the suggestions for a given index, generated so far
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ClearQuerySuggestions.html
*/
toClearQuerySuggestions() {
return this.to('ClearQuerySuggestions');
}
/**
* Grants permission to create an access control configuration
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateAccessControlConfiguration.html
*/
toCreateAccessControlConfiguration() {
return this.to('CreateAccessControlConfiguration');
}
/**
* Grants permission to create a data source
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateDataSource.html
*/
toCreateDataSource() {
return this.to('CreateDataSource');
}
/**
* Creates an Amazon Kendra experience such as a search application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateExperience.html
*/
toCreateExperience() {
return this.to('CreateExperience');
}
/**
* Grants permission to create an Faq
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateFaq.html
*/
toCreateFaq() {
return this.to('CreateFaq');
}
/**
* Grants permission to create a featured results set
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateFeaturedResults.html
*/
toCreateFeaturedResultsSet() {
return this.to('CreateFeaturedResultsSet');
}
/**
* Grants permission to create an Index
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateIndex.html
*/
toCreateIndex() {
return this.to('CreateIndex');
}
/**
* Grants permission to create a QuerySuggestions BlockList
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateQuerySuggestionsBlockList.html
*/
toCreateQuerySuggestionsBlockList() {
return this.to('CreateQuerySuggestionsBlockList');
}
/**
* Grants permission to create a Thesaurus
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateThesaurus.html
*/
toCreateThesaurus() {
return this.to('CreateThesaurus');
}
/**
* Grants permission to delete an access control configuration
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteAccessControlConfiguration.html
*/
toDeleteAccessControlConfiguration() {
return this.to('DeleteAccessControlConfiguration');
}
/**
* Grants permission to delete a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteDataSource.html
*/
toDeleteDataSource() {
return this.to('DeleteDataSource');
}
/**
* Deletes your Amazon Kendra experience such as a search application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteExperience.html
*/
toDeleteExperience() {
return this.to('DeleteExperience');
}
/**
* Grants permission to delete an Faq
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteFaq.html
*/
toDeleteFaq() {
return this.to('DeleteFaq');
}
/**
* Grants permission to delete an Index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteIndex.html
*/
toDeleteIndex() {
return this.to('DeleteIndex');
}
/**
* Grants permission to delete principal mapping from index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeletePrincipalMapping.html
*/
toDeletePrincipalMapping() {
return this.to('DeletePrincipalMapping');
}
/**
* Grants permission to delete a QuerySuggestions BlockList
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteQuerySuggestionsBlockList.html
*/
toDeleteQuerySuggestionsBlockList() {
return this.to('DeleteQuerySuggestionsBlockList');
}
/**
* Grants permission to delete a Thesaurus
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DeleteThesaurus.html
*/
toDeleteThesaurus() {
return this.to('DeleteThesaurus');
}
/**
* Grants permission to describe an access control configuration
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeAccessControlConfiguration.html
*/
toDescribeAccessControlConfiguration() {
return this.to('DescribeAccessControlConfiguration');
}
/**
* Grants permission to describe a data source
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeDataSource.html
*/
toDescribeDataSource() {
return this.to('DescribeDataSource');
}
/**
* Gets information about your Amazon Kendra experience such as a search application
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeExperience.html
*/
toDescribeExperience() {
return this.to('DescribeExperience');
}
/**
* Grants permission to describe an Faq
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeFaq.html
*/
toDescribeFaq() {
return this.to('DescribeFaq');
}
/**
* Grants permission to describe a featured results set
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeThesaurus.html
*/
toDescribeFeaturedResultsSet() {
return this.to('DescribeFeaturedResultsSet');
}
/**
* Grants permission to describe an Index
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeIndex.html
*/
toDescribeIndex() {
return this.to('DescribeIndex');
}
/**
* Grants permission to describe principal mapping from index
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribePrincipalMapping.html
*/
toDescribePrincipalMapping() {
return this.to('DescribePrincipalMapping');
}
/**
* Grants permission to describe a QuerySuggestions BlockList
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeQuerySuggestionsBlockList.html
*/
toDescribeQuerySuggestionsBlockList() {
return this.to('DescribeQuerySuggestionsBlockList');
}
/**
* Grants permission to describe the query suggestions configuration for an index
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeQuerySuggestionsConfig.html
*/
toDescribeQuerySuggestionsConfig() {
return this.to('DescribeQuerySuggestionsConfig');
}
/**
* Grants permission to describe a Thesaurus
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DescribeThesaurus.html
*/
toDescribeThesaurus() {
return this.to('DescribeThesaurus');
}
/**
* Prevents users or groups in your AWS SSO identity source from accessing your Amazon Kendra experience
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DisassociateEntitiesFromExperience.html
*/
toDisassociateEntitiesFromExperience() {
return this.to('DisassociateEntitiesFromExperience');
}
/**
* Removes the specific permissions of users or groups in your AWS SSO identity source with access to your Amazon Kendra experience
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_DisassociatePersonasFromEntities.html
*/
toDisassociatePersonasFromEntities() {
return this.to('DisassociatePersonasFromEntities');
}
/**
* Grants permission to get suggestions for a query prefix
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html
*/
toGetQuerySuggestions() {
return this.to('GetQuerySuggestions');
}
/**
* Retrieves search metrics data
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_GetSnapshots.html
*/
toGetSnapshots() {
return this.to('GetSnapshots');
}
/**
* Grants permission to list the access control configurations
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListAccessControlConfigurations.html
*/
toListAccessControlConfigurations() {
return this.to('ListAccessControlConfigurations');
}
/**
* Grants permission to get Data Source sync job history
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListDataSourceSyncJobs.html
*/
toListDataSourceSyncJobs() {
return this.to('ListDataSourceSyncJobs');
}
/**
* Grants permission to list the data sources
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListDataSources.html
*/
toListDataSources() {
return this.to('ListDataSources');
}
/**
* Lists specific permissions of users and groups with access to your Amazon Kendra experience
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListEntityPersonas.html
*/
toListEntityPersonas() {
return this.to('ListEntityPersonas');
}
/**
* Lists users or groups in your AWS SSO identity source that are granted access to your Amazon Kendra experience
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListExperienceEntities.html
*/
toListExperienceEntities() {
return this.to('ListExperienceEntities');
}
/**
* Lists one or more Amazon Kendra experiences. You can create an Amazon Kendra experience such as a search application
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListExperiences.html
*/
toListExperiences() {
return this.to('ListExperiences');
}
/**
* Grants permission to list the Faqs
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListFaqs.html
*/
toListFaqs() {
return this.to('ListFaqs');
}
/**
* Grants permission to list the featured results sets
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListFeaturedResults.html
*/
toListFeaturedResultsSets() {
return this.to('ListFeaturedResultsSets');
}
/**
* Grants permission to list groups that are older than an ordering id
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListGroupsOlderThanOrderingId.html
*/
toListGroupsOlderThanOrderingId() {
return this.to('ListGroupsOlderThanOrderingId');
}
/**
* Grants permission to list the indexes
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListIndices.html
*/
toListIndices() {
return this.to('ListIndices');
}
/**
* Grants permission to list the QuerySuggestions BlockLists
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListQuerySuggestionsBlockLists.html
*/
toListQuerySuggestionsBlockLists() {
return this.to('ListQuerySuggestionsBlockLists');
}
/**
* Grants permission to list tags for a resource
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list the Thesauri
*
* Access Level: List
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_ListThesauri.html
*/
toListThesauri() {
return this.to('ListThesauri');
}
/**
* Grants permission to put principal mapping in index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_PutPrincipalMapping.html
*/
toPutPrincipalMapping() {
return this.to('PutPrincipalMapping');
}
/**
* Grants permission to query documents and faqs
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_Query.html
*/
toQuery() {
return this.to('Query');
}
/**
* Grants permission to retrieve relevant content from an index
*
* Access Level: Read
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_Retrieve.html
*/
toRetrieve() {
return this.to('Retrieve');
}
/**
* Grants permission to start Data Source sync job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_StartDataSourceSyncJob.html
*/
toStartDataSourceSyncJob() {
return this.to('StartDataSourceSyncJob');
}
/**
* Grants permission to stop Data Source sync job
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_StopDataSourceSyncJob.html
*/
toStopDataSourceSyncJob() {
return this.to('StopDataSourceSyncJob');
}
/**
* Grants permission to send feedback about a query results
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_SubmitFeedback.html
*/
toSubmitFeedback() {
return this.to('SubmitFeedback');
}
/**
* Grants permission to tag a resource with given key value pairs
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to remove the tag with the given key from a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update an access control configuration
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateAccessControlConfiguration.html
*/
toUpdateAccessControlConfiguration() {
return this.to('UpdateAccessControlConfiguration');
}
/**
* Grants permission to update a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateDataSource.html
*/
toUpdateDataSource() {
return this.to('UpdateDataSource');
}
/**
* Updates your Amazon Kendra experience such as a search application
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateExperience.html
*/
toUpdateExperience() {
return this.to('UpdateExperience');
}
/**
* Grants permission to update a featured results set
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateFeaturedResults.html
*/
toUpdateFeaturedResultsSet() {
return this.to('UpdateFeaturedResultsSet');
}
/**
* Grants permission to update an Index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateIndex.html
*/
toUpdateIndex() {
return this.to('UpdateIndex');
}
/**
* Grants permission to update a QuerySuggestions BlockList
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateQuerySuggestionsBlockList.html
*/
toUpdateQuerySuggestionsBlockList() {
return this.to('UpdateQuerySuggestionsBlockList');
}
/**
* Grants permission to update the query suggestions configuration for an index
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateQuerySuggestionsConfig.html
*/
toUpdateQuerySuggestionsConfig() {
return this.to('UpdateQuerySuggestionsConfig');
}
/**
* Grants permission to update a thesaurus
*
* Access Level: Write
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_UpdateThesaurus.html
*/
toUpdateThesaurus() {
return this.to('UpdateThesaurus');
}
/**
* Adds a resource of type index to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/index.html
*
* @param indexId - Identifier for the indexId.
* @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()
*/
onIndex(indexId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}`);
}
/**
* Adds a resource of type data-source to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/data-source.html
*
* @param indexId - Identifier for the indexId.
* @param dataSourceId - Identifier for the dataSourceId.
* @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()
*/
onDataSource(indexId, dataSourceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/data-source/${dataSourceId}`);
}
/**
* Adds a resource of type faq to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/faq.html
*
* @param indexId - Identifier for the indexId.
* @param faqId - Identifier for the faqId.
* @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()
*/
onFaq(indexId, faqId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/faq/${faqId}`);
}
/**
* Adds a resource of type experience to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/deploying-search-experience-no-code.html
*
* @param indexId - Identifier for the indexId.
* @param experienceId - Identifier for the experienceId.
* @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.
*/
onExperience(indexId, experienceId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/experience/${experienceId}`);
}
/**
* Adds a resource of type thesaurus to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/thesaurus.html
*
* @param indexId - Identifier for the indexId.
* @param thesaurusId - Identifier for the thesaurusId.
* @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()
*/
onThesaurus(indexId, thesaurusId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/thesaurus/${thesaurusId}`);
}
/**
* Adds a resource of type query-suggestions-block-list to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/query-suggestions-block-list.html
*
* @param indexId - Identifier for the indexId.
* @param querySuggestionsBlockListId - Identifier for the querySuggestionsBlockListId.
* @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()
*/
onQuerySuggestionsBlockList(indexId, querySuggestionsBlockListId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/query-suggestions-block-list/${querySuggestionsBlockListId}`);
}
/**
* Adds a resource of type featured-results-set to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/featured-results.html
*
* @param indexId - Identifier for the indexId.
* @param featuredResultsSetId - Identifier for the featuredResultsSetId.
* @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()
*/
onFeaturedResultsSet(indexId, featuredResultsSetId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/featured-results-set/${featuredResultsSetId}`);
}
/**
* Adds a resource of type access-control-configuration to the statement
*
* https://docs.aws.amazon.com/kendra/latest/dg/API_CreateAccessControlConfiguration.html
*
* @param indexId - Identifier for the indexId.
* @param accessControlConfigurationId - Identifier for the accessControlConfigurationId.
* @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.
*/
onAccessControlConfiguration(indexId, accessControlConfigurationId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:kendra:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:index/${indexId}/access-control-configuration/${accessControlConfigurationId}`);
}
/**
* 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:
* - .toCreateDataSource()
* - .toCreateFaq()
* - .toCreateFeaturedResultsSet()
* - .toCreateIndex()
* - .toCreateQuerySuggestionsBlockList()
* - .toCreateThesaurus()
* - .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 resource types:
* - index
* - data-source
* - faq
* - thesaurus
* - query-suggestions-block-list
* - featured-results-set
*
* @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:
* - .toCreateDataSource()
* - .toCreateFaq()
* - .toCreateFeaturedResultsSet()
* - .toCreateIndex()
* - .toCreateQuerySuggestionsBlockList()
* - .toCreateThesaurus()
* - .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.Kendra = Kendra;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VuZHJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsia2VuZHJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUV6RDs7OztHQUlHO0FBQ0gsTUFBYSxNQUFPLFNBQVEsd0JBQWU7SUFHekM7Ozs7T0FJRztJQUNILFlBQVksR0FBWTtRQUN0QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFSTixrQkFBYSxHQUFHLFFBQVEsQ0FBQztRQWd3QnRCLG9CQUFlLEdBQW9CO1lBQzNDLEtBQUssRUFBRTtnQkFDTCwrQkFBK0I7Z0JBQy9CLDZCQUE2QjtnQkFDN0IscUJBQXFCO2dCQUNyQiwrQkFBK0I7Z0JBQy9CLGtCQUFrQjtnQkFDbEIsdUJBQXVCO2dCQUN2QixrQ0FBa0M7Z0JBQ2xDLGtCQUFrQjtnQkFDbEIsa0JBQWtCO2dCQUNsQixXQUFXO2dCQUNYLDBCQUEwQjtnQkFDMUIsYUFBYTtnQkFDYixpQ0FBaUM7Z0JBQ2pDLGlCQUFpQjtnQkFDakIsa0NBQWtDO2dCQUNsQyxrQkFBa0I7Z0JBQ2xCLGtCQUFrQjtnQkFDbEIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLHdCQUF3QjtnQkFDeEIsaUNBQWlDO2dCQUNqQyxpQkFBaUI7Z0JBQ2pCLG9DQUFvQztnQkFDcEMsa0NBQWtDO2dCQUNsQyxxQkFBcUI7Z0JBQ3JCLHdCQUF3QjtnQkFDeEIsdUJBQXVCO2dCQUN2QixnQkFBZ0I7Z0JBQ2hCLGtDQUFrQztnQkFDbEMsa0JBQWtCO2dCQUNsQixrQkFBa0I7Z0JBQ2xCLDBCQUEwQjtnQkFDMUIsYUFBYTtnQkFDYixpQ0FBaUM7Z0JBQ2pDLDhCQUE4QjtnQkFDOUIsaUJBQWlCO2FBQ2xCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLHdCQUF3QjtnQkFDeEIsb0NBQW9DO2dCQUNwQyxvQkFBb0I7Z0JBQ3BCLG9CQUFvQjtnQkFDcEIsYUFBYTtnQkFDYiw0QkFBNEI7Z0JBQzVCLGVBQWU7Z0JBQ2YsMEJBQTBCO2dCQUMxQixtQ0FBbUM7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LEVBQUUsQ0FBQyxrQkFBbUIsTUFBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSSxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsS0FBd0IsRUFBRSxRQUE0QjtRQUM1RixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW9CLE1BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNJLFlBQVksQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxZQUFZLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUF2aENELHdCQXVoQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuXG4vKipcbiAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBba2VuZHJhXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hbWF6b25rZW5kcmEuaHRtbCkuXG4gKlxuICogQHBhcmFtIHNpZCBbU0lEXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3NpZC5odG1sKSBvZiB0aGUgc3RhdGVtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBLZW5kcmEgZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdrZW5kcmEnO1xuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2tlbmRyYV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9ua2VuZHJhLmh0bWwpLlxuICAgKlxuICAgKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNpZD86IHN0cmluZykge1xuICAgIHN1cGVyKHNpZCk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcHV0IHByaW5jaXBhbCBtYXBwaW5nIGluIGluZGV4XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2tlbmRyYS9sYXRlc3QvZGcvQVBJX1B1dFByaW5jaXBhbE1hcHBpbmcuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQXNzb2NpYXRlRW50aXRpZXNUb0V4cGVyaWVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0Fzc29jaWF0ZUVudGl0aWVzVG9FeHBlcmllbmNlJyk7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgc3BlY2lmaWMgcGVybWlzc2lvbnMgb2YgdXNlcnMgb3IgZ3JvdXBzIGluIHlvdXIgQVdTIFNTTyBpZGVudGl0eSBzb3VyY2Ugd2l0aCBhY2Nlc3MgdG8geW91ciBBbWF6b24gS2VuZHJhIGV4cGVyaWVuY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va2VuZHJhL2xhdGVzdC9kZy9BUElfQXNzb2NpYXRlUGVyc29uYXNUb0VudGl0aWVzLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZVBlcnNvbmFzVG9FbnRpdGllcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQXNzb2NpYXRlUGVyc29uYXNUb0VudGl0aWVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYmF0Y2ggZGVsZXRlIGRvY3VtZW50XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2tlbmRyYS9sYXRlc3QvZGcvQVBJX0JhdGNoRGVsZXRlRG9jdW1lbnQuaHRtbFxuICAgKi9cbiAgcHVibGljIHRvQmF0Y2hEZWxldGVEb2N1bWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hEZWxldGVEb2N1bWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSBhIGZlYXR1cmVkIHJlc3VsdHMgc2V0XG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2tlbmRyYS9sYXRlc3QvZGcvQVBJX0RlbGV0ZUZlYXR1cmVkUmVzdWx0cy5odG1sXG4gICAqL1xuICBwdWJsaWMgdG9CYXRjaERlbGV0ZUZlYXR1cmVkUmVzdWx0c1NldCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQmF0Y2hEZWxldGVGZWF0dXJlZFJlc3VsdHNTZXQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBkbyBiYXRjaCBnZXQgZG9jdW1lbnQgc3RhdHVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va2VuZHJhL2xhdGVzdC9kZy9BUElfQmF0Y2hHZXREb2N1bWVudFN0YXR1cy5odG1sXG4gIC