如何将本地 DynamoDB 与 AWS Go SDK 结合使用?

Jie*_*eng 7 integration-testing amazon-dynamodb aws-sdk

我正在查看 DynamoDB Go SDK 文档,但找不到如何连接到本地版本的 DynamoDB。我错过了什么?

Cma*_*mag 7

您想要使用 Config 的 Endpoint 属性:https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config

例如:

svc := dynamodb.New(mySession, aws.NewConfig().WithEndpoint("http://localhost:8000"))
Run Code Online (Sandbox Code Playgroud)


edu*_*911 2

如果您确实想给本地计算机增加负担,您可以在本地下载并运行 AWS DynamoDB:

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html

但没有必要。

相反,在针对 AWS 进行开发时,我一直习惯于Docker托管本地依赖项。我每天在通勤期间花费超过 4 个小时没有互联网连接。所以,线下开发必不可少。

从未使用过 Docker?这真的很容易。

  1. 下载适合您操作系统的 Docker 并安装它。
  2. 打开终端(Windows:CMD 或 Powershell,OSX:普通终端)。

然后运行这个:

docker run -d -p 8000:8000 -v /tmp/data:/data/ dwmkerr/dynamodb -dbPath /data/
Run Code Online (Sandbox Code Playgroud)

您将在 本地启动并运行 DynamoDB localhost:8000。对您的应用程序进行编码以使用配置文件,并将默认/本地开发配置文件设置为对 dynamodb 使用 localhost:8000 并运行测试。完毕。

我为我的所有应用程序 AWS 和 GCE 依赖项执行此操作,例如 AWS S3、Redis/ElasticCache、ElasticSearch 等。

有几个可用的“模拟”Docker 容器可以模仿这些在线服务。目标是找到一个适合您需求的容器,在本地运行并使用它。例如,虽然大多数可用的 AWS S3 docker 容器支持大部分 S3 API,但它们都不支持 S3 Turbo - 如果您考虑一下,这确实脱离了本地容器的上下文。尽管如此,请注意某些模拟容器可能具有的某些限制。

对于更复杂的依赖关系链,请阅读 Docker-Compose,这是一种使用单个命令编排一大堆依赖关系的方法:docker-compose up就是docker-compose down这样。

注意:Docker 文件系统通常是瞬态的,这意味着它们不会持久存在。在我之前的 DynamoDB Docker 容器示例中,它指定了一种在容器重新启动期间保留持久数据的方法。

如果您不关心持久数据(我不关心,这就是集成测试的用途 - 谁想保留几百万个测试帐户?),那么您可以运行:

docker run -d -p 8000:8000 dwmkerr/dynamodb
Run Code Online (Sandbox Code Playgroud)

当容器关闭时,所有更改都将丢失:非常适合本地开发和几百个集成测试!

  • @eduncan911 您正在打开端口 8000 将 localhost:8000 路由到运行 dynamo 的 docker 容器中。最初的问题是如何在 AWS SDK 中指定 localhost:8000 端点...除非我遗漏了一些东西 (4认同)
  • 我不明白你如何解释使用 aws golang SDK 连接到本地 docker 实例 (2认同)