cdk-iam-floyd
Version:
AWS IAM policy statement generator with fluent interface for AWS CDK
1,012 lines • 95.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Appsync = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [appsync](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsappsync.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class Appsync extends shared_1.PolicyStatement {
/**
* Grants permission to attach a GraphQL API to a custom domain name in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_AssociateApi.html
*/
toAssociateApi() {
return this.to('AssociateApi');
}
/**
* Grants permission to associate a merged API to a source API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_AssociateMergedGraphqlApi.html
*/
toAssociateMergedGraphqlApi() {
return this.to('AssociateMergedGraphqlApi');
}
/**
* Grants permission to associate a source API to a merged API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_AssociateSourceGraphqlApi.html
*/
toAssociateSourceGraphqlApi() {
return this.to('AssociateSourceGraphqlApi');
}
/**
* Grants permission to create an API cache in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateApiCache.html
*/
toCreateApiCache() {
return this.to('CreateApiCache');
}
/**
* Grants permission to create a unique key that you can distribute to clients who are executing your API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateApiKey.html
*/
toCreateApiKey() {
return this.to('CreateApiKey');
}
/**
* Grants permission to create a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateDataSource.html
*/
toCreateDataSource() {
return this.to('CreateDataSource');
}
/**
* Grants permission to create a custom domain name in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateDomainName.html
*/
toCreateDomainName() {
return this.to('CreateDomainName');
}
/**
* Grants permission to create a new function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateFunction.html
*/
toCreateFunction() {
return this.to('CreateFunction');
}
/**
* Grants permission to create a GraphQL API, which is the top level AppSync resource
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsTagKeys()
* - .ifVisibility()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateGraphqlApi.html
*/
toCreateGraphqlApi() {
return this.to('CreateGraphqlApi');
}
/**
* Grants permission to create a resolver. A resolver converts incoming requests into a format that a data source can understand, and converts the data source's responses into GraphQL
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateResolver.html
*/
toCreateResolver() {
return this.to('CreateResolver');
}
/**
* Grants permission to create a type
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateType.html
*/
toCreateType() {
return this.to('CreateType');
}
/**
* Grants permission to delete an API cache in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteApiCache.html
*/
toDeleteApiCache() {
return this.to('DeleteApiCache');
}
/**
* Grants permission to delete an API key
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteApiKey.html
*/
toDeleteApiKey() {
return this.to('DeleteApiKey');
}
/**
* Grants permission to delete a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteDataSource.html
*/
toDeleteDataSource() {
return this.to('DeleteDataSource');
}
/**
* Grants permission to delete a custom domain name in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteDomainName.html
*/
toDeleteDomainName() {
return this.to('DeleteDomainName');
}
/**
* Grants permission to delete a function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteFunction.html
*/
toDeleteFunction() {
return this.to('DeleteFunction');
}
/**
* Grants permission to delete a GraphQL Api. This will also clean up every AppSync resource below that API
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteGraphqlApi.html
*/
toDeleteGraphqlApi() {
return this.to('DeleteGraphqlApi');
}
/**
* Grants permission to delete a resolver
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteResolver.html
*/
toDeleteResolver() {
return this.to('DeleteResolver');
}
/**
* Grants permission to remove a resource policy
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/devguide/merge-api.html
*/
toDeleteResourcePolicy() {
return this.to('DeleteResourcePolicy');
}
/**
* Grants permission to delete a type
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DeleteType.html
*/
toDeleteType() {
return this.to('DeleteType');
}
/**
* Grants permission to detach a GraphQL API to a custom domain name in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DisassociateApi.html
*/
toDisassociateApi() {
return this.to('DisassociateApi');
}
/**
* Grants permission to remove an associated source API from a merged API identified by the source API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DisassociateMergedGraphqlApi.html
*/
toDisassociateMergedGraphqlApi() {
return this.to('DisassociateMergedGraphqlApi');
}
/**
* Grants permission to remove an associated source API from a merged API identified by the merged API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_DisassociateSourceGraphqlApi.html
*/
toDisassociateSourceGraphqlApi() {
return this.to('DisassociateSourceGraphqlApi');
}
/**
* Grants permission to evaluate code with a runtime and context
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_EvaluateCode.html
*/
toEvaluateCode() {
return this.to('EvaluateCode');
}
/**
* Grants permission to evaluate template mapping
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_EvaluateMappingTemplate.html
*/
toEvaluateMappingTemplate() {
return this.to('EvaluateMappingTemplate');
}
/**
* Grants permission to flush an API cache in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_FlushApiCache.html
*/
toFlushApiCache() {
return this.to('FlushApiCache');
}
/**
* Grants permission to read custom domain name - GraphQL API association details in AppSync
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetApiAssociation.html
*/
toGetApiAssociation() {
return this.to('GetApiAssociation');
}
/**
* Grants permission to read information about an API cache in AppSync
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetApiCache.html
*/
toGetApiCache() {
return this.to('GetApiCache');
}
/**
* Grants permission to retrieve a data source
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetDataSource.html
*/
toGetDataSource() {
return this.to('GetDataSource');
}
/**
* Grants permission to retrieve a data source introspection
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetDataSourceIntrospection.html
*/
toGetDataSourceIntrospection() {
return this.to('GetDataSourceIntrospection');
}
/**
* Grants permission to read information about a custom domain name in AppSync
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetDomainName.html
*/
toGetDomainName() {
return this.to('GetDomainName');
}
/**
* Grants permission to retrieve a function
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetFunction.html
*/
toGetFunction() {
return this.to('GetFunction');
}
/**
* Grants permission to retrieve a GraphQL API
*
* Access Level: Read
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetGraphqlApi.html
*/
toGetGraphqlApi() {
return this.to('GetGraphqlApi');
}
/**
* Grants permission to retrieve the environment variables for a GraphQL API
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetGraphqlApiEnvironmentVariables.html
*/
toGetGraphqlApiEnvironmentVariables() {
return this.to('GetGraphqlApiEnvironmentVariables');
}
/**
* Grants permission to retrieve the introspection schema for a GraphQL API
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetIntrospectionSchema.html
*/
toGetIntrospectionSchema() {
return this.to('GetIntrospectionSchema');
}
/**
* Grants permission to retrieve a resolver
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetResolver.html
*/
toGetResolver() {
return this.to('GetResolver');
}
/**
* Grants permission to read a resource policy
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/devguide/merge-api.html
*/
toGetResourcePolicy() {
return this.to('GetResourcePolicy');
}
/**
* Grants permission to retrieve the current status of a schema creation operation
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetSchemaCreationStatus.html
*/
toGetSchemaCreationStatus() {
return this.to('GetSchemaCreationStatus');
}
/**
* Grants permission to read information about a merged API associated source API
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetSourceApiAssociation.html
*/
toGetSourceApiAssociation() {
return this.to('GetSourceApiAssociation');
}
/**
* Grants permission to retrieve a type
*
* Access Level: Read
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_GetType.html
*/
toGetType() {
return this.to('GetType');
}
/**
* Grants permission to send a GraphQL query to a GraphQL API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/devguide/using-your-api.html
*/
toGraphQL() {
return this.to('GraphQL');
}
/**
* Grants permission to list the API keys for a given API
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListApiKeys.html
*/
toListApiKeys() {
return this.to('ListApiKeys');
}
/**
* Grants permission to list the data sources for a given API
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListDataSources.html
*/
toListDataSources() {
return this.to('ListDataSources');
}
/**
* Grants permission to enumerate custom domain names in AppSync
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListDomainNames.html
*/
toListDomainNames() {
return this.to('ListDomainNames');
}
/**
* Grants permission to list the functions for a given API
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListFunctions.html
*/
toListFunctions() {
return this.to('ListFunctions');
}
/**
* Grants permission to list GraphQL APIs
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListGraphqlApis.html
*/
toListGraphqlApis() {
return this.to('ListGraphqlApis');
}
/**
* Grants permission to list the resolvers for a given API and type
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListResolvers.html
*/
toListResolvers() {
return this.to('ListResolvers');
}
/**
* Grants permission to list the resolvers that are associated with a specific function
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListResolversByFunction.html
*/
toListResolversByFunction() {
return this.to('ListResolversByFunction');
}
/**
* Grants permission to list source APIs associated to a given merged API
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListSourceApiAssociations.html
*/
toListSourceApiAssociations() {
return this.to('ListSourceApiAssociations');
}
/**
* Grants permission to list the tags for a resource
*
* Access Level: Read
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListTagsForResource.html
*/
toListTagsForResource() {
return this.to('ListTagsForResource');
}
/**
* Grants permission to list the types for a given API
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListTypes.html
*/
toListTypes() {
return this.to('ListTypes');
}
/**
* Grants permission to list the types for a given merged API and source API association
*
* Access Level: List
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_ListTypesByAssociation.html
*/
toListTypesByAssociation() {
return this.to('ListTypesByAssociation');
}
/**
* Grants permission to update the environment variables for a GraphQL API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_PutGraphqlApiEnvironmentVariables.html
*/
toPutGraphqlApiEnvironmentVariables() {
return this.to('PutGraphqlApiEnvironmentVariables');
}
/**
* Grants permission to set a resource policy
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/devguide/merge-api.html
*/
toPutResourcePolicy() {
return this.to('PutResourcePolicy');
}
/**
* Grants permission to set a web ACL
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_SetWebACL.html
*/
toSetWebACL() {
return this.to('SetWebACL');
}
/**
* Grants permission to send a GraphQL query to a source API of a merged API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/devguide/using-your-api.html
*/
toSourceGraphQL() {
return this.to('SourceGraphQL');
}
/**
* Grants permission to introspect a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_StartDataSourceIntrospection.html
*/
toStartDataSourceIntrospection() {
return this.to('StartDataSourceIntrospection');
}
/**
* Grants permission to add a new schema to your GraphQL API. This operation is asynchronous - GetSchemaCreationStatus can show when it has completed
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_StartSchemaCreation.html
*/
toStartSchemaCreation() {
return this.to('StartSchemaCreation');
}
/**
* Grants permission to initiate a schema merge for a given merged API and associated source API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_StartSchemaMerge.html
*/
toStartSchemaMerge() {
return this.to('StartSchemaMerge');
}
/**
* Grants permission to tag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsRequestTag()
* - .ifAwsResourceTag()
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_TagResource.html
*/
toTagResource() {
return this.to('TagResource');
}
/**
* Grants permission to untag a resource
*
* Access Level: Tagging
*
* Possible conditions:
* - .ifAwsTagKeys()
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UntagResource.html
*/
toUntagResource() {
return this.to('UntagResource');
}
/**
* Grants permission to update an API cache in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateApiCache.html
*/
toUpdateApiCache() {
return this.to('UpdateApiCache');
}
/**
* Grants permission to update an API key for a given API
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateApiKey.html
*/
toUpdateApiKey() {
return this.to('UpdateApiKey');
}
/**
* Grants permission to update a data source
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateDataSource.html
*/
toUpdateDataSource() {
return this.to('UpdateDataSource');
}
/**
* Grants permission to update a custom domain name in AppSync
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateDomainName.html
*/
toUpdateDomainName() {
return this.to('UpdateDomainName');
}
/**
* Grants permission to update an existing function
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateFunction.html
*/
toUpdateFunction() {
return this.to('UpdateFunction');
}
/**
* Grants permission to update a GraphQL API
*
* Access Level: Write
*
* Possible conditions:
* - .ifAwsResourceTag()
*
* Dependent actions:
* - iam:CreateServiceLinkedRole
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateGraphqlApi.html
*/
toUpdateGraphqlApi() {
return this.to('UpdateGraphqlApi');
}
/**
* Grants permission to update a resolver
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateResolver.html
*/
toUpdateResolver() {
return this.to('UpdateResolver');
}
/**
* Grants permission to update a merged API source API association
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateSourceApiAssociation.html
*/
toUpdateSourceApiAssociation() {
return this.to('UpdateSourceApiAssociation');
}
/**
* Grants permission to update a type
*
* Access Level: Write
*
* https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateType.html
*/
toUpdateType() {
return this.to('UpdateType');
}
/**
* Adds a resource of type datasource to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html
*
* @param graphQLAPIId - Identifier for the graphQLAPIId.
* @param datasourceName - Identifier for the datasourceName.
* @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.
*/
onDatasource(graphQLAPIId, datasourceName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${graphQLAPIId}/datasources/${datasourceName}`);
}
/**
* Adds a resource of type domain to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/custom-domain-name.html
*
* @param domainName - Identifier for the domainName.
* @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.
*/
onDomain(domainName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:domainnames/${domainName}`);
}
/**
* Adds a resource of type graphqlapi to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/designing-a-graphql-api.html
*
* @param graphQLAPIId - Identifier for the graphQLAPIId.
* @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()
*/
onGraphqlapi(graphQLAPIId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${graphQLAPIId}`);
}
/**
* Adds a resource of type field to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html
*
* @param graphQLAPIId - Identifier for the graphQLAPIId.
* @param typeName - Identifier for the typeName.
* @param fieldName - Identifier for the fieldName.
* @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.
*/
onField(graphQLAPIId, typeName, fieldName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${graphQLAPIId}/types/${typeName}/fields/${fieldName}`);
}
/**
* Adds a resource of type type to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/designing-your-schema.html#adding-a-root-query-type
*
* @param graphQLAPIId - Identifier for the graphQLAPIId.
* @param typeName - Identifier for the typeName.
* @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.
*/
onType(graphQLAPIId, typeName, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${graphQLAPIId}/types/${typeName}`);
}
/**
* Adds a resource of type function to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html
*
* @param graphQLAPIId - Identifier for the graphQLAPIId.
* @param functionId - Identifier for the functionId.
* @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.
*/
onFunction(graphQLAPIId, functionId, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${graphQLAPIId}/functions/${functionId}`);
}
/**
* Adds a resource of type sourceApiAssociation to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/merged-api.html
*
* @param mergedGraphQLAPIId - Identifier for the mergedGraphQLAPIId.
* @param associationid - Identifier for the associationid.
* @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.
*/
onSourceApiAssociation(mergedGraphQLAPIId, associationid, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${mergedGraphQLAPIId}/sourceApiAssociations/${associationid}`);
}
/**
* Adds a resource of type mergedApiAssociation to the statement
*
* https://docs.aws.amazon.com/appsync/latest/devguide/merged-api.html
*
* @param sourceGraphQLAPIId - Identifier for the sourceGraphQLAPIId.
* @param associationid - Identifier for the associationid.
* @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.
*/
onMergedApiAssociation(sourceGraphQLAPIId, associationid, account, region, partition) {
return this.on(`arn:${partition ?? this.defaultPartition}:appsync:${region ?? this.defaultRegion}:${account ?? this.defaultAccount}:apis/${sourceGraphQLAPIId}/mergedApiAssociations/${associationid}`);
}
/**
* Filters access by the visibility of an API
*
* Applies to actions:
* - .toCreateGraphqlApi()
*
* @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`
*/
ifVisibility(value, operator) {
return this.if(`Visibility`, value, operator ?? 'StringLike');
}
/**
* Filters access by the tag key-value pairs in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag
*
* Applies to actions:
* - .toCreateGraphqlApi()
* - .toTagResource()
*
* @param tagKey The tag key to check
* @param value The value(s) to check
* @param operator Works with [string operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String). **Default:** `StringLike`
*/
ifAwsRequestTag(tagKey, value, operator) {
return this.if(`aws:RequestTag/${tagKey}`, value, operator ?? 'StringLike');
}
/**
* Filters access by the tag key-value pairs attached to the resource
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag
*
* Applies to actions:
* - .toDeleteGraphqlApi()
* - .toGetGraphqlApi()
* - .toListTagsForResource()
* - .toTagResource()
* - .toUpdateGraphqlApi()
*
* Applies to resource types:
* - graphqlapi
*
* @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 presence of tag keys in the request
*
* https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys
*
* Applies to actions:
* - .toCreateGraphqlApi()
* - .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');
}
/**
* Statement provider for service [appsync](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsappsync.html).
*
*/
constructor(props) {
super(props);
this.servicePrefix = 'appsync';
this.accessLevelList = {
Write: [
'AssociateApi',
'AssociateMergedGraphqlApi',
'AssociateSourceGraphqlApi',
'CreateApiCache',
'CreateApiKey',
'CreateDataSource',
'CreateDomainName',
'CreateFunction',
'CreateGraphqlApi',
'CreateResolver',
'CreateType',
'DeleteApiCache',
'DeleteApiKey',
'DeleteDataSource',
'DeleteDomainName',
'DeleteFunction',
'DeleteGraphqlApi',
'DeleteResolver',
'DeleteResourcePolicy',
'DeleteType',
'DisassociateApi',
'DisassociateMergedGraphqlApi',
'DisassociateSourceGraphqlApi',
'FlushApiCache',
'GraphQL',
'PutGraphqlApiEnvironmentVariables',
'PutResourcePolicy',
'SetWebACL',
'SourceGraphQL',
'StartDataSourceIntrospection',
'StartSchemaCreation',
'StartSchemaMerge',
'UpdateApiCache',
'UpdateApiKey',
'UpdateDataSource',
'UpdateDomainName',
'UpdateFunction',
'UpdateGraphqlApi',
'UpdateResolver',
'UpdateSourceApiAssociation',
'UpdateType'
],
Read: [
'EvaluateCode',
'EvaluateMappingTemplate',
'GetApiAssociation',
'GetApiCache',
'GetDataSource',
'GetDataSourceIntrospection',
'GetDomainName',
'GetFunction',
'GetGraphqlApi',
'GetGraphqlApiEnvironmentVariables',
'GetIntrospectionSchema',
'GetResolver',
'GetResourcePolicy',
'GetSchemaCreationStatus',
'GetSourceApiAssociation',
'GetType',
'ListTagsForResource'
],
List: [
'ListApiKeys',
'ListDataSources',
'ListDomainNames',
'ListFunctions',
'ListGraphqlApis',
'ListResolvers',
'ListResolversByFunction',
'ListSourceApiAssociations',
'ListTypes',
'ListTypesByAssociation'
],
Tagging: [
'TagResource',
'UntagResource'
]
};
}
}
exports.Appsync = Appsync;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwcHN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQXlEO0FBR3pEOzs7O0dBSUc7QUFDSCxNQUFhLE9BQVEsU0FBUSx3QkFBZTtJQUcxQzs7Ozs7O09BTUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksMkJBQTJCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxr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ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFthcHBzeW5jXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hd3NhcHBzeW5jLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgQXBwc3luYyBleHRlbmRzIFBvbGljeVN0YXRlbWVudCB7XG4gIHB1YmxpYyBzZXJ2aWNlUHJlZml4ID0gJ2FwcHN5bmMnO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBhdHRhY2ggYSBHcmFwaFFMIEFQSSB0byBhIGN1c3RvbSBkb21haW4gbmFtZSBpbiBBcHBTeW5jXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN5bmMvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfQXNzb2NpYXRlQXBpLmh0bWxcbiAgICovXG4gIHB1YmxpYyB0b0Fzc29jaWF0ZUFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnQXNzb2NpYXRlQXBpJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gYXNzb2NpYXRlIGEgbWVyZ2VkIEFQSSB0byBhIHNvdXJjZSBBUElcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBod