gpt4 book ai didi

ios - Amazon S3 iOS SDK v2 使用 AWSAccessKeyId :Signature 上传

转载 作者:可可西里 更新时间:2023-11-01 03:56:56 25 4
gpt4 key购买 nike

我正在尝试将文件上传到 S3 存储桶,而设备正在从另一台服务器获取访问信息(AWSAccessKeyId 和签名)。是否可以使用 AWS iOS SDK v2 上传文件?如果没有,是否有机会使用适用于 iOS 的其他方法(例如生成预签名 URL 并执行 http post/put)?

现在我正在使用这种方法,但它用于 access_key/access_secret:

AWSStaticCredentialsProvider *credentialsProvider = [AWSStaticCredentialsProvider credentialsWithAccessKey:awsAccessKey secretKey:awsSecretKey];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

AWSS3 *transferManager = [[AWSS3 alloc] initWithConfiguration:configuration];
AWSS3PutObjectRequest *getLog = [[AWSS3PutObjectRequest alloc] init];
getLog.bucket = awsS3Bucket;
getLog.key = awsS3FileNameString;
getLog.contentType = @"text/plain";
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:logFileName];
long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileName error:nil][NSFileSize] longLongValue];
getLog.body = [NSURL fileURLWithPath:fileName];
getLog.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize];

[[transferManager putObject:getLog] continueWithBlock:^id(BFTask *task) {
if(task.error)
{
NSLog(@"Error: %@",task.error);
}
else
{
NSLog(@"Got here: %@", task.result);

}
return nil;
}];

如果有任何想法,我将不胜感激。

最佳答案

我推荐以下方法:

  • 在您的服务器上生成访问 key secret key session token 。您有多种语言选择,包括 Java、.NET、PHP、Ruby、Python 和 Node.js。
  • 通过遵守 AWSCredentialsProvider 实现您自己的凭据提供程序.该凭证提供者应该:
    • 从您的服务器检索访问 key 、 secret key 和 session key 。
    • 坚持使用直到它们过期。
    • 在请求时返回凭据。
    • 如果它们已过期,请从您的服务器重新检索它们。
    • 调用 refresh 也应该启动凭据检索过程。
  • 将您的凭据提供程序分配给 defaultServiceConfiguration 或将其传递给 initWithConfiguration:

附带说明一下,在使用 initWithConfiguration: 时,您需要手动保留对 AWSS3 实例的强引用。使用 defaultS3 将消除对此的需要。

希望对您有所帮助,

关于ios - Amazon S3 iOS SDK v2 使用 AWSAccessKeyId :Signature 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com