AWS Objective-C Загрузка изображений

У меня есть старое приложение, загрузка изображений которого стала неудачной, код, который использовался ниже:

dispatch_semaphore_t sema = dispatch_semaphore_create (0);

NSError * __block anError = nil;

AWSS3PutObjectRequest *por = [AWSS3PutObjectRequest new];
por.key = key;
por.bucket = bucket;
por.contentType = @"image/png";
por.contentLength = [NSNumber numberWithUnsignedLong:[UIImagePNGRepresentation(image) length]];
por.body = UIImagePNGRepresentation(image);
por.ACL = AWSS3ObjectCannedACLPublicRead;
[[AWSS3 defaultS3] putObject:por completionHandler:^(AWSS3PutObjectOutput * _Nullable response, NSError * _Nullable error) {
    anError = error;
    dispatch_semaphore_signal(sema);
}];

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

if (anError) {
    NSException *exception = [NSException exceptionWithName:@"NoahPutObjectException" reason:[anError description] userInfo:nil];
    @throw exception;
}

Я могу подтвердить, что ведро не изменилось и находится в правильном регионе. Я получаю сообщение об ошибке:

   Error Domain=com.amazonaws.AWSS3ErrorDomain Code=0 "(null)" UserIn

fo={RequestId=F5B5BFDB18414371, 
    Bucket=BUCKETREDACTED, HostId=HOSTIDREDACTED, 
    Message=The bucket you are attempting to access must be addressed 
using the specified endpoint. Please send all future requests to this endpoint., Code=PermanentRedirect, 
    Endpoint=s3.amazonaws.com}

Я обновился до последней версии pod, но все еще получаю эту ошибку.

1 ответ

Похоже, вы используете "s3.amazonaws.com" в качестве конечной точки, и вместо этого вам нужно использовать адрес конечной точки, специфичный для региона, например "s3-us-west-1.amazonaws.com". Правильные URL-адреса конечных точек в разбивке по регионам можно найти здесь: http://docs.aws.amazon.com/general/latest/gr/rande.html

Другие вопросы по тегам