giuseppe-trisciuoglio/aws-cloudformation-dynamodb
Provides AWS CloudFormation patterns for DynamoDB tables, GSIs, LSIs, auto-scaling, and streams. Use when creating DynamoDB tables with CloudFormation, configuring primary keys, local/global secondary indexes, capacity modes (on-demand/provisioned), point-in-time recovery, encryption, TTL, and implementing template structure with Parameters, Outputs, Mappings, Conditions, cross-stack references.
npx skills add https://github.com/giuseppe-trisciuoglio/developer-kit --skill aws-cloudformation-dynamodb
Provides production-ready NoSQL database infrastructure patterns using AWS CloudFormation templates with DynamoDB tables, GSIs, LSIs, auto-scaling, encryption, TTL, and streams.
Covers DynamoDB tables, primary keys, secondary indexes (GSI/LSI), capacity modes, auto-scaling, encryption, TTL, streams, and best practices for parameters, outputs, and cross-stack references.
Creating DynamoDB tables, configuring keys and indexes, setting capacity modes, implementing auto-scaling, enabling encryption/TTL/streams, and organizing CloudFormation templates.
Follow these steps to create DynamoDB tables with CloudFormation:
aws cloudformation validate-template before deployment10. Deploy Stack: Use aws cloudformation create-stack or update-stack
11. Monitor Events: Check aws cloudformation describe-stack-events for failures or ROLLBACK status
12. Handle Rollback: On failure, review events for resource errors, fix the template, and re-deploy
| Resource Type | Purpose |
|---------------|---------|
| AWS::DynamoDB::Table | Create DynamoDB table |
| AWS::ApplicationAutoScaling::ScalableTarget | Auto scaling configuration |
| AWS::ApplicationAutoScaling::ScalingPolicy | Scaling policies |
| AWS::KMS::Key | KMS key for encryption |
| AWS::IAM::Role | IAM roles for auto scaling |
| BillingMode | PAY_PER_REQUEST or PROVISIONED |
| SSESpecification | Server-side encryption |
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: !Sub "${AWS::StackName}-table"
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: !Sub "${AWS::StackName}-table"
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
- AttributeName: gsi-pk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: gsi-index
KeySchema:
- AttributeName: gsi-pk
KeyType: HASH
Projection:
ProjectionType: ALL
SessionTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: !Sub "${AWS::StackName}-sessions"
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: sessionId
AttributeType: S
KeySchema:
- AttributeName: sessionId
KeyType: HASH
TimeToLiveSpecification:
AttributeName: expiresAt
Enabled: true
ScalableTarget:
Type: AWS::ApplicationAutoScaling::ScalableTarget
Properties:
MaxCapacity: 100
MinCapacity: 5
ResourceId: !Sub "table/${DynamoDBTable}"
RoleARN: !GetAtt AutoScalingRole.Arn
ScalableDimension: dynamodb:table:ReadCapacityUnits
ServiceNamespace: dynamodb
See references/complete-examples.md for more complete examples including encryption, streams, auto scaling, and production tables.
AWSTemplateFormatVersion: 2010-09-09
Description: DynamoDB table with GSI and auto-scaling
Parameters:
TableName:
Type: String
Default: my-table
BillingMode:
Type: String
Default: PAY_PER_REQUEST
Resources:
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: !Ref TableName
BillingMode: !Ref BillingMode
Outputs:
TableName:
Value: !Ref DynamoDBTable
TableArn:
Value: !GetAtt DynamoDBTable.Arn
See references/advanced-configuration.md for detailed Parameters, Mappings, Conditions, Outputs, IAM roles, and cross-stack references.
10. Use Conditions for environment-specific configurations
Table already exists: Use unique table names or stack deletion policy
GSI creation fails: Verify attribute definitions include GSI attributes
Auto-scaling not working: Check IAM role permissions and service-linked role
TTL not expiring: Ensure TTL attribute is Number type, not String
Streams not enabled: Can only enable streams during table creation
Encryption errors: Verify KMS key exists in same region as table
Take giuseppe-trisciuoglio/aws-cloudformation-dynamodb from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.