aws-sdk-swift-usage

bởi aws

Các mẫu phát triển AWS SDK cho Swift. Sử dụng khi viết mã Swift sử dụng các dịch vụ AWS thông qua gói aws-sdk-swift.

npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-sdk-swift-usage

AWS SDK for Swift

Async Code Structure

All SDK operations are async. Use @main entry point:

@main
struct Main {
    static func main() async throws {
        let client = try await S3Client()
        // ... async operations
    }
}

CRITICAL: Use Struct Config Types

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.

// 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")

Client Creation

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.Object
  • DynamoDBClientTypes.AttributeValue
  • CloudWatchClientTypes.MetricDatum, CloudWatchClientTypes.Dimension
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"
)

Common 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):

    import ClientRuntime
    let httpConfig = HttpClientConfiguration()
    let httpClient = URLSessionHTTPClient(httpClientConfiguration: httpConfig)
    let config = try await S3Client.S3ClientConfig(
        region: "us-east-1",
        httpClientEngine: httpClient
    )
    
  • 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.

Credential Resolvers

import AWSSDKIdentity
import SmithyIdentity

// Static credentials - pass credential object directly
let creds = AWSCredentialIdentity(accessKey: "AKIA...", secret: "...")
let resolver = StaticAWSCredentialIdentityResolver(creds)

// Assume role - REQUIRES underlying resolver
let underlying = try DefaultAWSCredentialIdentityResolverChain()
let resolver = try STSAssumeRoleAWSCredentialIdentityResolver(
    awsCredentialIdentityResolver: underlying,
    roleArn: "arn:aws:iam::123456789012:role/MyRole",
    sessionName: "session-name"
)

// Use in config
let config = try await S3Client.S3ClientConfig(
    awsCredentialIdentityResolver: resolver,
    region: "us-west-2"
)

Waiters

Import SmithyWaitersAPI. WaiterOptions requires maxWaitTime parameter:

import AWSS3
import SmithyWaitersAPI

let client = try await S3Client()
_ = try await client.waitUntilBucketExists(
    options: WaiterOptions(maxWaitTime: 120.0),
    input: HeadBucketInput(bucket: "my-bucket")
)

Pagination

let input = ListObjectsV2Input(bucket: "my-bucket")
for try await page in client.listObjectsV2Paginated(input: input) {
    for object in page.contents ?? [] {
        print(object.key ?? "")
    }
}

Presigned URLs

let url = try await client.presignedURLForGetObject(
    input: GetObjectInput(bucket: "my-bucket", key: "file.pdf"),
    expiration: 3600
)

Common Operations

// Put object
_ = try await client.putObject(input: PutObjectInput(
    body: .data(data),
    bucket: "bucket",
    key: "key"
))

// Get object
let output = try await client.getObject(input: GetObjectInput(bucket: "bucket", key: "key"))
let data = try await output.body?.readData()

// List buckets
let response = try await client.listBuckets(input: ListBucketsInput())
for bucket in response.buckets ?? [] {
    print(bucket.name ?? "")
}

Thêm skills từ aws

analyzing-release-readiness
aws
Kích hoạt đánh giá mức độ sẵn sàng phát hành trước khi merge trên GitHub PR, GitLab MR hoặc nhánh cục bộ. Sử dụng khi người dùng muốn phân tích các thay đổi mã nguồn để đánh giá rủi ro, tính đúng đắn,…
scanning-with-aws-security-agent
aws
Chạy quét AWS Security Agent trên không gian làm việc — tải mã nguồn lên AWS, quét bằng dịch vụ Security Agent được quản lý, và trả về kết quả được xếp hạng, đã xác minh…
coordinating-multi-space-devops-agent
aws
Điều phối AWS DevOps Agent trên nhiều AgentSpaces từ một phiên Claude Code — định tuyến câu hỏi đến đúng không gian (prod vs staging vs knowledge),…
aws-security
aws
Bao gồm các dịch vụ và quy trình bảo mật AWS — phát hiện Security Hub V2 (OCSF), bộ kết nối, bộ tổng hợp, quy tắc tự động hóa và tóm tắt trạng thái bảo mật;…
querying-aws-sagemaker-catalog
aws
Chạy phân tích SQL trên các bảng metadata của SageMaker Catalog được xuất dưới dạng Apache Iceberg trong S3 Tables. Bao gồm các truy vấn quản trị, theo dõi tăng trưởng tài sản,…
agents-connect
aws
Sử dụng khi kết nối agent của bạn với API, công cụ hoặc dịch vụ bên ngoài qua Gateway, hoặc hạn chế quyền truy cập công cụ bằng chính sách Cedar. Xử lý thiết lập gateway, mục tiêu…
aurora-dsql
aws
Cung cấp và quản lý các cụm Aurora DSQL, kết nối qua psql hoặc DSQL Connectors, quản lý schema, chạy truy vấn, di chuyển từ MySQL, chẩn đoán query plan,…
transitgateway
aws
Cấu hình AWS Transit Gateway: tạo một hub trung tâm và đính kèm các VPC, phân đoạn lưu lượng bằng các bảng định tuyến, tập trung hóa lưu lượng ra và kiểm tra thông qua hub…