简体   繁体   中英

How to Upload Image in AWS s3 , getting error at upload time

I am Using latest SDK library of amazon for upload image to bucket. but getting error, here is my code

App Delegate code

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {


    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionAPSoutheast1
                                                                                                identityPoolId:AWS_IDENTITY_POOL_ID1];
    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionAPSoutheast1
                                                                     credentialsProvider:credentialsProvider];
    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

    return YES;
}

My View Controller Code is

    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    NSString *downloadingFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"downloaded-myImage.jpg"];
    NSURL *downloadingFileURL = [NSURL fileURLWithPath:downloadingFilePath];
    imageView.image = [UIImage imageWithContentsOfFile:downloadingFilePath];

    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
    uploadRequest.bucket = @"myBucketName";
    uploadRequest.key = @"downloaded-myImage.jpg";
    uploadRequest.body = downloadingFileURL;

    [[transferManager upload:uploadRequest] continueWithExecutor:[AWSExecutor mainThreadExecutor]
                                                   withBlock:^id(AWSTask *task) {
                                                       if (task.error) {
                                                           if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) {
                                                               switch (task.error.code) {
                                                                   case AWSS3TransferManagerErrorCancelled:
                                                                   case AWSS3TransferManagerErrorPaused:
                                                                       break;

                                                                   default:
                                                                       NSLog(@"Error: %@", task.error);
                                                                       break;
                                                               }
                                                           } else {
                                                               // Unknown error.
                                                               NSLog(@"Error: %@", task.error);
                                                           }
                                                       }

                                                       if (task.result) {
                                                           AWSS3TransferManagerUploadOutput *uploadOutput = task.result;
                                                           // The file uploaded successfully.
                                                           NSLog(@"LOG %@", task.result);
                                                       }
                                                       return nil;
                                                   }];

   [transferManager upload:uploadRequest];

But Every time getting error like this

 AWSiOSSDKv2 [Error] AWSCredentialsProvider.m line:528 | __40-[AWSCognitoCredentialsProvider refresh]_block_invoke352 | Unable to refresh. 
 Error is [Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." 
 UserInfo={NSUnderlyingError=0x7ffd7300a070 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" 
 UserInfo={_kCFStreamErrorCodeKey=8, _kCFStreamErrorDomainKey=12}}, NSErrorFailingURLStringKey=https://cognito-identity.ap-southeast-1.amazonaws.com/, 
 NSErrorFailingURLKey=https://cognito-identity.ap-southeast-1.amazonaws.com/, _kCFStreamErrorDomainKey=12, _kCFStreamErrorCodeKey=8, 
 NSLocalizedDescription=A server with the specified hostname could not be found.}]

The supported endpoints for Cognito Identity are (taken from here: http://docs.aws.amazon.com/general/latest/gr/rande.html#cognito_identity_region ):

Region Name             Region         Endpoint                                      Protocol
US East (N. Virginia)   us-east-1      cognito-identity.us-east-1.amazonaws.com      HTTPS
EU (Ireland)            eu-west-1      cognito-identity.eu-west-1.amazonaws.com      HTTPS
Asia Pacific (Tokyo)    ap-northeast-1 cognito-identity.ap-northeast-1.amazonaws.com HTTPS

It looks like Cognito Identity is not supported in the Singapore region (ap-southeast-1). Try a different region from the list above.

Amazon Cognito Identity currently is only available in us-east-1, eu-west-1, and ap-northeast-1. When instantiating the AWSCognitoCredentialsProvider you will need to use the region that your Cognito Identity Pool was created in.

You can still use the credentials obtained by Cognito Identity for other services in other regions.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM