Travailler avec S3 et les stockages cloud en Swift (iOS/macOS) : AWSS3 et Amplify

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec S3 et les stockages cloud en Swift (iOS/macOS)



Dans le développement moderne d'applications mobiles et de bureau en Swift, il est souvent nécessaire de stocker et de transférer de grands volumes de données : images, vidéos, documents utilisateurs. Amazon S3 (Simple Storage Service) est l'une des solutions cloud les plus populaires pour ces tâches. Dans cet article, nous allons voir comment intégrer S3 dans des applications Swift pour iOS et macOS en utilisant le SDK officiel d'Amazon — AWSS3, ainsi qu'une approche de plus haut niveau via le framework Amplify.



Pourquoi utiliser S3 dans les applications Swift ?

S3 fournit un stockage d'objets scalable, sécurisé et économique. L'utilisation de S3 en Swift permet de :

  • Décharger la charge de stockage des fichiers de l'appareil vers le cloud.
  • Assurer l'accès aux données depuis n'importe quel appareil de l'utilisateur.
  • Utiliser des mécanismes intégrés de chiffrement et de contrôle d'accès.
  • S'intégrer avec d'autres services AWS (Lambda, Cognito, CloudFront).


Configuration de l'environnement

Pour commencer, vous aurez besoin de :

  • Un compte AWS et un bucket S3 créé.
  • Xcode 14+ et un projet Swift (iOS 15+ / macOS 12+).
  • L'installation des dépendances via Swift Package Manager (SPM).


Installation d'AWSS3 via SPM

Ajoutez le paquet dans Package.swift ou via l'interface Xcode :

// File → Add Packages → rechercher : https://github.com/aws-amplify/aws-sdk-ios-spm// Sélectionnez "AWSS3" dans la liste des produits.

Dans le code, importez la bibliothèque :

import AWSS3


Exemple de base : téléchargement d'un fichier vers S3

Considérons le scénario le plus simple — le téléchargement d'une image depuis la galerie de l'utilisateur. Pour l'authentification, on utilise Cognito Identity Pool, mais en mode test, on peut passer les clés directement (non recommandé pour la production).



Configuration du service

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


Téléchargement du fichier (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("Erreur de téléchargement : \\(error.localizedDescription)") } else { print("Fichier téléchargé avec succès : \\(bucketName)/\\(key)") } return nil }}


Téléchargement du fichier (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("Erreur de téléchargement : \\(error.localizedDescription)") } else { print("Fichier sauvegardé dans \\(localURL.path)") } return nil }}


Utilisation d'Amplify Storage pour S3

Amplify fournit une API plus simple, masquant les détails du travail avec S3. Il nécessite une configuration préalable via CLI ou le fichier amplifyconfiguration.json.



Installation d'Amplify

// Ajoutez le paquet : https://github.com/aws-ampl                    

Recommendations