UNPKG

@altostra/core

Version:

Core library for shared types and logic

78 lines (77 loc) 2.87 kB
import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString"; import type { Arn } from "../../CustomTypes/Arn"; import type { S3BucketName } from "../../CustomTypes/S3BucketName"; import type { AwsResourceCommon, CloudFormationTags } from "../common"; import type { CloudFormationValue } from "../IntrinsicFunctions"; export declare type BucketType = 'AWS::S3::Bucket'; export interface Bucket extends AwsResourceCommon { Type: BucketType; Properties?: S3BucketProperties; } export interface S3BucketProperties { AccelerateConfiguration?: object; AccessControl?: BucketAccessControl; AnalyticsConfigurations?: object; BucketEncryption?: object; BucketName?: S3BucketName; CorsConfiguration?: object; InventoryConfigurations?: object[]; LifecycleConfiguration?: object; LoggingConfiguration?: object; MetricsConfigurations?: object[]; NotificationConfiguration?: NotificationConfiguration; ObjectLockConfiguration?: object; ObjectLockEnabled?: boolean; PublicAccessBlockConfiguration?: PublicAccessBlockConfiguration; ReplicationConfiguration?: object; Tags?: CloudFormationTags; VersioningConfiguration?: object; WebsiteConfiguration?: object; OwnershipControls?: OwnershipControls; } export declare type BucketAccessControl = 'AuthenticatedRead' | 'AwsExecRead' | 'BucketOwnerFullControl' | 'BucketOwnerRead' | 'LogDeliveryWrite' | 'Private' | 'PublicRead' | 'PublicReadWrite'; export interface NotificationConfiguration { EventBridgeConfiguration?: EventBridgeConfiguration; LambdaConfigurations?: LambdaConfiguration[]; QueueConfigurations?: QueueConfiguration[]; TopicConfigurations?: TopicConfiguration[]; } export interface EventBridgeConfiguration { EventBridgeEnabled?: boolean; } interface NotificationConfigurationBase { Event: NonEmptyString; Filter?: NotificationFilter; } export interface LambdaConfiguration extends NotificationConfigurationBase { Function: CloudFormationValue<Arn>; } export interface QueueConfiguration extends NotificationConfigurationBase { Queue: CloudFormationValue<Arn>; } export interface TopicConfiguration extends NotificationConfigurationBase { Topic: CloudFormationValue<Arn>; } export interface NotificationFilter { S3Key: S3KeyFilter; } export interface S3KeyFilter { Rules: FilterRule[]; } export interface FilterRule { Name: 'prefix' | 'suffix'; Value: string; } export declare type ObjectOwnership = 'BucketOwnerEnforced' | 'BucketOwnerPreferred' | 'ObjectWriter'; export interface OwnershipControls { Rules: { ObjectOwnership: ObjectOwnership; }[]; } export interface PublicAccessBlockConfiguration { BlockPublicAcls?: boolean; BlockPublicPolicy?: boolean; IgnorePublicAcls?: boolean; RestrictPublicBuckets?: boolean; } export {};