2016-04-04 27 views

Antwort

0

Auch auf der Suche nach diesem. Sie haben KMS API auf Javascript (Browser, Knoten), Android (Java) und sogar C++ (die möglicherweise auf iOS .. aber bitte funktionieren).

Aber nicht im iOS SDK. Seufzer.

+1

Ich ging die URL-Signatur-Route mit ihren REST-APIs. – sparkFinder

1

Wenn Sie in AWS S3 mit Ihrem AWS KMS CMK nach serverseitiger Verschlüsselung suchen, können Sie angeben, dass Sie die serverseitige Verschlüsselung für meine Daten in der Upload-Anforderung selbst durchführen müssen.

Der Code ist hier für das Hochladen von Bild zu AWS S3 mit Server-Verschlüsselung mit AWS KMS CMK (-Code in swift 3 geschrieben)

@IBAction func uploadButtonPressed(_ sender: AnyObject) { 
    if documentImageView.image == nil { 
     // Do something here 
    } else { 
     let image = documentImageView.image! // I picked image from my imageView named as "documentImageView". You can choose from wherever you want. 
     let fileManager = FileManager.default 
     let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("\(imageName!).jpeg") 
     let imageData = UIImageJPEGRepresentation(image, 0.99) 
     fileManager.createFile(atPath: path as String, contents: imageData, attributes: nil) 

     let fileUrl = NSURL(fileURLWithPath: path) 
     uploadRequest?.bucket = "S3BucketName" 
     uploadRequest?.key = "yourImageName.jpeg" 
     uploadRequest?.contentType = "image/jpeg" 
     uploadRequest?.body = fileUrl as URL! 
     uploadRequest?.serverSideEncryption = AWSS3ServerSideEncryption.awsKms 
     uploadRequest?.ssekmsKeyId = "Your AWS KMS CMK id" 
     uploadRequest?.uploadProgress = { (bytesSent, totalBytesSent, totalBytesExpectedToSend) -> Void in 
      DispatchQueue.main.async(execute: { 
       self.amountUploaded = totalBytesSent. // To show the amount of data uploaded 
       self.fileSize = totalBytesExpectedToSend 
      }) 
     } 

     let transferManager = AWSS3TransferManager.default() 
     transferManager?.upload(uploadRequest).continue(with: AWSExecutor.mainThread(), withSuccessBlock: { (taskk: AWSTask) -> Any? in 

      if taskk.error != nil { 
       // Error 
      } else { 
       // Handle success response 
      } 
      return nil 
     }) 
    } 
} 

. HINWEIS: Wenn Sie nicht Ihre AWS liefern KMS-CMK-ID an Eigenschaft ssekmsKeyId in der Upload-Anforderung erstellt AWS S3 eine Standard-CMK-ID für Ihr IAM (wenn Sie mit Ihren IAM-Anmeldeinformationen auf AWS S3 zugreifen) oder Root-Anmeldeinformationen (wenn Sie auf AWS S3 zugreifen) Verwenden Sie Ihre Root-Anmeldeinformationen). Eine weitere Verschlüsselung/Entschlüsselung erfolgt mit dieser Standard-CMK-ID nur bis Sie die Ihre CMK-ID in ssekmsKeyId Eigenschaft in Upload-Anforderung angeben.