我正在开发一个新项目,需要以图像的形式上传附件.我正在使用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 …Run Code Online (Sandbox Code Playgroud) 我知道上下文是您在Lambda函数中定义的名称,但是对于Appsync解析器,我有点困惑。我已经看到了两者$ctx,$context并在包括AWS文档在内的AppSync解析器中使用了它们。AWS自己的一些代码生成工具(例如AWS Amplify CLI)会创建在同一代码中使用两者的解析器!我在文档中找不到任何解释此内容的信息。这里发生了什么?
amazon-web-services graphql aws-appsync aws-appsync-ios appsync-apollo-client
我正在将 AWS Appsync 用于我正在开发的当前应用程序并面临一个严重问题,即每当我在 Appsync 客户端中触发查询时,当互联网连接速度较慢时,请求永远不会以回调结束。我通过互联网检查了有关此主题的信息来源有限,并且还发现此问题仍然存在。
这是我用来获得响应的代码
func getAllApi(completion:@escaping DataCallback){
guard isInternetAvailabele() else {
completion(nil)
return
}
// AppSyncManager.Client() is AWSAppSyncClient Object
AppSyncManager.Client().fetch(query: GetlAllPostQuery(input: allInputs), cachePolicy:.fetchIgnoringCacheData) {
(result, error) in
var haveError:Bool = error != nil
if let _ = result?.data?.getAllPostings?.responseCode {haveError = false} else {haveError = true}
if haveError {
print(error?.localizedDescription ?? "")
completion(nil)
return
}
if result != nil{
completion(result)
}else{
completion(nil)
}
}
}
Run Code Online (Sandbox Code Playgroud)
该代码在互联网连接下工作正常,如果没有互联网,我已经在顶部进行了检查,但是当互联网连接速度较慢或 wifi 连接到我在禁用互联网数据的情况下使用手机创建的热点时,请求不会返回任何回调,它应该给出失败的警报,就像我们在请求超时时进入其他 api 一样。是否支持请求超时或我错过了什么?
注意:我在终端中收到了这些日志
Task <06E9BBF4-5731-471B-9B7D-19E5E504E57F>.<45> HTTP load failed …Run Code Online (Sandbox Code Playgroud) 我有一个需要更新 AWS AppSync 架构的用例。由于我的应用程序用户将拥有不同版本的应用程序,因此不同版本需要使用的架构会有所不同。
有没有办法对 AppSync 架构进行版本控制并从 iOS 和 Android 应用程序调用不同版本的架构?
我可以获得两个平台的示例代码指针吗?
amazon-web-services aws-appsync aws-appsync-ios appsync-apollo-client