2017-10-20 24 views
1

Iは、画像アップロード玉葉古いアプリケーションコードは以下のそれを使用し、失敗し始めているがあります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} 

最新のポッドを使用するように更新しましたが、このエラーは引き続き発生します。

答えて

0

"s3.amazonaws.com"をエンドポイントとして使用しているように見えますが、代わりに "s3-us-west-1.amazonaws.com"のような地域固有のエンドポイントアドレスを使用する必要があります。地域によって分類された正しいエンドポイントのURLは次のとおりです。http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

+0

どのように正確に設定しますか?これは古い継承コードベースであるため、少し失われてしまいます。 – steventnorris

+0

ええ、あなたは私の上に足を持って、実際にその古いコードベースを読むことができます。私はまず:grep s3.amazonaws.com - 基本的には、そのURLがハードコードされているか、configに保存されているかを見つけなければなりません。 – CodeWriter23

+1

Gotcha。私はそれについていくつかの情報を見ましたが、私はそれが私が読んだものから非米国のバケツにしか適用されないと考えました。それも米国のものに適用されていることを認識していませんでした。 – steventnorris

関連する問題