@altostra/core
Version:
Core library for shared types and logic
78 lines (77 loc) • 2.87 kB
TypeScript
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 {};