AWS SDK Integration
SkillFiles & storageThis skill adds AWS development knowledge to your AI, so it can help you build cloud infrastructure following AWS CDK best practices. It also guides cost optimization and applies serverless and event-driven architecture patterns to your projects.
Use AWS SDK Integration in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add AWS SDK Integration and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the AWS SDK Integration skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
After adding it, describe the AWS project you are working on and ask your AI to set up infrastructure with CDK or look for cost savings. The skill's source is available at github.com/zxkane/aws-skills.
What your AI can do with it
- Write AWS infrastructure code with CDK best practices
- Identify ways to reduce your AWS costs
- Design serverless and event-driven architectures
- Apply proven architecture patterns to AWS projects
What this skill tells your AI
The instructions your AI receives, as published by claude-dev-suite/claude-dev-suite in skills/cloud/aws/SKILL.md and read by Ahel’s review.
Node.js (SDK v3)
Client Setup
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { DynamoDBDocumentClient, PutCommand, GetCommand, QueryCommand } from '@aws-sdk/lib-dynamodb';
const client = new DynamoDBClient({ region: process.env.AWS_REGION });
const ddb = DynamoDBDocumentClient.from(client);
DynamoDB
// Put item
await ddb.send(new PutCommand({
TableName: 'Users',
Item: { pk: `USER#${id}`, sk: 'PROFILE', name, email, createdAt: Date.now() },
ConditionExpression: 'attribute_not_exists(pk)', // Prevent overwrite
}));
// Get item
const { Item } = await ddb.send(new GetCommand({
TableName: 'Users', Key: { pk: `USER#${id}`, sk: 'PROFILE' },
}));
// Query
const { Items } = await ddb.send(new QueryCommand({
TableName: 'Orders',
KeyConditionExpression: 'pk = :pk AND begins_with(sk, :prefix)',
ExpressionAttributeValues: { ':pk': `USER#${userId}`, ':prefix': 'ORDER#' },
}));
Lambda Invocation
import { LambdaClient, InvokeCommand } from '@aws-sdk/client-lambda';
const lambda = new LambdaClient({});
const { Payload } = await lambda.send(new InvokeCommand({
FunctionName: 'processOrder',
InvocationType: 'Event', // async ('RequestResponse' for sync)
Payload: JSON.stringify({ orderId }),
}));
SNS
import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
const sns = new SNSClient({});
await sns.send(new PublishCommand({
TopicArn: process.env.ORDER_TOPIC_ARN,
Message: JSON.stringify({ orderId, status: 'completed' }),
MessageAttributes: {
eventType: { DataType: 'String', StringValue: 'ORDER_COMPLETED' },
},
}));
CloudWatch Metrics
import { CloudWatchClient, PutMetricDataCommand } from '@aws-sdk/client-cloudwatch';
const cw = new CloudWatchClient({});
await cw.send(new PutMetricDataCommand({
Namespace: 'MyApp',
MetricData: [{
MetricName: 'OrderProcessingTime',
Value: durationMs,
Unit: 'Milliseconds',
Dimensions: [{ Name: 'Service', Value: 'OrderProcessor' }],
}],
}));
Python (boto3)
import boto3
# DynamoDB
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Users')
table.put_item(Item={'pk': f'USER#{id}', 'sk': 'PROFILE', 'name': name})
response = table.get_item(Key={'pk': f'USER#{id}', 'sk': 'PROFILE'})
# Lambda
lambda_client = boto3.client('lambda')
lambda_client.invoke(FunctionName='processOrder',
InvocationType='Event', Payload=json.dumps({'orderId': order_id}))
# SNS
sns = boto3.client('sns')
sns.publish(TopicArn=topic_arn, Message=json.dumps(payload))
Credentials (never hardcode)
| Environment | Method |
|---|---|
| Local dev | ~/.aws/credentials or AWS_PROFILE |
| EC2/ECS | Instance/task IAM role (automatic) |
| Lambda | Execution role (automatic) |
| CI/CD | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY env vars |
Anti-Patterns
| Anti-Pattern | Fix |
|---|---|
| Hardcoded credentials | Use IAM roles, env vars, or credential chain |
| Single-region architecture | Use multi-AZ, consider multi-region for DR |
| No retries on SDK calls | SDK v3 retries automatically — configure maxAttempts |
| Scan instead of Query (DynamoDB) | Design keys for Query access patterns |
| Synchronous Lambda calls in request path | Use async invocation or SQS |
Production Checklist
- IAM roles with least privilege
- No hardcoded credentials
- SDK retry configuration (
maxAttempts) - CloudWatch alarms on error metrics
- VPC endpoints for S3/DynamoDB (saves NAT costs)
- Resource tagging for cost allocation
Signals
- GitHub stars
- 40
- Forks
- 7
- Last commit
- Oct 2026
Ahel review
S4info
community integration, published by claude-dev-suite, not aws
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
aws- Source
- github.com/claude-dev-suite/claude-dev-suite
github.com/claude-dev-suite/claude-dev-suite