dynamo.cloudformation.yaml (197 lines of code) (raw):

AWSTemplateFormatVersion: 2010-09-09 Description: 'Mobile Purchases DynamoDB' Parameters: Stack: Description: Stack name Type: String App: Description: Application name Type: String Stage: Description: Stage name Type: String AllowedValues: - CODE - PROD Resources: UserSubscriptionEventsTableV2: Type: AWS::DynamoDB::Table Properties: TableName: !Sub ${App}-${Stage}-subscription-events-v2 AttributeDefinitions: - AttributeName: subscriptionId AttributeType: S - AttributeName: timestampAndType AttributeType: S - AttributeName: date AttributeType: S - AttributeName: timestamp AttributeType: S KeySchema: - AttributeName: subscriptionId KeyType: HASH - AttributeName: timestampAndType KeyType: RANGE GlobalSecondaryIndexes: - IndexName: date-timestamp-index-v2 KeySchema: - AttributeName: date KeyType: HASH - AttributeName: timestamp KeyType: RANGE Projection: ProjectionType: ALL PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: false BillingMode: PAY_PER_REQUEST SSESpecification: SSEEnabled: true TimeToLiveSpecification: Enabled: true AttributeName: ttl Tags: - Key: Stage Value: !Ref Stage - Key: Stack Value: !Ref Stack - Key: App Value: !Ref App - Key: devx-backup-enabled Value: true SubscriptionTable: Type: AWS::DynamoDB::Table Properties: TableName: !Sub ${App}-${Stage}-subscriptions AttributeDefinitions: - AttributeName: subscriptionId AttributeType: S - AttributeName: endTimestamp AttributeType: S KeySchema: - AttributeName: subscriptionId KeyType: HASH PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true BillingMode: PAY_PER_REQUEST SSESpecification: SSEEnabled: true TimeToLiveSpecification: Enabled: true AttributeName: ttl StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES GlobalSecondaryIndexes: - IndexName: ios-endTimestamp-revalidation-index-with-platform KeySchema: - AttributeName: subscriptionId KeyType: HASH - AttributeName: endTimestamp KeyType: RANGE Projection: NonKeyAttributes: - autoRenewing - platform - receipt ProjectionType: INCLUDE Tags: - Key: Stage Value: !Ref Stage - Key: Stack Value: !Ref Stack - Key: App Value: !Ref App - Key: devx-backup-enabled Value: true SubscriptionParallelTestTable: Type: AWS::DynamoDB::Table Properties: TableName: !Sub ${App}-${Stage}-subscriptions-parallel-test AttributeDefinitions: - AttributeName: subscriptionId AttributeType: S - AttributeName: endTimestamp AttributeType: S KeySchema: - AttributeName: subscriptionId KeyType: HASH PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true BillingMode: PAY_PER_REQUEST SSESpecification: SSEEnabled: true TimeToLiveSpecification: Enabled: true AttributeName: ttl StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES GlobalSecondaryIndexes: - IndexName: ios-endTimestamp-revalidation-index KeySchema: - AttributeName: subscriptionId KeyType: HASH - AttributeName: endTimestamp KeyType: RANGE Projection: NonKeyAttributes: - autoRenewing - receipt ProjectionType: INCLUDE Tags: - Key: Stage Value: !Ref Stage - Key: Stack Value: !Ref Stack - Key: App Value: !Ref App - Key: devx-backup-enabled Value: true UserSubscriptionTable: Type: AWS::DynamoDB::Table Properties: TableName: !Sub ${App}-${Stage}-user-subscriptions AttributeDefinitions: - AttributeName: subscriptionId AttributeType: S - AttributeName: userId AttributeType: S KeySchema: - AttributeName: userId KeyType: HASH - AttributeName: subscriptionId KeyType: RANGE PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true BillingMode: PAY_PER_REQUEST SSESpecification: SSEEnabled: true StreamSpecification: StreamViewType: NEW_IMAGE GlobalSecondaryIndexes: - IndexName: subscriptionId-userId KeySchema: - AttributeName: subscriptionId KeyType: HASH - AttributeName: userId KeyType: RANGE Projection: ProjectionType: ALL Tags: - Key: Stage Value: !Ref Stage - Key: Stack Value: !Ref Stack - Key: App Value: !Ref App - Key: devx-backup-enabled Value: true Outputs: SubscriptionTableStream: Description: The ARN of the dynamo DB stream Value: !GetAtt SubscriptionTable.StreamArn Export: Name: !Sub ${App}-${Stage}-subscriptions-stream-arn UserSubscriptionTableStream: Description: The ARN of the dynamo DB stream Value: !GetAtt UserSubscriptionTable.StreamArn Export: Name: !Sub ${App}-${Stage}-user-subscriptions-stream-arn