AWSは初めてで、iOSアプリに使用しています。
iOSアプリから「img.haraj.com.sa」という名前のバケットに画像をアップロードしようとしています。画像をアップロードすると、バケットに表示されません。しかし、ターゲットを「haraj」という名前のバケットに変更すると、それらがアップロードされ、バケットに表示されます。
ポリシーは次のとおりです。
{
"Statement": [
{
"Sid": "**********hidden**********",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::haraj/*"
]
}
]
}
ターゲットバケットを変更するためにこれを変更します。また、「img1.haraj.com.sa」という名前で他のバケットを作成し、画像をアップロードしようとしましたが、残念ながらそれらも失敗しました。
ドット(。)とドットのないバケット名には問題があるようです。ドットのないバケットの名前はiOSアプリで機能し、ドットのある名前は機能しません。でもわかりません。しかし、私はこの問題に直面しています。アプリコードでエラー応答を受け取りません。
これが私のiOSアプリ実装の一部です:
- (void)postAdButtonPushed:(id)sender
{
DLog(@"Post Ad")
AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithAccessKey:AWS_ACCESS_KEY_ID withSecretKey:AWS_SECRET_KEY];
s3Client.timeout = 240;
NSString *bucketName = [NSString stringWithFormat:@"img.haraj.com.sa"];
NSString *imageName = [NSString stringWithFormat:@"testimage.jpg"];
S3PutObjectRequest *objReq = [[S3PutObjectRequest alloc] initWithKey:imageName inBucket:bucketName];
objReq.contentType = @"image/jpeg";
UIImage *testImageToUpload = [self.imagesToUpload objectAtIndex:0];
NSData *imageData = UIImageJPEGRepresentation(testImageToUpload, 0.8);
objReq.data = imageData;
objReq.delegate = self;
objReq.contentLength = [imageData length];
[s3Client putObject:objReq];
}
- (void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response
{
DLog(@"response: %@", response.description)
}
- (void)request:(AmazonServiceRequest *)request didFailWithError:(NSError *)error
{
DLog(@"Req failed: %@", error.description)
}
また、Amazonフォーラムでスレッドを作成しました:AWSバケットiOSアプリへの画像のアップロード
どんな助けでもいただければ幸いです。ありがとうございました!