AWS SDK Integration

SkillFiles & storage

This 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.

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.

AWS SDK IntegrationStart free

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)

EnvironmentMethod
Local dev~/.aws/credentials or AWS_PROFILE
EC2/ECSInstance/task IAM role (automatic)
LambdaExecution role (automatic)
CI/CDAWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY env vars

Anti-Patterns

Anti-PatternFix
Hardcoded credentialsUse IAM roles, env vars, or credential chain
Single-region architectureUse multi-AZ, consider multi-region for DR
No retries on SDK callsSDK v3 retries automatically — configure maxAttempts
Scan instead of Query (DynamoDB)Design keys for Query access patterns
Synchronous Lambda calls in request pathUse 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