我是新来的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。 –