@altostra/core
Version:
Core library for shared types and logic
70 lines (69 loc) • 2.52 kB
TypeScript
import type { Integer } from "../../../common/CustomTypes/Integer";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { Ref } from "../IntrinsicFunctions";
import type { IamPolicyDocument } from "../PolicyDocument";
export declare type TableType = 'AWS::DynamoDB::Table';
export interface Table extends AwsResourceCommon {
Type: TableType;
DeletionPolicy?: 'Delete' | 'Retain';
Properties: {
AttributeDefinitions?: AttributeDefinition[];
BillingMode?: BillingMode;
GlobalSecondaryIndexes?: GlobalSecondaryIndex[];
KeySchema: KeySchema[];
LocalSecondaryIndexes?: LocalSecondaryIndex[];
PointInTimeRecoverySpecification?: PointInTimeRecoverySpecification;
ProvisionedThroughput?: ProvisionedThroughput;
SSESpecification?: SSESpecification;
StreamSpecification?: StreamSpecification;
TableName?: string;
Tags?: CloudFormationTags;
TimeToLiveSpecification?: TimeToLiveSpecification;
};
}
export interface TimeToLiveSpecification {
AttributeName: string;
Enabled: boolean;
}
export interface StreamSpecification {
StreamViewType: StreamViewType;
}
export declare type StreamViewType = 'KEYS_ONLY' | 'NEW_AND_OLD_IMAGES' | 'NEW_IMAGE' | 'OLD_IMAGE';
export interface SSESpecification {
SSEEnabled: boolean;
}
export declare type AttributeType = 'B' | 'N' | 'S';
export declare type BillingMode = 'PAY_PER_REQUEST' | 'PROVISIONED';
export interface AttributeDefinition {
AttributeName: string;
AttributeType: AttributeType;
}
export interface GlobalSecondaryIndex {
IndexName: string;
KeySchema: KeySchema[];
Projection: Projection;
ProvisionedThroughput?: ProvisionedThroughput;
}
export interface LocalSecondaryIndex {
IndexName: string;
KeySchema: KeySchema[];
Projection: Projection;
}
export interface ProvisionedThroughput {
ReadCapacityUnits: Integer;
WriteCapacityUnits: Integer;
}
export interface Projection {
NonKeyAttributes?: string[];
ProjectionType?: ProjectionType;
}
export declare type ProjectionType = 'ALL' | 'INCLUDE' | 'KEYS_ONLY';
export interface KeySchema {
AttributeName: string;
KeyType: KeyType;
}
export declare type KeyType = 'HASH' | 'RANGE';
export interface PointInTimeRecoverySpecification {
PointInTimeRecoveryEnabled?: boolean;
}
export declare function mkDynamoDbTablePolicy(tableNameRef: Ref, permissions: string[], effect?: 'Allow' | 'Deny'): IamPolicyDocument;