S3是亚马逊的存储服务,是Amazon Simple Storage Service的简称,在国内也有很多类似的服务,比如阿里云OSS,七牛云,又拍云等等。


这里大体介绍一下S3存储的创建和在iOS开发中的使用。

第一步:选择S3服务

step1

第二步:创建存储桶

一个独立的存储空间就叫一个存储桶(bucket)。

step2

第三步:设置名称和区域

step3

第四步:设置属性

注意如果要创建公开存储桶的话要选择“为此存储桶拥有公共读取访问权限”,完了一直点下一步,创建成功。

step4

第五步:设置公开权限

在权限种勾选Everyone,勾选列出对象框,然后保存。 纠正:这一步不需要。

step6

第六步:设置存储桶策略

输入下面的代码,然后保存,注意将”Resource”改成”arn:aws:s3:::[存储桶名称]/”

step7

{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::testkeke/*"
}
]
}

第七步:进入Cognito服务

step8

第八步:管理联合身份

step9

第九步:创建新的身份池

输入身份池名称,勾选“启用未经验证的身份的访问权限”,点击创建池 step10

第十步:点击允许

step11

第十一步:进入代码示例页

点击上方平台可以选择不通平台的示例代码。 下方显示S3存储初始化的代码,红框内是身份池id。 step12

Objective-C初始化实例代码:

AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc]
initWithRegionType:AWSRegionEUWest2
identityPoolId:@"<#identityPoolId#>"];

AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionEUWest2 credentialsProvider:credentialsProvider];

[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

Objective-C图片上传示例代码:

NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"uploadingImage.jpg"];
[UIImageJPEGRepresentation(image, 1.0) writeToFile:filePath atomically:YES];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];

AWSS3Transfermanager *transferManager = [AWSS3Transfermanager defaultS3TransferManager];

AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = "test";
uploadRequest.key = "/123456.png";
uploadRequest.body = fileUrl;
uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize];

[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
// Do something with the response
return nil;
}];

更多iOS集成的详细内容请查看文档:设置适用于 iOS 的开发工具包

如需交流,请联系我的邮箱。如需转载,请注明出处。谢谢!