UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

522 lines (521 loc) 24.4 kB
import * as cdk from "../../core/lib"; import * as constructs from "constructs"; import * as cfn_parse from "../../core/lib/helpers-internal"; import { IIndexRef, IndexReference, IVectorBucketPolicyRef, IVectorBucketRef, VectorBucketPolicyReference, VectorBucketReference } from "../../interfaces/generated/aws-s3vectors-interfaces.generated"; /** * The `AWS::S3Vectors::Index` resource defines a vector index within an Amazon S3 vector bucket. * * For more information, see [Creating a vector index in a vector bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-create-index.html) in the *Amazon Simple Storage Service User Guide* . * * You must specify either `VectorBucketName` or `VectorBucketArn` to identify the bucket that contains the index. * * To control how AWS CloudFormation handles the vector index when the stack is deleted, you can set a deletion policy for your index. You can choose to *retain* the index or to *delete* the index. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) . * * - **Permissions** - The required permissions for CloudFormation to use are based on the operations that are performed on the stack. * * - Create * * - s3vectors:CreateIndex * - s3vectors:GetIndex * - Read * * - s3vectors:GetIndex * - Delete * * - s3vectors:DeleteIndex * - s3vectors:GetIndex * - List * * - s3vectors:ListIndexes * * @cloudformationResource AWS::S3Vectors::Index * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html */ export declare class CfnIndex extends cdk.CfnResource implements cdk.IInspectable, IIndexRef { /** * The CloudFormation resource type name for this resource class. */ static readonly CFN_RESOURCE_TYPE_NAME: string; /** * Build a CfnIndex from CloudFormation properties * * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnIndex; /** * Checks whether the given object is a CfnIndex */ static isCfnIndex(x: any): x is CfnIndex; static arnForIndex(resource: IIndexRef): string; /** * Returns the date and time when the vector index was created. * * Example: `2024-12-21T10:30:00Z` * * @cloudformationAttribute CreationTime */ readonly attrCreationTime: string; /** * Returns the Amazon Resource Name (ARN) of the specified index. * * Example: `arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket/index/my-index` * * @cloudformationAttribute IndexArn */ readonly attrIndexArn: string; /** * The data type of the vectors to be inserted into the vector index. */ dataType: string; /** * The dimensions of the vectors to be inserted into the vector index. */ dimension: number; /** * The distance metric to be used for similarity search. Valid values are:. */ distanceMetric: string; /** * The encryption configuration for a vector index. */ encryptionConfiguration?: CfnIndex.EncryptionConfigurationProperty | cdk.IResolvable; /** * The name of the vector index to create. */ indexName?: string; /** * The metadata configuration for the vector index. */ metadataConfiguration?: cdk.IResolvable | CfnIndex.MetadataConfigurationProperty; /** * The Amazon Resource Name (ARN) of the vector bucket that contains the vector index. */ vectorBucketArn?: string; /** * The name of the vector bucket that contains the vector index. */ vectorBucketName?: string; /** * Create a new `AWS::S3Vectors::Index`. * * @param scope Scope in which this resource is defined * @param id Construct identifier for this resource (unique in its scope) * @param props Resource properties */ constructor(scope: constructs.Construct, id: string, props: CfnIndexProps); get indexRef(): IndexReference; protected get cfnProperties(): Record<string, any>; /** * Examines the CloudFormation resource and discloses attributes * * @param inspector tree inspector to collect and process attributes */ inspect(inspector: cdk.TreeInspector): void; protected renderProperties(props: Record<string, any>): Record<string, any>; } export declare namespace CfnIndex { /** * The encryption configuration for a vector bucket or index. * * By default, if you don't specify, all new vectors in Amazon S3 vector buckets use server-side encryption with Amazon S3 managed keys (SSE-S3), specifically `AES256` . You can optionally override bucket level encryption settings, and set a specific encryption configuration for a vector index at the time of index creation. * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-index-encryptionconfiguration.html */ interface EncryptionConfigurationProperty { /** * AWS Key Management Service (KMS) customer managed key ID to use for the encryption configuration. * * This parameter is allowed if and only if `sseType` is set to `aws:kms` . * * To specify the KMS key, you must use the format of the KMS key Amazon Resource Name (ARN). * * For example, specify Key ARN in the following format: `arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab` * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-index-encryptionconfiguration.html#cfn-s3vectors-index-encryptionconfiguration-kmskeyarn */ readonly kmsKeyArn?: string; /** * The server-side encryption type to use for the encryption configuration of the vector bucket. * * By default, if you don't specify, all new vectors in Amazon S3 vector buckets use server-side encryption with Amazon S3 managed keys (SSE-S3), specifically `AES256` . * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-index-encryptionconfiguration.html#cfn-s3vectors-index-encryptionconfiguration-ssetype */ readonly sseType?: string; } /** * The metadata configuration for the vector index. * * This configuration allows you to specify which metadata keys should be treated as non-filterable. * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-index-metadataconfiguration.html */ interface MetadataConfigurationProperty { /** * Non-filterable metadata keys allow you to enrich vectors with additional context during storage and retrieval. * * Unlike default metadata keys, these keys can't be used as query filters. Non-filterable metadata keys can be retrieved but can't be searched, queried, or filtered. You can access non-filterable metadata keys of your vectors after finding the vectors. * * You can specify 1 to 10 non-filterable metadata keys. Each key must be 1 to 63 characters long. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-index-metadataconfiguration.html#cfn-s3vectors-index-metadataconfiguration-nonfilterablemetadatakeys */ readonly nonFilterableMetadataKeys?: Array<string>; } } /** * Properties for defining a `CfnIndex` * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html */ export interface CfnIndexProps { /** * The data type of the vectors to be inserted into the vector index. * * Currently, only `float32` is supported, which represents 32-bit floating-point numbers. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-datatype */ readonly dataType: string; /** * The dimensions of the vectors to be inserted into the vector index. * * This value must be between 1 and 4096, inclusive. All vectors stored in the index must have the same number of dimensions. * * The dimension value affects the storage requirements and search performance. Higher dimensions require more storage space and may impact search latency. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-dimension */ readonly dimension: number; /** * The distance metric to be used for similarity search. Valid values are:. * * - `cosine` - Measures the cosine of the angle between two vectors. * - `euclidean` - Measures the straight-line distance between two points in multi-dimensional space. Lower values indicate greater similarity. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-distancemetric */ readonly distanceMetric: string; /** * The encryption configuration for a vector index. * * By default, if you don't specify, all new vectors in the vector index will use the encryption configuration of the vector bucket. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-encryptionconfiguration */ readonly encryptionConfiguration?: CfnIndex.EncryptionConfigurationProperty | cdk.IResolvable; /** * The name of the vector index to create. * * The index name must be between 3 and 63 characters long and can contain only lowercase letters, numbers, hyphens (-), and dots (.). The index name must be unique within the vector bucket. * * If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the index name. * * > If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-indexname */ readonly indexName?: string; /** * The metadata configuration for the vector index. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-metadataconfiguration */ readonly metadataConfiguration?: cdk.IResolvable | CfnIndex.MetadataConfigurationProperty; /** * The Amazon Resource Name (ARN) of the vector bucket that contains the vector index. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-vectorbucketarn */ readonly vectorBucketArn?: string; /** * The name of the vector bucket that contains the vector index. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-index.html#cfn-s3vectors-index-vectorbucketname */ readonly vectorBucketName?: string; } /** * Defines an Amazon S3 vector bucket in the same AWS Region where you create the AWS CloudFormation stack. * * Vector buckets are specialized storage containers designed for storing and managing vector data used in machine learning and AI applications. They provide optimized storage and retrieval capabilities for high-dimensional vector data. * * To control how AWS CloudFormation handles the bucket when the stack is deleted, you can set a deletion policy for your bucket. You can choose to *retain* the bucket or to *delete* the bucket. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) . * * > You can only delete empty vector buckets. Deletion fails for buckets that have contents. * * - **Permissions** - The required permissions for CloudFormation to use are based on the operations that are performed on the stack. * * - Create * * - s3vectors:CreateVectorBucket * - s3vectors:GetVectorBucket * - kms:GenerateDataKey (if using KMS encryption) * - Read * * - s3vectors:GetVectorBucket * - kms:GenerateDataKey (if using KMS encryption) * - Delete * * - s3vectors:DeleteVectorBucket * - s3vectors:GetVectorBucket * - kms:GenerateDataKey (if using KMS encryption) * - List * * - s3vectors:ListVectorBuckets * - kms:GenerateDataKey (if using KMS encryption) * * @cloudformationResource AWS::S3Vectors::VectorBucket * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucket.html */ export declare class CfnVectorBucket extends cdk.CfnResource implements cdk.IInspectable, IVectorBucketRef { /** * The CloudFormation resource type name for this resource class. */ static readonly CFN_RESOURCE_TYPE_NAME: string; /** * Build a CfnVectorBucket from CloudFormation properties * * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnVectorBucket; /** * Checks whether the given object is a CfnVectorBucket */ static isCfnVectorBucket(x: any): x is CfnVectorBucket; static arnForVectorBucket(resource: IVectorBucketRef): string; /** * Returns the date and time when the vector bucket was created. * * Example: `2024-12-21T10:30:00Z` * * @cloudformationAttribute CreationTime */ readonly attrCreationTime: string; /** * Returns the Amazon Resource Name (ARN) of the specified vector bucket. * * Example: `arn:aws:s3vectors:us-east-1:123456789012:bucket/amzn-s3-demo-vector-bucket` * * @cloudformationAttribute VectorBucketArn */ readonly attrVectorBucketArn: string; /** * The encryption configuration for the vector bucket. */ encryptionConfiguration?: CfnVectorBucket.EncryptionConfigurationProperty | cdk.IResolvable; /** * A name for the vector bucket. */ vectorBucketName?: string; /** * Create a new `AWS::S3Vectors::VectorBucket`. * * @param scope Scope in which this resource is defined * @param id Construct identifier for this resource (unique in its scope) * @param props Resource properties */ constructor(scope: constructs.Construct, id: string, props?: CfnVectorBucketProps); get vectorBucketRef(): VectorBucketReference; protected get cfnProperties(): Record<string, any>; /** * Examines the CloudFormation resource and discloses attributes * * @param inspector tree inspector to collect and process attributes */ inspect(inspector: cdk.TreeInspector): void; protected renderProperties(props: Record<string, any>): Record<string, any>; } export declare namespace CfnVectorBucket { /** * Specifies the encryption configuration for the vector bucket. * * By default, all new vectors in Amazon S3 vector buckets use server-side encryption with Amazon S3 managed keys (SSE-S3), specifically AES256. * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-vectorbucket-encryptionconfiguration.html */ interface EncryptionConfigurationProperty { /** * AWS Key Management Service (KMS) customer managed key ARN to use for the encryption configuration. * * This parameter is required if and only if `SseType` is set to `aws:kms` . * * You must specify the full ARN of the KMS key. Key IDs or key aliases aren't supported. * * > Amazon S3 Vectors only supports symmetric encryption KMS keys. For more information, see [Asymmetric keys in AWS KMS](https://docs.aws.amazon.com//kms/latest/developerguide/symmetric-asymmetric.html) in the *AWS Key Management Service Developer Guide* . * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-vectorbucket-encryptionconfiguration.html#cfn-s3vectors-vectorbucket-encryptionconfiguration-kmskeyarn */ readonly kmsKeyArn?: string; /** * The server-side encryption type to use for the encryption configuration of the vector bucket. * * Valid values are `AES256` for Amazon S3 managed keys and `aws:kms` for AWS KMS keys. * * @default - "AES256" * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3vectors-vectorbucket-encryptionconfiguration.html#cfn-s3vectors-vectorbucket-encryptionconfiguration-ssetype */ readonly sseType?: string; } } /** * Properties for defining a `CfnVectorBucket` * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucket.html */ export interface CfnVectorBucketProps { /** * The encryption configuration for the vector bucket. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucket.html#cfn-s3vectors-vectorbucket-encryptionconfiguration */ readonly encryptionConfiguration?: CfnVectorBucket.EncryptionConfigurationProperty | cdk.IResolvable; /** * A name for the vector bucket. * * The bucket name must contain only lowercase letters, numbers, and hyphens (-). The bucket name must be unique in the same AWS account for each AWS Region. If you don't specify a name, AWS CloudFormation generates a unique ID and uses that ID for the bucket name. * * The bucket name must be between 3 and 63 characters long and must not contain uppercase characters or underscores. * * > If you specify a name, you can't perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you need to replace the resource, specify a new name. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucket.html#cfn-s3vectors-vectorbucket-vectorbucketname */ readonly vectorBucketName?: string; } /** * The `AWS::S3Vectors::VectorBucketPolicy` resource defines an Amazon S3 vector bucket policy to control access to an Amazon S3 vector bucket. * * Vector bucket policies are written in JSON and allow you to grant or deny permissions across all (or a subset of) objects within a vector bucket. * * You must specify either `VectorBucketName` or `VectorBucketArn` to identify the target bucket. * * To control how AWS CloudFormation handles the vector bucket policy when the stack is deleted, you can set a deletion policy for your policy. You can choose to *retain* the policy or to *delete* the policy. For more information, see [DeletionPolicy attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) . * * - **Permissions** - The required permissions for CloudFormation to use are based on the operations that are performed on the stack. * * - Create * * - s3vectors:GetVectorBucketPolicy * - s3vectors:PutVectorBucketPolicy * - Read * * - s3vectors:GetVectorBucketPolicy * - Update * * - s3vectors:GetVectorBucketPolicy * - s3vectors:PutVectorBucketPolicy * - Delete * * - s3vectors:GetVectorBucketPolicy * - s3vectors:DeleteVectorBucketPolicy * - List * * - s3vectors:GetVectorBucketPolicy * - s3vectors:ListVectorBuckets * * @cloudformationResource AWS::S3Vectors::VectorBucketPolicy * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucketpolicy.html */ export declare class CfnVectorBucketPolicy extends cdk.CfnResource implements cdk.IInspectable, IVectorBucketPolicyRef { /** * The CloudFormation resource type name for this resource class. */ static readonly CFN_RESOURCE_TYPE_NAME: string; /** * Build a CfnVectorBucketPolicy from CloudFormation properties * * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope: constructs.Construct, id: string, resourceAttributes: any, options: cfn_parse.FromCloudFormationOptions): CfnVectorBucketPolicy; /** * Checks whether the given object is a CfnVectorBucketPolicy */ static isCfnVectorBucketPolicy(x: any): x is CfnVectorBucketPolicy; /** * A policy document containing permissions to add to the specified vector bucket. */ policy: any | cdk.IResolvable | string; /** * The Amazon Resource Name (ARN) of the S3 vector bucket to which the policy applies. */ vectorBucketArn?: string; /** * The name of the S3 vector bucket to which the policy applies. */ vectorBucketName?: string; /** * Create a new `AWS::S3Vectors::VectorBucketPolicy`. * * @param scope Scope in which this resource is defined * @param id Construct identifier for this resource (unique in its scope) * @param props Resource properties */ constructor(scope: constructs.Construct, id: string, props: CfnVectorBucketPolicyProps); get vectorBucketPolicyRef(): VectorBucketPolicyReference; protected get cfnProperties(): Record<string, any>; /** * Examines the CloudFormation resource and discloses attributes * * @param inspector tree inspector to collect and process attributes */ inspect(inspector: cdk.TreeInspector): void; protected renderProperties(props: Record<string, any>): Record<string, any>; } /** * Properties for defining a `CfnVectorBucketPolicy` * * @struct * @stability external * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucketpolicy.html */ export interface CfnVectorBucketPolicyProps { /** * A policy document containing permissions to add to the specified vector bucket. * * In IAM , you must provide policy documents in JSON format. However, in CloudFormation you can provide the policy in JSON or YAML format because CloudFormation converts YAML to JSON before submitting it to IAM . * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucketpolicy.html#cfn-s3vectors-vectorbucketpolicy-policy */ readonly policy: any | cdk.IResolvable | string; /** * The Amazon Resource Name (ARN) of the S3 vector bucket to which the policy applies. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucketpolicy.html#cfn-s3vectors-vectorbucketpolicy-vectorbucketarn */ readonly vectorBucketArn?: string; /** * The name of the S3 vector bucket to which the policy applies. * * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3vectors-vectorbucketpolicy.html#cfn-s3vectors-vectorbucketpolicy-vectorbucketname */ readonly vectorBucketName?: string; } export type { IIndexRef, IndexReference }; export type { IVectorBucketRef, VectorBucketReference }; export type { IVectorBucketPolicyRef, VectorBucketPolicyReference };