AWS S3 Transfer Manager挂起32kb

时间:2013-05-11 23:46:05

标签: ios amazon-web-services amazon-s3

我在iOS中使用AWS S3TransferManager时遇到了一个奇怪的问题。当我使用短期凭据发送它们时,我的putObjectRequests似乎挂起了32kb。以下是我的应用设置的方式:

我有一个模型而不是上传图像到S3。它使用以下方法:

- (void)putFileToS3:(NSData *)file withFilename:(NSString *)filename
{
  S3PutObjectRequest *por = [[S3PutObjectRequest alloc] initWithKey:filename inBucket:@"my-bucket"];
  por.data = file;
  por.cannedACL = [S3CannedACL publicRead];
  [self.tm upload:por];
}

self.tm是此对象的s3TransferManager属性。相关的部分是在对象初始化期间设置的,如下所示:

self.s3 = [[AmazonS3Client alloc] initWithAccessKey:accessKey withSecretKey:secretKey];
self.tm = [S3TransferManager new];
self.tm.s3 = self.s3;
self.tm.delegate = self;

s3和tm是强大的属性:

@property (strong, nonatomic) AmazonS3Client *s3;
@property (strong, nonatomic) S3TransferManager *tm;

当我第一次测试时,我只是将accessKeyId和secretAccessKey粘贴到对象中。但是,这不是推荐的方法,所以我在我的服务器上设置了STS,现在正在应用程序中使用的服务器上生成短期凭据。

我的ruby服务器正在使用ruby SDK生成短期凭据,如下所示:

sts = AWS::STS.new
policy = AWS::STS::Policy.new
policy.allow :actions => ["s3:*"], :resources => "arn:aws:s3:::my-app-bucket/#{self.id}/*"
session = sts.new_federated_session "plc_user_#{id}",:policy => policy

代码仍然有效 - 除了 - 现在我正在使用短期凭证,所有传输都停止在32768字节传输。小于那的文件就可以了,文件更大只是永远挂在那里。

有没有人遇到过类似的问题?此处的问题是凭据,上传代码还是其他什么?

0 个答案:

没有答案