| 测试已测试 | ✓ |
| Lang语言 | SwiftSwift |
| 许可 | MIT |
| Released上次发布 | 2016年5月 |
| SPM支持 SPM | ✗ |
由 Jiantang Li 维护。
| 依赖 | |
| AlamofireDomain | = 2.1.0 |
| SWXMLHash | ~> 2.0 |
一个基于 Alamofire 的请求管理器,它将请求序列化到 AWS S3(亚马逊简单存储解决方案)。
AmazonS3RequestManager 还包括一个请求序列化器,可用于创建任何其他网络方法的 NSURLRequest 对象。
首先创建管理器的实例。
let amazonS3Manager = AmazonS3RequestManager(bucket: myAmazonS3Bucket,
region: .USStandard,
accessKey: myAmazonS3AccessKey,
secret: myAmazonS3Secret)以响应对象获取对象
amazonS3Manager.getObject("myFolder/fileName.jpg")将对象保存到文件
let destination: NSURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
amazonS3Manager.downloadObject("myFolder/fileName.jpg", saveToURL: destination)let fileURL: NSURL = NSURL(fileURLWithPath: "pathToMyObject")
amazonS3Manager.putObject(fileURL, destinationPath: "pathToSaveObjectTo/fileName.jpg")amazonS3Manager.deleteObject("myFolder/fileName.jpg")AmazonS3RequestManager 包含一个自定义数据响应序列化器,用于解析 Amazon S3 服务的错误。
amazonS3Manager.getObject("myFolder/fileName.jpg")
.responseS3Data { (response) -> Void in
// Handle Response Data or Error
}AmazonS3RequestManager 提供了简单的 API 以获取和设置容器和对象的 ACL。
您可以使用 GET 请求获取在请求管理器上设置的当前容器的 ACL
amazonS3Manager.getBucketACL()或者使用 GET 请求获取容器中的对象
amazonS3Manager.getACL(forObjectAtPath: "myFolder/fileName.jpg")您可以通过发送一个 PUT 请求来为当前存储桶设置ACL
amazonS3Manager.setBucketACL(AmazonS3PredefinedACL.Public)或者在桶中的对象上设置
amazonS3Manager.setACL(forObjectAtPath: "myFolder/fileName.jpg", acl: AmazonS3PredefinedACL.Public)同时在上传对象时也可以通过使用可选参数来设置对象的ACL。
如果Amazon S3服务提供的预定义ACL不足以提供足够的控制,您可以使用AmazonS3ACLPermissionGrant和AmazonS3CustomACL创建自定义ACL
AmazonS3ACLPermissionGrant授予多个用户/用户组单一权限。AmazonS3CustomACL由多个AmazonS3ACLPermissionGrant组成,可以创建任何您想要创建的权限系列。
给予所有用户读取存储桶的权限
let readPermission = AmazonS3ACLPermissionGrant(permission: .Read, grantee: .AllUsers)
amazonS3Manager.setBucketACL(readPermission)给予所有用户读取存储桶的权限,认证用户写入存储桶的权限,以及两个给定电子邮箱地址和用户ID的用户完全控制
let readPermission = AmazonS3ACLPermissionGrant(permission: .Read, grantee: .AllUsers)
let writePermission = AmazonS3ACLPermissionGrant(permission: .Write, grantee: .AuthenticatedUsers)
let fullControlPermission = AmazonS3ACLPermissionGrant(permission: .FullControl, grantees: [.EmailAddress("[email protected]"), .UserID("my-user-id")])
let customACL = AmazonS3CustomACL(grants: [readPermission, writePermission, fullControlPermission])
amazonS3Manager.setBucketACL(customACL)