Objective c 为适用于macos的AWS SDK启用传输加速

Objective c 为适用于macos的AWS SDK启用传输加速,objective-c,macos,amazon-web-services,amazon-s3,Objective C,Macos,Amazon Web Services,Amazon S3,免责声明:我最初在代码审查上发布,但由于代码目前不起作用,建议我改为在SO上发布 我已经将官方(v2.5.0)框架(专注于S3)转换为macOS,上传和下载的一切都如期进行。但是,我还想启用使用。我知道您可以使用启用传输加速(TA),但该实用程序使用的预签名请求的有效期仅为50分钟(适用于iOS,但不适用于macOS)。我想能够传输的文件是大的,可以花几个小时,甚至当使用传输加速 我已经编辑了AWS的原始代码以启用AwtransFermanager的TA,但是,由于上传/下载请求的最终签名失败,

免责声明:我最初在代码审查上发布,但由于代码目前不起作用,建议我改为在SO上发布

我已经将官方(v2.5.0)框架(专注于S3)转换为macOS,上传和下载的一切都如期进行。但是,我还想启用使用。我知道您可以使用启用传输加速(TA),但该实用程序使用的预签名请求的有效期仅为50分钟(适用于iOS,但不适用于macOS)。我想能够传输的文件是大的,可以花几个小时,甚至当使用传输加速

我已经编辑了AWS的原始代码以启用AwtransFermanager的TA,但是,由于上传/下载请求的最终签名失败,我仍然无法使其正常工作。错误消息是:

Message=The request signature we calculated does not match the signature you provided. Check your key and signing method.}]
在大多数情况下,我编辑了文件AWSSignature、AWSS3TransferManager和AWSService(AWSServiceConfiguration)。我认为发生签名错误是因为我在编辑路径或URL时没有正确地进行更改(可能是在AWSSignature.m中)。由于我不确定代码在哪里中断,我创建了一个存储库,其中包含编译框架所需的所有AWS SKD macOS文件,包括。如果使用以下命令运行对AWSServiceConfiguration的初始化调用:

 AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc]initWithRegion:[region aws_regionTypeValue]                                                                            credentialsProvider:credentialsProvider
                                                                  accelerateModeEnabled:@(NO)
                                                                             bucketName:self.testBucketName];
然后一切正常工作,测试文件正确上传和下载。但是,如果我尝试打开传输加速(我已经确保我的bucket启用了加速),那么它将失败,出现上面的代码签名错误

AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc]initWithRegion:[region aws_regionTypeValue]                                                                            credentialsProvider:credentialsProvider
                                                                  accelerateModeEnabled:@(YES)
                                                                             bucketName:self.testBucketName];
事实上,测试脚本似乎试图上传一个比测试文件(3MB)大得多的文件。我假设我的错误在某种程度上与URL正文的签名有关,因为文件的大小似乎是错误的

我知道发现这个错误需要比通常预期的更大的努力,这不是很多人会去做的事情(但希望是一些),因为它涉及非常复杂的代码,而且非常耗时。然而,我相信,如果我们能够做到这一点,那么很多人会发现AWS SKD for macOS+传输加速框架非常有用

我希望你能看一看,试着找出我在破解代码签名时可能遇到的问题

此处提供了框架+测试示例的所有代码:。要运行单元测试,您需要提供AWS S3的密钥和访问id,以及已启用传输加速的bucket的名称

谢谢。干杯,特隆