如何在 Rails 上使用 Ruby 的 AWS 文档数据库?与 3.6 版的兼容性?

How to use AWS Document DB with Ruby On Rails? Compatibility with version 3.6?

最近 AWS 实现了与 MongoDB 版本 3.6 的兼容性 通过 DocumentDB。

文档数据库需要证书,可在以下位置下载:

https://s3-us-gov-west-1.amazonaws.com/rds-downloads/rds-GovCloud-Root-CA-2017.pem

使用类似于以下的配置文件:

https://github.com/mongodb/mongoid/blob/master/lib/rails/generators/mongoid/config/templates/mongoid.yml

我想知道是否有办法在 mongoid 中设置与 3.6 的兼容性 gem 或者是否有特定版本确保使用 3.6 版本?

谢谢

首先,重要的是要注意 DocumentDB 仅实现与亚马逊宣传的 "MongoDB 3.6" 的部分兼容性。您可以在此处阅读有关某些不兼容性的更多信息:https://www.mongodb.com/blog/post/documents-are-everywhere

Mongoid 在实际 MongoDB 3.6 服务器上工作并经过测试。无需特殊配置。

将 Mongoid 与 DocumentDB 一起使用可能会起作用,也可能会在 Amazon 的文档数据库中公开 incompatibilities/omissions,具体取决于尝试的具体操作。

首先,您可能需要下载 RDS 组合包而不是 rds-GovCloud-Root-CA-2017.pem。 Link: https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

试试这个作为你的 yaml 文件:

development:
  clients:
    default:
      uri: mongodb://myuser:mypassword@<your_cluster_endpoint>:<cluster_port>/test?ssl=true
      options:
        ssl_ca_cert: /path/to/rds-combined-ca-bundle.pem

示例工作配置

production:
    clients:
        default:
            uri: "mongodb://user:pass@db_end_point:27017/db_name?ssl=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"
            app_name: AppName
            options:
                ssl_ca_cert: "./config/rds-combined-ca-bundle.pem"

development:
    clients:
        default:
            uri: "mongodb://user:pass@db_end_point:27017/db_name?ssl=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"
            app_name: AppName
            options:
                ssl_ca_cert: "./config/rds-combined-ca-bundle.pem"


test:
    clients:
        default:
            uri: "mongodb://user:pass@db_end_point:27017/db_name?ssl=true&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"
            app_name: AppName
            options:
                ssl_ca_cert: "./config/rds-combined-ca-bundle.pem"