npx skills add ...
npx skills add aws/agent-toolkit-for-aws --skill aws-sdk-swift-usage
npx skills add aws/agent-toolkit-for-aws --skill aws-sdk-swift-usage
AWS SDK for Swift development patterns. Use when writing Swift code that uses AWS services via aws-sdk-swift package.
All SDK operations are async. Use @main entry point:
NEVER use S3ClientConfiguration or DynamoDBClientConfiguration - these are DEPRECATED classes.
ALWAYS use the struct-based config types:
S3Client.S3ClientConfig (not S3ClientConfiguration)DynamoDBClient.DynamoDBClientConfig (not DynamoDBClientConfiguration)STSClient.STSClientConfig (not STSClientConfiguration)Config parameters MUST be in declaration order. Region is ALWAYS required when creating a config. Check the service client source for exact order.
All service clients follow the same pattern: <Service>Client with <Service>Client.<Service>ClientConfig.
Model types (structs/enums used in requests/responses) are namespaced under <Service>ClientTypes:
S3ClientTypes.Bucket, S3ClientTypes.ObjectDynamoDBClientTypes.AttributeValueCloudWatchClientTypes.MetricDatum, CloudWatchClientTypes.DimensionCommon config parameters (MUST follow declaration order):
awsCredentialIdentityResolver - Custom credentials
useFIPS - Enable FIPS endpoints
useDualStack - Enable dual-stack endpoints
awsRetryMode - Retry strategy (.adaptive, .standard, .legacy)
maxAttempts - Max retry attempts
region - AWS region
httpClientEngine - Custom HTTP client (requires HttpClientConfiguration parameter):
endpoint - Custom endpoint URL
For service-specific config options or exact parameter order, check Sources/Services/AWS<Service>/Sources/AWS<Service>/<Service>Client.swift in the SDK.
Import SmithyWaitersAPI. WaiterOptions requires maxWaitTime parameter:
// CORRECT - struct config
let config = try await S3Client.S3ClientConfig(region: "us-west-2")
let client = S3Client(config: config)
// WRONG - deprecated class
// let config = try await S3Client.S3ClientConfiguration(region: "us-west-2")import AWSS3
import AWSDynamoDB
// Simple - auto-detects region
let s3 = try await S3Client()
let dynamo = try await DynamoDBClient()
// With region
let s3 = try S3Client(region: "us-west-2")
// With config - parameters must be in declaration order
let config = try await S3Client.S3ClientConfig(
useFIPS: true,
awsRetryMode: .adaptive,
maxAttempts: 5,
region: "us-west-2"
)
let client = S3Client(config: config)
// With custom endpoint and credentials
let config = try await S3Client.S3ClientConfig(
awsCredentialIdentityResolver: resolver,
region: "us-west-2",
endpoint: "https://s3.custom-endpoint.com"
)