我是新來的ios開發人員,我試圖將AWS集成到Swift編寫的移動應用程序中。我用下面的代碼的文件連接並上傳到S3:AWS IOS SDK身份驗證
let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "us-east-1:xxxx")
let serviceConfiguration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = serviceConfiguration
var uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.bucket = "my-bucket" // Bucket where the file is uploaded
uploadRequest.key = "myFile.txt" // The file's name on s3
uploadRequest.body = getFileURL() // The file's path on my computer
var transferManager = AWSS3TransferManager.defaultS3TransferManager()
transferManager.upload(uploadRequest).continueWithBlock({
(task: BFTask!) -> BFTask! in
if(task.error != nil){
println("Couldn't upload the file");
println(task.error.code)
println(task.error.localizedDescription)
}
return nil
})
這做什麼,我希望,它上傳到MYFILE.TXT S3。但它是通過我賦予「s3:*」權限的未知角色這樣做的。我想將這些操作限制爲已認證的角色。在AWS的文檔中,解決方案涉及使用Facebook,Twitter,亞馬遜,谷歌等,或者使開發人員通過身份驗證。
由於所有文檔都在objective-c或java中,所以我很難製作開發人員身份驗證標識。所以現在我試圖尋找替代方案。是否可以使用accessKey,secretKey對進行身份驗證?或者還有其他認證方式嗎?
如果沒有這種方式,我該如何實現開發人員身份驗證身份?
class DevAuthProvider: AWSAbstractCognitoIdentityProvider{
var _token: String!
var _logins: [NSObject : AnyObject ]!
var someURL: String!
override var token: String {
get {
return _token
}
}
override var logins: [NSObject : AnyObject]! {
get {
return _logins
}
set {
_logins = newValue
}
}
override func getIdentityId() -> BFTask! {
if self.identityId != nil {
return BFTask(result: self.identityId)
}
else{
return BFTask(result: nil).continueWithBlock({ (task) -> AnyObject! in
if self.identityId == nil {
return self.refresh()
}
return BFTask(result: self.identityId)
})
}
}
override func refresh() -> BFTask! {
let task = BFTaskCompletionSource()
let request = AFHTTPRequestOperationManager()
request.GET(someURL, parameters: nil, success: { (request: AFHTTPRequestOperation!, response: AnyObject!) -> Void in
var tmp = NSMutableDictionary()
tmp.setObject("temp", forKey: "App")
self.logins = tmp as [NSObject : AnyObject]
let properties: NSDictionary = response.objectForKey("properties") as! NSDictionary
let amazonId = properties.objectForKey("amazon_identity") as! String
let amazonToken = properties.objectForKey("token") as! String
self.identityId = amazonId
self._token = amazonToken
task.setResult(response)
}, failure: {(request: AFHTTPRequestOperation!, error: NSError!) -> Void in
task.setError(error)
})
return task
}
}
我使用下面的代碼作爲一個開始,這個類的一個實例將被用來實例化一個AWSCognitoCredentialsProvider,但我不知道它是如何工作的,我應該如何使用它。具體來說,get請求中的URL應該是我獲得授權令牌的權利?如果是這樣,那會是什麼?
任何幫助表示讚賞
現在可以將後端替換爲lamdba嗎? – cdub
是的,你可以使用Lambda。 –