如何将 AWS ELB 连接到运行 MS SQL 的 RDS?

Posted

技术标签:

【中文标题】如何将 AWS ELB 连接到运行 MS SQL 的 RDS?【英文标题】:How to connect AWS ELB to RDS running MS SQL? 【发布时间】:2016-06-29 07:42:59 【问题描述】:

AWS 明确声明 here 和 Q&A 可以使用 Elastic Beanstalk 上的 php 实例连接到 MS SQL 服务器。

但是,似乎没有办法安装 MSSQL 驱动程序。

例如,从 ELB 命令行安装 yum php-mssql 会生成错误,指出所需依赖项的版本太高。

这是一个经典的错误报告:

--> 运行事务检查 ---> 将安装包 php-common.x86_64 0:5.3.29-1.8.amzn1 --> 处理冲突:php54-common-5.4.45-1.75.amzn1.x86_64 冲突 php-common --> 处理冲突:php54-pdo-5.4.45-1.75.amzn1.x86_64 冲突 php-pdo --> 完成依赖解决错误:php54-pdo 与 php-pdo-5.3.29-1.8.amzn1.x86_64 冲突 错误:php54-common 与 php-common-5.3.29-1.8.amzn1.x86_64 冲突 您可以尝试使用 --skip-broken 来解决此问题 您可以尝试运行:rpm -Va --nofiles --nodigest

那么如何在 AWS ELB 上使用 PHP 连接到 MS-SQL?

【问题讨论】:

【参考方案1】:

解决方案是在创建 beanstalk 应用程序时选择 Amazon Linux5.3 版

Environment Type屏幕上选择PHP后,下一行显示:

AWS Elastic Beanstalk 将创建一个在 64 位 Amazon Linux 2015.09 v2.0.8 上运行 PHP 5.6 的环境。 Change platform version.

单击链接Change platform version,您将获得可能版本的下拉列表。

似乎唯一可行的版本是列表中的最后一个:64 位 Amazon Linux 上的 5.3(我没有尝试 32 位,它可能也可以。)

然后在 .ebextensions 文件夹中创建一个 01.config 文件,并确保它包括:

packages: 
  yum:
    php-mssql: []

注意:此文件中的缩进计数。

您现在可以使用如下代码进行连接:

<?php
// connect to database server
$db_conn = mssql_connect("your.rds.amazonaws.com","user","passw0rd")
   or die( "<strong>ERROR: Connection to MYSERVER failed</strong>" );

// select database - only if we want to query another database than the default one
mssql_select_db( "database1", $db_conn )
   or die( "<strong>ERROR: Selecting database failed</strong>" );

// query the database
$query_result = mssql_query( "SELECT * FROM table1", $db_conn )
   or die( "<strong>ERROR: Query failed</strong>" );
$row = mssql_fetch_array($query_result);
echo $row[0];
?>

现在它可以按预期工作了。

这是 2 天工作的结果,在此分享,因为此信息似乎在任何地方都不存在。

【讨论】:

以上是关于如何将 AWS ELB 连接到运行 MS SQL 的 RDS?的主要内容,如果未能解决你的问题,请参考以下文章

AWS ELB - 服务 A 无法连接到同一安全组中的服务 B

使用AWS ELB将域名添加到ECS应用程序

如何将 QNAP Web 服务器连接到 Microsoft MS SQL

如何在 Istio 中设置 AWS ALB 而不是 ELB?

使用 ODBC 连接到 MYSQL 在 MS-Access 中运行 SQL 时出错

如何从 AWS Lambda .Net Core 应用程序 API 连接到 AWS RDS SQL Server?