使用DynamoDB->找不到资源

时间:2019-05-15 01:47:47

标签: ios swift amazon-web-services amazon-dynamodb

为了在AWS上建立一个可以从iOS应用程序创建和使用用户帐户的系统,我最近关注了this tutorial,该系统使用AWSMobileClientAWSAuthCoreAWSAuthUI

我开始工作,可以创建帐户并登录和注销。

现在,我想利用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

一些有关解决此问题的指导(甚至是部分指导)将非常有帮助。

1 个答案:

答案 0 :(得分:1)

要仔细检查的一件事:表的区域是否与您要尝试访问的区域相同?

我从您的other question中的一条注释中注意到,该代码正试图到达arn:aws:dynamodb:ap-northeast-1,但是上面的表格实际上位于us-east-1中。