dre*_*gin 6 objective-c amazon-web-services ios swift aws-appsync-ios
我正在开发一个新项目,需要以图像的形式上传附件.我正在使用DynamoDB和AppSync API来插入和检索数据库中的数据.由于我们是AppSync的新手以及我们用于应用程序的所有亚马逊服务和数据库,我对身份验证过程有点困惑.现在我们正在使用API密钥进行身份验证,我已尝试将这些步骤上传到s3.
1 AWSServiceManager配置静态配置,如: -
let staticCredit = AWSStaticCredentialsProvider(accessKey: kAppSyncAccessKey, secretKey: kAppSyncSecretKey)
let AppSyncRegion: AWSRegionType = .USEast2
let config = AWSServiceConfiguration(region: AppSyncRegion, credentialsProvider: staticCredit)
AWSServiceManager.default().defaultServiceConfiguration = config
Run Code Online (Sandbox Code Playgroud)
2使用此方法上传图片: -
func updatePictureToServer(url:URL, completion:@escaping (Bool)->Void){
let transferManager = AWSS3TransferManager.default()
let uploadingFileURL = url
let uploadRequest = AWSS3TransferManagerUploadRequest()
let userBucket = String(format: "BUCKET")
uploadRequest?.bucket = userBucket
let fileName = String(format: "%@%@", AppSettings.getUserId(),".jpg")
uploadRequest?.key = fileName
uploadRequest?.body = uploadingFileURL
transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in
if let error = task.error as NSError? {
if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
switch code {
case .cancelled, .paused:
break
default:
print("Error uploading: \(String(describing: uploadRequest!.key)) Error: \(error)")
}
} else {
print("Error uploading: \(String(describing: uploadRequest!.key)) Error: \(error)")
}
completion(false)
return nil
}
_ = task.result
completion(true)
print("Upload complete for: \(String(describing: uploadRequest!.key))")
return nil
})
}
Run Code Online (Sandbox Code Playgroud)
3最后我能够在S3存储桶上看到上传的图像
但我担心如何保存图像的网址以及如何检索图像,因为当我必须使用PUBLIC来检索图像时我不认为这是一个好的方法,加上是否有必要Cognito用户池,因为我们还没有在我们的应用程序中使用Cognito用户池,也没有太多的知识,文档在实际情况下没有帮助,因为我们是第一次实现ti所以我们需要一些帮助.
所以有两个问题: -
谢谢
注意:任何建议或改进或与AppSync,S3或DynamoDB相关的任何内容都将得到真正的赞赏,语言不是一个障碍,只是寻找方向如此迅速或客观 - 没有问题.
您需要使用 Cognito 联合身份在存储桶上实现每个身份的安全性,这为每个用户提供了自己的安全存储桶。您可以利用 AWS Amplify 为您的项目进行设置并$amplify add auth选择默认配置,然后$amplify add storage为该存储桶和池配置适当的权限以使用私有上传。
有关更多信息,请查看存储库:https://github.com/aws-amplify/amplify-cli
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |