我正在尝试使用AWS iOS SDK v2在我的
敏捷的
项目问题是我正在尝试使用两个不同的地区(我正在与我的主要地区爱尔兰的eu-west-1合作,但移动分析是
only available from us-east-1 in Virginia
).
我的AppDelegate中有以下内容来初始化移动分析:
let credentialsProviderForMobileAnalytics = AWSCognitoCredentialsProvider.credentialsWithRegionType(
AWSRegionType.USEast1,
accountId: "my_account_id",
identityPoolId: "pool_id",
unauthRoleArn: "XXX",
authRoleArn: "XXX"
)
let awsConfigurationForMobileAnalytics = AWSServiceConfiguration(
region: AWSRegionType.USEast1,
credentialsProvider: credentialsProviderForMobileAnalytics
)
AWSServiceManager.defaultServiceManager().setDefaultServiceConfiguration(awsConfigurationForMobileAnalytics)
var mobileAnalytics = AWSMobileAnalytics(forAppId: "MyAwsAppId")
然后,在从ViewController调用的函数中,我要将图像上载到S3,我有:
let credentialsProviderForS3 = AWSCognitoCredentialsProvider.credentialsWithRegionType(
AWSRegionType.EUWest1,
accountId: "my_account_id",
identityPoolId: "pool_id",
unauthRoleArn: "XXX",
authRoleArn: "XXX"
)
let awsConfigurationForS3 = AWSServiceConfiguration(
region: AWSRegionType.EUWest1,
credentialsProvider: credentialsProviderForS3
)
AWSServiceManager.defaultServiceManager().setDefaultServiceConfiguration(awsConfigurationForS3)
var transferManager = AWSS3TransferManager.defaultS3TransferManager()
var fileURL = NSURL(fileURLWithPath: NSTemporaryDirectory().stringByAppendingPathComponent("temp"))
var uploadRequest1 : AWSS3TransferManagerUploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest1.bucket = "mybucket"
uploadRequest1.key = "my-image.jpeg"
uploadRequest1.body = fileURL
var task = transferManager.upload(uploadRequest1)
如果我对上面两个部分中的一个进行注释,相应的任务就会完美完成(当对分析代码进行注释时,s3会工作,反之亦然),但它不会一起工作-我怀疑这是因为我正在使用
AWSServiceManager.defaultServiceManager().setDefaultServiceConfiguration()
事实上,我使用了两个不同的区域,不知怎么搞砸了一切。它要么拒绝将事件记录到Mobile Analytics,要么会中断上载并显示错误消息
NSUnderlyingError=0x17424ee20“操作无法完成。
(kCFErrorDomainCFNetwork错误-1001.)“,
NSErrorFailingURLKey=
https://s3.amazonaws.com/mybucket/my-image.jpeg
})
我试着这样设置S3的传输管理器(并在
setDefaultServiceConfiguration
以上):
var transferManager = AWSS3TransferManager(configuration: awsConfigurationForS3, identifier: "S3")
这在上载过程中导致以下错误:
“错误域=com.amazonaws.AWS3Error域代码=0\”操作无法完成\U2019。(com.amazonaws.AWS3ErrorDomain错误0。)\“UserInfo=0x1742e7e00{HostId=sm4qLUbN2XfkNYefbSU4A95UXTwvNYEBz0+bALqeFzlcXJ7rOGWnr1Yg+8HoU4r2,Bucket=mybucket,Endpoint=mybucket.s3.amazonaws.com,Message=您尝试访问的Bucket必须使用指定的终结点进行寻址。请将所有未来的请求发送到此终结点。Code=PermanentRedirect,RequestId=568728899B328B0}”
我还尝试将“mybucket.s3.amazonaws.com”作为bucket名称传递,但这导致一个错误,指出找不到bucket。
我真的不知道下一步该做什么。希望你们能给我一些关于如何分离这两个集成的建议,让它们同时工作。