2017-10-20 22 views
1

J'ai une application plus Whos téléchargement d'image a commencé à défaut, le code utilisé ci-dessous:AWS Objective-C Image Télécharger

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; 
} 

Je peux confirmer que le compartiment n'a pas changé et se trouve dans la bonne région. L'erreur que je reçois est la suivante:

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} 

J'ai été mis à jour en utilisant le module le plus récent, mais je reçois toujours cette erreur.

Répondre

0

Il me semble que vous utilisez "s3.amazonaws.com" comme point de terminaison, et vous devez utiliser à la place une adresse de point de terminaison spécifique à la région comme "s3-us-west-1.amazonaws.com". Les URL de point de terminaison correctes, réparties par région, peuvent être trouvées ici: http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

+0

Comment exactement pourrais-je configurer cela? C'est une vieille base de code héritée, donc je suis un peu perdu dedans. – steventnorris

+0

Heh, vous avez une longueur d'avance sur moi, étant capable de lire cette vieille base de code. Je commencerais par: grep s3.amazonaws.com - en gros, vous devez trouver où cette URL est codée en dur ou stockée dans la configuration et la changer. – CodeWriter23

+1

Gotcha. J'ai vu quelques informations à ce sujet, mais je pensais que cela ne s'appliquait qu'aux seaux non américains d'après ce que j'avais lu. Je ne savais pas que cela s'appliquait aussi aux États-Unis. – steventnorris