2016-04-08 3 views
2

По целому ряду причин я не могу использовать AWS SDK и должен переадресовывать вызовы API. Я выяснил аутентификацию, но мне нужно понять, какие ресурсы можно назвать. Большая часть документации AWS указывает на их SDK. Как я могу узнать о вызовах отдыха, скажем, управление ключами AWS (KMS)?AWS Rest API без SDK

ответ

0

Смотрите действия документации AWS KMS здесь:
http://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html

Список АМС конечных точек для всех услуг:

Например, КМС в нас-восток kms.us-восток-1.amazonaws .com

Примеры запросов по протоколу HTTPS к АМС конечных точек, и как подписать запрос:
http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html

Таким образом, базовый URL для KMS ListAliases будет (до подписания):
https://kms.us-east-1.amazonaws.com/?Action=ListAliases&Version=2010-05-08

0

Это пример выполнения объекта поставленного на AWS веб-сервисы Amazon с помощью успокоительных команд в быстрых 4 для ИОС. Я не мог найти это нигде в Интернете, так что наслаждайтесь. Я должен был сам это сделать. В настоящее время мое ведро настроено на публичное чтение/запись. Я думаю, что для добавления имени пользователя/пароля (ключ доступа к ключам и секретный ключ доступа) это будет выполняться с помощью параметров. Эта функция restRequest имеет параметр словаря, где он может быть добавлен. Но, экспериментируя с тем же письмом через Postman, я думаю, что веб-сервис Amazon действительно ожидает, что это будет объединенный заголовок с именем «Авторизация». Я точно не знаю, как это работает, но Postman имеет AWS как тип входа, поэтому идите экспериментировать. Я получил свою restRequest restful функцию из успокоительного примера где-то при переполнении стека.

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

И называть это так:

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)") 
     } 
Смежные вопросы