Arbeiten mit S3 und Cloud-Speichern in Swift (iOS/macOS): AWSS3 und Amplify

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit S3 und Cloud-Speichern in Swift (iOS/macOS)



In der modernen Entwicklung von mobilen und Desktop-Anwendungen mit Swift besteht häufig die Notwendigkeit, große Datenmengen zu speichern und zu übertragen: Bilder, Videos, Benutzerdokumente. Amazon S3 (Simple Storage Service) ist eine der beliebtesten Cloud-Lösungen für diese Aufgaben. In diesem Artikel werden wir erläutern, wie man S3 in Swift-Anwendungen für iOS und macOS mit dem offiziellen SDK von Amazon – AWSS3 – integriert, und auch einen höherwertigen Ansatz über das Framework Amplify betrachten.



Warum wird S3 in Swift-Anwendungen benötigt?

S3 bietet einen skalierbaren, sicheren und kostengünstigen Objektspeicher. Die Verwendung von S3 in Swift ermöglicht:

  • Die Auslagerung der Dateispeicherlast vom Gerät in die Cloud.
  • Den Zugriff auf Daten von jedem Gerät des Benutzers.
  • Die Nutzung integrierter Verschlüsselungs- und Zugriffskontrollmechanismen.
  • Die Integration mit anderen AWS-Diensten (Lambda, Cognito, CloudFront).


Einrichtung der Umgebung

Für den Einstieg wird Folgendes benötigt:

  • Ein AWS-Konto und ein erstellter S3-Bucket.
  • Xcode 14+ und ein Swift-Projekt (iOS 15+ / macOS 12+).
  • Installation der Abhängigkeiten über den Swift Package Manager (SPM).


Installation von AWSS3 über SPM

Fügen Sie das Paket in Package.swift oder über die Xcode-Oberfläche hinzu:

// File → Add Packages → Suche: https://github.com/aws-amplify/aws-sdk-ios-spm// Wählen Sie "AWSS3" in der Produktliste aus.

Importieren Sie die Bibliothek im Code:

import AWSS3


Basisbeispiel: Hochladen einer Datei in S3

Betrachten wir das einfachste Szenario – das Hochladen eines Bildes aus der Benutzergalerie. Für die Authentifizierung wird ein Cognito Identity Pool verwendet, aber im Testmodus können die Schlüssel direkt übergeben werden (nicht für die Produktion empfohlen).



Service-Konfiguration

let credentialsProvider = AWSStaticCredentialsProvider(    accessKey: "YOUR_ACCESS_KEY",    secretKey: "YOUR_SECRET_KEY")let configuration = AWSServiceConfiguration(    region: .USEast1,    credentialsProvider: credentialsProvider)AWSServiceManager.default().defaultServiceConfiguration = configuration


Hochladen einer Datei (upload)

func uploadImageToS3(imageData: Data, bucketName: String, key: String) {    let request = AWSS3TransferManagerUploadRequest()!    request.bucket = bucketName    request.key = key    request.body = imageData    request.contentLength = Int64(imageData.count)

let transferManager = AWSS3TransferManager.default() transferManager?.upload(request).continueWith { task -> Any? in if let error = task.error { print("Fehler beim Hochladen: \\(error.localizedDescription)") } else { print("Datei erfolgreich hochgeladen: \\(bucketName)/\\(key)") } return nil }}


Herunterladen einer Datei (download)

func downloadFromS3(bucketName: String, key: String, localURL: URL) {    let request = AWSS3TransferManagerDownloadRequest()!    request.bucket = bucketName    request.key = key    request.downloadingFileURL = localURL

let transferManager = AWSS3TransferManager.default() transferManager?.download(request).continueWith { task -> Any? in if let error = task.error { print("Fehler beim Herunterladen: \\(error.localizedDescription)") } else { print("Datei gespeichert unter \\(localURL.path)") } return nil }}


Verwendung von Amplify Storage für S3

Amplify bietet eine einfachere API, die die Details der Arbeit mit S3 verbirgt. Es erfordert eine vorherige Einrichtung über die CLI oder die Datei amplifyconfiguration.json.



Installation von Amplify

// Fügen Sie das Paket hinzu: https://github.com/aws-ampl                    

Empfehlungen