2016-04-08 7 views
2

Pour diverses raisons, je ne peux pas utiliser les SDK AWS et effectuer des appels de repos aux API. J'ai compris l'authentification mais j'ai besoin de comprendre quelles ressources appeler. La plupart des documents AWS pointent vers leurs SDK. Comment puis-je comprendre des appels de repos, par exemple AWS Key Management (KMS)?AWS Rest API sans SDK

Répondre

0

Consultez la documentation des actions KMS AWS ici:
http://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html

Liste des critères d'évaluation pour tous les services AWS:

Par exemple, KMS en nous-est est kms.us-Est 1.amazonaws .com

Exemples sur les requêtes HTTPS aux points d'extrémité AWS, et comment signer la demande:
http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html

Ainsi, l'URL de base pour KMS ListAliases serait (avant de signer):
https://kms.us-east-1.amazonaws.com/?Action=ListAliases&Version=2010-05-08

0

Voici un exemple de faire un objet PUT aux services web amazon AWS via des commandes reposant dans rapide 4 pour ios. Je ne pouvais pas trouver cela n'importe où sur internet, alors profitez-en. Je devais bricoler moi-même. Mon bucket est actuellement mis en lecture/écriture publique. Je pense que pour ajouter un nom d'utilisateur/mot de passe (ID de clé d'accès et clé d'accès secrète) à cela sera fait à travers les paramètres. Cette fonction restRequest possède un paramètre dictionnaire dans lequel elle peut être ajoutée. Mais d'expérimenter avec la même écriture via Postman, je pense que le service Web Amazon attend réellement que l'en-tête combiné nommé "Autorisation". Je ne sais pas exactement comment cela fonctionne, mais Postman a AWS comme un type de connexion, alors allez expérimenter là. J'ai obtenu ma fonction reposRequest reposful d'un exemple reposant quelque part sur débordement de pile.

func restRequest(url:String, method: String, sBody: String , 
       params: [String: String], completion: @escaping ([AnyObject])->()){ 
    if let nsURL = NSURL(string:url) { 
     let request = NSMutableURLRequest(url: nsURL as URL) 
     if method == "PUT" { 
      request.httpMethod = "PUT" 
      for thisOne in params { 
       request.setValue(thisOne.value, forHTTPHeaderField: thisOne.key) 
      } 

      request.httpBody = "some text in the file we are putting" 



     } 
     // Add other verbs here 

     let task = URLSession.shared.dataTask(with: request as URLRequest) { 
      (data, response, error) in 
      do { 

       // what happens if error is not nil? 
       // That means something went wrong. 

       // Make sure there really is some data 
       if let data = data { 
        let response = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) 
        completion(response as! [AnyObject]) 
       } 
       else { 
        // Data is nil. 
       } 
      } catch let error as NSError { 
       print("json error: \(error.localizedDescription)") 
      } 
     } 
     task.resume() 
    } 
    else{ 
     // Could not make url. Is the url bad? 
     // You could call the completion handler (callback) here with some value indicating an error 
    } 
} 

et de l'appeler comme ceci:

let urlString = "https://bucketname.s3.amazonaws.com/test.txt" 

     restRequest(url: urlString, method: "PUT", sBody: sData, params: [  "Date" : "20180125T214827Z" ]) { 
      (result) in 

      // Handle result here. 
      print("restRequest result : \(result)") 
     }