我正在使用AWS Amplify设置AppSync GraphQL API。我有一个带有@model批注的架构,我正在尝试编写一个lambda解析器,该读/写器将对@model生成的DynamoDB表进行读取/写入。但是,当我尝试使用amplify mock
在本地测试时,我的JS函数抛出了
error { UnknownEndpoint: Inaccessible host: `dynamodb.us-east-1-fake.amazonaws.com'. This service may not be available in the `us-east-1-fake' region.
我似乎根本找不到关于此用例的太多文档(大多数lambda解析器示例从不属于amplify应用程序的其他表/ API中读取),因此希望使用任何指针。是否甚至支持运行这种类型的设置,还是我必须推送到AWS才能进行测试?
答案 0 :(得分:1)
深入研究Amplify CLI代码后,我发现了一个目前可以使用的解决方案。
Here是amplify mock
初始化DynamoDB Local的地方。如您所见,它没有设置--sharedDb
标志,based on the docs意味着创建的数据库文件将以请求的访问密钥ID前缀,然后是区域。根据{{3}}的定义,来自Amplify的请求的访问密钥ID将为“ fake”,区域为“ us-fake-1”。此外,由Amplify启动的DynamoDB Local实例的端口是定义为here的62224。
因此,要连接到Amplify创建的表,需要以下DynamoDB配置
const ddb = new AWS.DynamoDB({
region: 'us-fake-1',
endpoint: "http://172.16.123.1:62224/",
accessKeyId: "fake",
secretAccessKey: "fake"
})
如果要将AWS CLI与Amplify创建的表一起使用,则必须使用上面的区域和访问键创建一个新的配置文件。
我仍然需要做一些额外的工作,以找出一种使这些配置值在本地模拟值和实际模拟值之间切换的好方法,但这暂时阻止了本地测试。
关于我对在哪里设置“ us-east-1-fake”的AWS :: Region的另一个问题,设置为here,但似乎没有在其他任何地方使用。即,它在运行amplify mock
时被设置为占位符值,但是将其用作其他地方的区域以进行本地测试似乎不起作用。
答案 1 :(得分:0)
您的dynamodb主机不正确。 dynamodb.us-east-1-fake 不是有效的主机。请使用真实的dynamodb主机名进行更新。
如果您在本地运行,请先在cli上配置aws配置。
答案 2 :(得分:0)
请尝试以下设置,对我来说很好,
* soft memlock unlimited
* hard memlock unlimited
* soft stack unlimited
* hard stack unlimited