GitHub Hot Board

GitHub Hot Board · Archiwum repozytorium

soto-project/soto

Swift SDK for AWS that works on Linux, macOS and iOS (Opis pochodzi z samego repozytorium.)

Dane na October 25soto-project

Najlepsze miejsce

#29

Przełomy na żywo

997

Wszystkich gwiazdek

94

Wszystkich forków

4

Dni w rankingach (30 d)

4 dni na tablicach · +1 gwiazdek w 30 dni · ~+0/dzień4 dni z rzędu

Status projektuLicencja: Apache-2.0Ostatni push: October 25Otwarte issues (z PR): 8

Zbierane od 2026-10-25; nieznane = jeszcze nie zebrane

Wklej odznakę do swojego README · soto-project/soto[![Wklej odznakę do swojego README](https://git.vaiox.xyz/api/badge/soto-project/soto.svg)](https://git.vaiox.xyz/pl/repo/soto-project/soto)
<a href="https://git.vaiox.xyz/pl/repo/soto-project/soto"><img src="https://git.vaiox.xyz/api/badge/soto-project/soto.svg" alt="Wklej odznakę do swojego README" height="20"></a>

Dokumentacja projektu

Soto for AWS

sswg:graduated|104x20 Swift 5.10

Soto is a Swift language SDK for Amazon Web Services (AWS), working on Linux, macOS and iOS. This library provides access to all AWS services. The service APIs it provides are a direct mapping of the REST APIs Amazon publishes for each of its services. Soto is a community supported project and is in no way affiliated with AWS.

Table of Contents

Structure

The library consists of three parts

  1. soto-core which does all the core request encoding and signing, response decoding and error handling.
  2. The service api files which define the individual AWS services and their commands with their input and output structures.
  3. The CodeGenerator which builds the service api files from the JSON model files supplied by Amazon.

Swift Package Manager

Soto uses the Swift Package Manager to manage its code dependencies. To use Soto in your codebase it is recommended you do the same. Add a dependency to the package in your own Package.swift dependencies.

    dependencies: [
        .package(url: "https://github.com/soto-project/soto.git", from: "7.0.0")
    ],

Then add target dependencies for each of the Soto targets you want to use.

    targets: [
        .target(name: "MyApp", dependencies: [
            .product(name: "SotoS3", package: "soto"),
            .product(name: "SotoSES", package: "soto"),
            .product(name: "SotoIAM", package: "soto")
        ]),
    ]
)

Alternatively if you are using Xcode 11 or later you can use the Swift Package Manager integration and add a dependency to Soto through that.

Configuring Credentials

Before using the SDK, you will need AWS credentials to sign all your requests. Credentials can be provided to the library in the following ways.

  • Environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
  • ECS container IAM policy
  • EC2 IAM instance profile
  • Shared credentials file in your home directory
  • Static credentials provided at runtime

You can find out more about credential providers here

Using Soto

To use Soto you need to create an AWSClient and a service object for the AWS service you want to work with. The AWSClient provides all the communication with AWS and the service object provides the configuration and APIs for communicating with a specific AWS service. More can be found out about AWSClient here and the AWS service objects here.

import SotoS3 //ensure this module is specified as a dependency in your package.swift

let bucket = "my-bucket"

let client = AWSClient(
    credentialProvider: .static(accessKeyId: "Your-Access-Key", secretAccessKey: "Your-Secret-Key"),
    httpClientProvider: .createNew
)
let s3 = S3(client: client, region: .uswest2)

func createBucketPutGetObject() async throws -> S3.GetObjectOutput {
    // Create Bucket, Put an Object, Get the Object
    _ = try await s3.createBucket(bucket: bucket)
    // Upload text file to the s3
    let bodyData = "hello world"
    _ = try await s3.putObject(
        acl: .publicRead,
        body: .string(bodyData),
        bucket: bucket,
        key: "hello.txt"
    )
    // download text file just uploaded to S3
    let response = try await s3.getObject(bucket: bucket, key: "hello.txt")
    // print contents of response
    if let body = response.body?.asString() {
        print(body)
    }
    return response
}

Build Plugin

Soto is a very large package. If you would rather not include it in your package dependencies you can instead use the SotoCodeGenerator Swift Package Manager build plugin to generate the Swift source code for only the services/operations you actually need. Find out more here.

Documentation

API Reference

Visit soto.codes to browse the user guides and api reference. As there is a one-to-one correspondence with AWS REST api calls and the Soto api calls, you can also use the official AWS documentation for more detailed information about AWS commands.

User guides

Additional user guides for specific elements of Soto are available

Contributing

We welcome and encourage contributions from all developers. Please read CONTRIBUTING.md for our contributing guidelines.

License

Soto is released under the Apache License, Version 2.0. See LICENSE for details.

Backers

Support development of Soto by becoming a backer

Aktualne miejsca

  • 29

    Przełomy na żywo

    997 gwiazdek · 94 fork · Gwiazdek do następnej linii

    Przełomy →

Przebieg z 30 dni

Skumulowane gwiazdki

Przebieg miejsc

Dzienny przyrost

Sąsiedzi rankingu na tej samej tablicy · Przełomy

Podobne projekty · wspólne tematy

← Powrót do rankingów