2016-04-08 30 views
2

Aus einer Vielzahl von Gründen kann ich AWS SDKs nicht verwenden und muss Ruhe auf die APIs aufrufen. Ich habe eine Authentifizierung gefunden, muss aber verstehen, welche Ressourcen angerufen werden müssen. Die meisten AWS-Dokumente verweisen auf ihre SDKs. Wie finde ich Ruhezeiten für, sagen wir AWS Key Management (KMS)?AWS Rest API ohne SDK

Antwort

0

Siehe Aktionen AWS KMS Dokumentation hier:
http://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html

Liste der AWS-Endpunkte für alle Dienste:

Zum Beispiel KMS in us-east ist kms.us-Ost-1.amazonaws .com

Beispiele auf HTTPS-Anfragen an AWS-Endpunkten und wie die Anfrage zu unterschreiben:
http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html

würde So kann die Basis-URL für KMS ListAliases (vor der Unterzeichnung):
https://kms.us-east-1.amazonaws.com/?Action=ListAliases&Version=2010-05-08

0

Dies ist ein Beispiel für ein PUT-Objekt AWS Amazon Web Service über erholsame Befehle in schnellen 4 für ios tun. Ich konnte das nirgendwo im Internet finden, also viel Spaß. Ich musste es selbst zusammensetzen. Mein Bucket ist derzeit auf öffentliches Lesen/Schreiben eingestellt. Ich denke, dass das Hinzufügen von Benutzername/Passwort (Access Key ID und Secret Access Key) durch Parameter erfolgt. Diese restRequest-Funktion hat einen Wörterbuchparameter, an dem sie hinzugefügt werden kann. Aber vom Experimentieren mit dem gleichen Schreiben über Postman denke ich, dass der Amazon Web Service das als kombinierten Header mit dem Namen "Authorization" erwartet. Ich bin mir nicht sicher, wie das genau funktioniert, aber Postman hat AWS als Login-Typ, also experimentieren Sie dort. Ich habe meine restRequest Ruhe-Funktion von einem erholsamen Beispiel irgendwo auf Stack-Überlauf.

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 
    } 
} 

Und es so nennen:

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)") 
     }