为了在AWS
上建立一个可以从iOS应用程序创建和使用用户帐户的系统,我最近关注了this tutorial,该系统使用AWSMobileClient
,AWSAuthCore
和AWSAuthUI
。
我开始工作,可以创建帐户并登录和注销。
现在,我想利用DynamoDB
来允许用户存储一些东西。为此,我试图集成DynamoDB
在其他应用程序中工作的代码。但是很明显,两个应用程序的环境并不完全相同,因此无法正常运行。
这是我要处理的DynamoDB数据的代码:
import Foundation
import AWSDynamoDB
@objcMembers
class DynamoDBData: AWSDynamoDBObjectModel, AWSDynamoDBModeling {
var _message,_timeStamp,_user: String?
class func dynamoDBTableName() -> String {
return "DynamoDBData"
}
class func hashKeyAttribute() -> String {
return "_timeStamp"
}
class func rangeKeyAttribute() -> String {
return "_user"
}
override class func jsonKeyPathsByPropertyKey() -> [AnyHashable: Any] {
return [
"_message" : "message",
"_timeStamp" : "timeStamp",
"_user" : "user"
]
}
}
这是我尝试将某些内容保存到数据库并失败的代码:
@objc func handleTap() {
print(#function)
let dynamoDbObjectMapper = AWSDynamoDBObjectMapper.default()
// Create data object using the data model:
let dataBlock = DynamoDBData()
dataBlock?._message = "message-TEST"
dataBlock?._timeStamp = "timeStamp-TEST"
dataBlock?._user = "user-TEST"
// Save the new item:
dynamoDbObjectMapper.save(dataBlock!, completionHandler: {
(error: Error?) -> Void in
if let error = error {
print("Amazon DynamoDB Save Error: \(error)")
return
}
print("An item was saved.")
})
}
最后,这是我在尝试保存数据时出现问题的消息:
Amazon DynamoDB Save Error: Error Domain=com.amazonaws.AWSDynamoDBErrorDomain Code=19 "(null)"
UserInfo={__type=com.amazonaws.dynamodb.v20120810#ResourceNotFoundException,
message=Requested resource not found}
由于我已经在AWS控制台上创建了一个表DynamoDBData,所以我并不真正理解为什么它说“找不到请求的资源”,但是我想我在某些时候一定做错了。
如果这可能有用,这是表DynamoDBData在AWS控制台中显示的内容:
Table name DynamoDBData
Primary partition key _timeStamp (String)
Primary sort key _user (String)
Point-in-time recovery DISABLED Enable
Encryption Type DEFAULT Manage Encryption
KMS Master Key ARN Not Applicable
Time to live attribute DISABLED Manage TTL
Table status Active
Creation date May 15, 2019 at 10:13:43 AM UTC+9
UTC: May 15, 2019 at 1:13:43 AM UTC
Local: May 15, 2019 at 10:13:43 AM UTC+9
Region (N. Virginia): May 14, 2019 at 8:13:43 PM UTC-5
Read/write capacity mode Provisioned
Last change to on-demand mode -
Provisioned read capacity units 5 (Auto Scaling Disabled)
Provisioned write capacity units 5 (Auto Scaling Disabled)
Last decrease time -
Last increase time -Storage size (in bytes) 0 bytes
Item count 0 Manage live count
Region US East (N. Virginia)
Amazon Resource Name (ARN) arn:aws:dynamodb:us-east-1:123456789012:table/DynamoDBData
一些有关解决此问题的指导(甚至是部分指导)将非常有帮助。
答案 0 :(得分:1)
要仔细检查的一件事:表的区域是否与您要尝试访问的区域相同?
我从您的other question中的一条注释中注意到,该代码正试图到达arn:aws:dynamodb:ap-northeast-1
,但是上面的表格实际上位于us-east-1
中。