用于mac os x应用程序开发的aws sdk

Ome*_*han 12 cocoa objective-c amazon-s3 amazon-web-services xcode4.2

我需要为MAC OS X开发一个应用程序,它将把所选文件上传到亚马逊网络服务.但为此我需要aws sdk for mac.我没有在网上找到任何东西.是否可以修改适用于iOSAWS SDK以便它可用于Mac?

此外,AWS SDK文档未说明如何将文件上载到S3.有没有人有如何做到这一点的例子?

谢谢

Amb*_*xon 7

我已经创建了一个AWS iOS SDK的分支,可以构建并用于Mac OS X开发.看看:https://github.com/amberdixon/aws-sdk-ios.在自述文件中,我已经包含了有关如何构建AWS iOS SDK框架的Mac OS X版本的说明.tomandersen repo似乎使用了更旧版本的iOS SDK,我创建的版本更新一些.


Cal*_*leb 6

通过判断这个话题的讨论AWS开发者论坛,似乎没有成为一个正式的AWS SDK适用于MacOS X还,但iOS版本已接近可用.该线程的一个贡献者发布了一个修改后的版本,该版本据称可以在MacOS X上至少用于某些服务.我没有任何个人经验,但似乎值得一看.

  • 我真正做的就是分叉iOS官方版本,然后进行一些非常小的改动 - 只需要满足编译器,就像在任何iOS代码中使用ifdef(不多),并交换一些头文件<UIKit>转到< Cocoa>等.对于大型项目,您可能希望使用自己的fork,因此您可以亲自查看所有更改.我将它用于S3,SimpleDB,SQS和IAM. (4认同)

jab*_*jab 5

之前的回答之后,我分叉并修改了适用于iOS的AWS SDK的v2.2,现在它为Mac OS X构建(在Yosemite 10.10.3中测试):https ://github.com/johnabender/aws-sdk- ios 还要结账tvos!

它们提供了一个命令行工具,用于将SDK组件打包为.framework对象.运行Scripts/SdkPackage.sh AWSS3,它将构建S3框架和任何依赖项.运行Scripts/Package.sh以构建所有框架./build如果您构建所有框架,那么构建的框架将在您的AWS开发工具包目录的根目录中结束.

但是,他们的文件非常糟糕.例如,如果您想使用访问密钥而不是Cognito身份,则必须完成代码并弄清楚如何(至少可能!).想列出S3存储桶的内容?祝好运.大多数必需的类甚至没有在文档中列出.而且你必须libz.dylib在你的项目中包含它以使用S3 SDK构建它们 - 它们也没有告诉你.

无论如何,这里有一些代码可以帮助任何人开始:

// This is helpful, also basically undocumented.
AWSLogger.defaultLogger().logLevel = .Verbose

let credentials = AWSStaticCredentialsProvider(accessKey: accessKeyId, secretKey: secretAccessKey)
let config = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: credentials)

let listRequest = AWSS3ListObjectsRequest()
listRequest.bucket = "mybucket"
listRequest.prefix = "folder/"

// The key name allows you to set up multiple, global S3 configurations
// -- in case you'd ever want to do that, in violation of OO programming principles.
// But there's no way to make S3 requests using only a local config.
AWSS3.registerS3WithConfiguration(config, forKey: "s3")

AWSS3.S3ForKey("s3").listObjects(listRequest).continueWithBlock { (task: AWSTask!) -> AnyObject! in
    if task.error != nil {
        NSLog("error %@", task.error)
    }
    if task.result != nil {
        NSLog("finished %@", task.result!.description)
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)