为AWS S3生成签名URL

时间:2015-06-26 12:37:47

标签: ios objective-c amazon-s3 aws-sdk-ios

我正在尝试为AWS S3创建一个已签名的网址,我只想要我的存储桶中的文件的网址,我不想将其用于上传/下载。

我已经尝试了AFNetworking,按照亚马逊文档的步骤进行操作,现在正在使用AWS iOS SDK。

到目前为止我有这个:

AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider        credentialsWithAccessKey:@"Access Key" secretKey:@"secret key"];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration    configurationWithRegion:AWSRegionUSWest2  credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;
AWSS3PreSignedURLBuilder * urlBuilder  = [[AWSS3PreSignedURLBuilder alloc]       initWithConfiguration:configuration];

AWSS3GetPreSignedURLRequest *preSignedURLRequest = [AWSS3GetPreSignedURLRequest new];
preSignedURLRequest.bucket = @"bucket-name";
preSignedURLRequest.key = @"/filename";
preSignedURLRequest.HTTPMethod = AWSHTTPMethodGET;
preSignedURLRequest.expires = [NSDate dateWithTimeIntervalSinceNow:3600];

 NSURL *preSignedURL = [urlBuilder getPreSignedURL:preSignedURLRequest];

NSLog(@"%@", preSignedURL);

我收到了很多关于代码被折旧的错误,但更重要的是我知道方法getPreSignedURL返回一个类型(AWSTask *),我的问题是如何将AWSTask转换为签名的url?

此外,我不打算将密钥留在我的代码中,这只是暂时的测试。

如果有人能帮我找到如何获得preSignedURL那将是一个很好的帮助。 感谢

3 个答案:

答案 0 :(得分:1)

您可以查看Taming the AWS framework to upload a large file to S3它还包括在swift中生成预签名的网址

答案 1 :(得分:0)

你试过S3BackgroundTransfer-Sample吗?它应该可以帮助你开始。

答案 2 :(得分:-1)

我假设您正在尝试处理后台上传/下载。为此,您可以使用AWSS3TransferUtility

您可以阅读有关http://docs.aws.amazon.com/mobile/sdkforios/developerguide/s3transferutility.html

的更多详情