UNPKG

@altostra/core

Version:

Core library for shared types and logic

70 lines (69 loc) 2.52 kB
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;