【问题标题】:How to connect to Amazon Keyspaces (Cassandra) using laravel?如何使用 laravel 连接到 Amazon Keyspaces (Cassandra)?
【发布时间】:2021-01-31 11:44:44
【问题描述】:

我正在尝试连接到托管在亚马逊密钥空间的 Cassandra,并且需要在每个连接中包含 SSL 证书。

我已经安装了驱动并且连接成功,但是由于我缺少证书,所以身份验证失败。

我尝试了以下包装器,但没有一个包含配置 SSL 证书的参数:

sonvq/laravel-cassandra Fuitad/laravel-cassandra 立方科技/拉卡萨

在我的 config/database.php 文件中,我配置了以下内容,我猜证书在“选项”参数中,但它不起作用:

   'cassandra' => [
        'driver' => 'cassandra',
        'host' => env('CASSANDRA_DB_HOST', ''),
        'port' => env('CASSANDRA_DB_PORT', 9142),
        'keyspace' => env('CASSANDRA_DB_DATABASE', ''),
        'username' => env('CASSANDRA_DB_USERNAME', ''),
        'password' => env('CASSANDRA_DB_PASSWORD', ''),
        'options'   => array(
        Cassandra::VERIFY_PEER_CERT    => '/home/user/AmazonRootCA1.pem',
       ),
     ]

通过命令行使用“cqlsh”效果很好,因为在该命令中配置证书路径很容易,但在 laravel 上我无法找到如何设置该路径。

任何帮助都会很棒!谢谢!

【问题讨论】:

    标签: php laravel cassandra


    【解决方案1】:

    自从过去两天试图将我的 laravel 应用程序连接到亚马逊键空间以来,我一直在头疼。

    最后,对 cubettech/lacassa 进行一些更改,我让它工作了

    在datastax上阅读文档后,我找到了加载amazon PEM证书的方法,终于可以连接了。

    如果对connection.php进行以下更改会很棒

    protected function createConnection(array $config)
        {
           $ssl = Cassandra::ssl()
                   ->withVerifyFlags(Cassandra::VERIFY_PEER_CERT)
                   ->withTrustedCerts($config['cert_path'])
                   ->build();     
            
            $cluster   = Cassandra::cluster()
            ->withContactPoints($config['host'])
            ->withPort((int) $config['port'])
            ->withCredentials($config['username'],$config['password'])
            ->withSSL($ssl)
            ->withDefaultConsistency(Cassandra::CONSISTENCY_LOCAL_QUORUM)
            ->build();
    
            $keyspace  = $config['keyspace'];
            $connection   = $cluster->connect($keyspace);
            return $connection;
    
        }
    

    还需要设置证书路径变量。

    由于某种原因,我发现即使配置了环境变量,也总是与 localhost 建立连接,这就是我使用 $config 数组加载环境变量的原因。

    查询返回一个 Cassandra/Rows Object ,我必须将它们转换为字符串或循环读取它们,但这不是问题。

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 2021-10-15
      • 2021-10-14
      • 2020-11-22
      • 1970-01-01
      • 2021-08-11
      • 2021-07-21
      • 2020-07-30
      • 1970-01-01
      相关资源
      最近更新 更多