Aws Sdk Swift Usage

作者 aws0d6167ad2e6d无许可证2.8K 个星标收录于 2026年10月8日更新于 2026年10月8日仓库今天更新

AWS SDK for Swift development patterns. Use when writing Swift code that uses AWS services via aws-sdk-swift package.

AI 生成的概览

使用 AWS SDK for Swift 编写 Swift 代码的参考模式。

功能
提供使用 AWS SDK for Swift 的编码模式与示例,涵盖异步入口点、基于结构体的客户端配置、凭证解析器、等待器、分页、预签名 URL 以及常见 S3 操作。它是仅含说明的参考资料,附带代码片段,而不是生成文件的工具。内容强调正确的配置类型与参数顺序。
适用场景
在编写或审查通过 aws-sdk-swift 包调用 AWS 服务的 Swift 代码时使用。它有助于客户端设置、凭证、分页和常见服务操作。
运行要求
该技能不附带脚本或软件包,仅为说明性内容。应用这些模式需要 Swift 工具链和 aws-sdk-swift 包,实际调用服务还需要 AWS 凭证和网络访问。

AWS SDK for Swift

Async Code Structure

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

swift
@mainstruct 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.

swift
// CORRECT - struct configlet 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
swift
import AWSS3import AWSDynamoDB
// Simple - auto-detects regionlet s3 = try await S3Client()let dynamo = try await DynamoDBClient()
// With regionlet s3 = try S3Client(region: "us-west-2")
// With config - parameters must be in declaration orderlet config = try await S3Client.S3ClientConfig(    useFIPS: true,    awsRetryMode: .adaptive,    maxAttempts: 5,    region: "us-west-2")let client = S3Client(config: config)
// With custom endpoint and credentialslet 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):

    swift
    import ClientRuntimelet 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

swift
import AWSSDKIdentityimport SmithyIdentity
// Static credentials - pass credential object directlylet creds = AWSCredentialIdentity(accessKey: "AKIA...", secret: "...")let resolver = StaticAWSCredentialIdentityResolver(creds)
// Assume role - REQUIRES underlying resolverlet underlying = try DefaultAWSCredentialIdentityResolverChain()let resolver = try STSAssumeRoleAWSCredentialIdentityResolver(    awsCredentialIdentityResolver: underlying,    roleArn: "arn:aws:iam::123456789012:role/MyRole",    sessionName: "session-name")
// Use in configlet config = try await S3Client.S3ClientConfig(    awsCredentialIdentityResolver: resolver,    region: "us-west-2")

Waiters

Import SmithyWaitersAPI. WaiterOptions requires maxWaitTime parameter:

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

Pagination

swift
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

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

Common Operations

swift
// Put object_ = try await client.putObject(input: PutObjectInput(    body: .data(data),    bucket: "bucket",    key: "key"))
// Get objectlet output = try await client.getObject(input: GetObjectInput(bucket: "bucket", key: "key"))let data = try await output.body?.readData()
// List bucketslet response = try await client.listBuckets(input: ListBucketsInput())for bucket in response.buckets ?? [] {    print(bucket.name ?? "")}

来源与署名

来源:aws/agent-toolkit-for-aws位于plugins/aws-core/skills/aws-sdk-swift-usage提交0d6167a

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架