Snowflake ODBC ドライバーを Amazon Linux 2023 にインストールしてみた

Snowflake ODBC ドライバーを Amazon Linux 2023 にインストールしてみた

Clock Icon2024.12.18

はじめに

EC2 インスタンス(Amazon Linux 2023)に Snowflake の ODBC ドライバーをインストールする機会があったので本記事で手順をまとめてみます。

前提条件

以下の内容で検証しています。

  • OS:Amazon Linux 2023
  • ドライバー マネージャー:unixODBC
  • RPM パッケージを使用してドライバーをインストール
  • ODBC ドライバー バージョン:3.5.0

設定手順

手順は以下に記載があるのでこちらに沿って進めます。

https://docs.snowflake.com/en/developer-guide/odbc/odbc-linux#label-odbc-linux-install-tgz

パッケージのアップデート

はじめに現在のシステムのパッケージを最新バージョンに更新しておきます。

#パッケージのアップデート
sudo dnf upgrade --releasever=latest
#アップデート後の更新確認
sudo dnf check-upgrade --releasever=latest

ドライバー マネージャーのインストール

以下のコマンドで unixODBC をインストールします。

# unixODBC をインストール
$ sudo dnf install -y unixODBC
Last metadata expiration check: 0:18:43 ago on Wed Dec 18 04:58:57 2024.
Dependencies resolved.
=============================================================================================================================================================================================================================================
 Package                                                  Architecture                                       Version                                                           Repository                                               Size
=============================================================================================================================================================================================================================================
Installing:
 unixODBC                                                 x86_64                                             2.3.9-3.amzn2023.0.3                                              amazonlinux                                             460 k
Installing dependencies:
 libtool-ltdl                                             x86_64                                             2.4.7-1.amzn2023.0.3                                              amazonlinux                                              38 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  2 Packages

Total download size: 498 k
Installed size: 1.5 M
Downloading Packages:
(1/2): libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64.rpm                                                                                                                                                          656 kB/s |  38 kB     00:00
(2/2): unixODBC-2.3.9-3.amzn2023.0.3.x86_64.rpm                                                                                                                                                              4.6 MB/s | 460 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                        3.3 MB/s | 498 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                     1/1
  Installing       : libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64                                                                                                                                                                            1/2
  Installing       : unixODBC-2.3.9-3.amzn2023.0.3.x86_64                                                                                                                                                                                2/2
  Running scriptlet: unixODBC-2.3.9-3.amzn2023.0.3.x86_64                                                                                                                                                                                2/2
  Verifying        : libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64                                                                                                                                                                            1/2
  Verifying        : unixODBC-2.3.9-3.amzn2023.0.3.x86_64                                                                                                                                                                                2/2

Installed:
  libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64                                                                                unixODBC-2.3.9-3.amzn2023.0.3.x86_64

Complete!

# 確認
$ odbcinst -j
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/newuser/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

パッケージ署名の確認

ドライバー バージョンが 3.5.0 以上なので、以下を実行します。

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
gpg: directory '/home/newuser/.gnupg' created
gpg: keybox '/home/newuser/.gnupg/pubring.kbx' created
gpg: keyserver receive failed: No dirmngr

gpgコマンドを実行するために必要なdirmngrがインストールされていないと表示されたので、ここでは以下を実行し Amazon Linux 2023 にデフォルトでインストールされているgnupg2-minimalgnupg2-fullに置き換えます。

$ sudo dnf swap gnupg2-minimal gnupg2-full
Last metadata expiration check: 0:21:43 ago on Wed Dec 18 04:58:57 2024.
Dependencies resolved.
=============================================================================================================================================================================================================================================
 Package                                                      Architecture                                     Version                                                           Repository                                             Size
=============================================================================================================================================================================================================================================
Installing:
 gnupg2                                                       x86_64                                           2.3.7-1.amzn2023.0.4                                              amazonlinux                                           2.5 M
Installing dependencies:
 duktape                                                      x86_64                                           2.7.0-21.amzn2023                                                 amazonlinux                                           171 k
 libksba                                                      x86_64                                           1.6.3-1.amzn2023.0.2                                              amazonlinux                                           159 k
 libsecret                                                    x86_64                                           0.20.4-2.amzn2023.0.2                                             amazonlinux                                           158 k
 libusbx                                                      x86_64                                           1.0.24-2.amzn2023.0.2                                             amazonlinux                                            73 k
 pcsc-lite                                                    x86_64                                           1.9.1-1.amzn2023.0.3                                              amazonlinux                                            92 k
 pcsc-lite-libs                                               x86_64                                           1.9.1-1.amzn2023.0.3                                              amazonlinux                                            28 k
 polkit                                                       x86_64                                           125-1.amzn2023.0.1                                                amazonlinux                                           153 k
 polkit-libs                                                  x86_64                                           125-1.amzn2023.0.1                                                amazonlinux                                            72 k
Installing weak dependencies:
 gnupg2-smime                                                 x86_64                                           2.3.7-1.amzn2023.0.4                                              amazonlinux                                           249 k
 pcsc-lite-ccid                                               x86_64                                           1.4.34-1.amzn2023.0.3                                             amazonlinux                                           300 k
 pinentry                                                     x86_64                                           1.2.0-1.amzn2023.0.5                                              amazonlinux                                            99 k
 polkit-pkla-compat                                           x86_64                                           0.1-19.amzn2023.0.2                                               amazonlinux                                            45 k
Removing:
 gnupg2-minimal                                               x86_64                                           2.3.7-1.amzn2023.0.4                                              @System                                               917 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install  13 Packages
Remove    1 Package

Total download size: 4.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/13): duktape-2.7.0-21.amzn2023.x86_64.rpm                                                                                                                                                                 2.5 MB/s | 171 kB     00:00
(2/13): libksba-1.6.3-1.amzn2023.0.2.x86_64.rpm                                                                                                                                                              4.4 MB/s | 159 kB     00:00
(3/13): gnupg2-smime-2.3.7-1.amzn2023.0.4.x86_64.rpm                                                                                                                                                         2.1 MB/s | 249 kB     00:00
(4/13): libusbx-1.0.24-2.amzn2023.0.2.x86_64.rpm                                                                                                                                                             3.0 MB/s |  73 kB     00:00
(5/13): libsecret-0.20.4-2.amzn2023.0.2.x86_64.rpm                                                                                                                                                           2.6 MB/s | 158 kB     00:00
(6/13): gnupg2-2.3.7-1.amzn2023.0.4.x86_64.rpm                                                                                                                                                                13 MB/s | 2.5 MB     00:00
(7/13): pcsc-lite-1.9.1-1.amzn2023.0.3.x86_64.rpm                                                                                                                                                            1.5 MB/s |  92 kB     00:00
(8/13): pcsc-lite-ccid-1.4.34-1.amzn2023.0.3.x86_64.rpm                                                                                                                                                      6.7 MB/s | 300 kB     00:00
(9/13): pcsc-lite-libs-1.9.1-1.amzn2023.0.3.x86_64.rpm                                                                                                                                                       1.1 MB/s |  28 kB     00:00
(10/13): pinentry-1.2.0-1.amzn2023.0.5.x86_64.rpm                                                                                                                                                            2.9 MB/s |  99 kB     00:00
(11/13): polkit-pkla-compat-0.1-19.amzn2023.0.2.x86_64.rpm                                                                                                                                                   2.2 MB/s |  45 kB     00:00
(12/13): polkit-125-1.amzn2023.0.1.x86_64.rpm                                                                                                                                                                1.7 MB/s | 153 kB     00:00
(13/13): polkit-libs-125-1.amzn2023.0.1.x86_64.rpm                                                                                                                                                           893 kB/s |  72 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                         12 MB/s | 4.1 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                     1/1
  Installing       : polkit-libs-125-1.amzn2023.0.1.x86_64                                                                                                                                                                              1/14
  Installing       : libksba-1.6.3-1.amzn2023.0.2.x86_64                                                                                                                                                                                2/14
  Installing       : pcsc-lite-libs-1.9.1-1.amzn2023.0.3.x86_64                                                                                                                                                                         3/14
  Installing       : libusbx-1.0.24-2.amzn2023.0.2.x86_64                                                                                                                                                                               4/14
  Installing       : libsecret-0.20.4-2.amzn2023.0.2.x86_64                                                                                                                                                                             5/14
  Installing       : pinentry-1.2.0-1.amzn2023.0.5.x86_64                                                                                                                                                                               6/14
  Installing       : duktape-2.7.0-21.amzn2023.x86_64                                                                                                                                                                                   7/14
  Running scriptlet: polkit-125-1.amzn2023.0.1.x86_64                                                                                                                                                                                   8/14
  Installing       : polkit-125-1.amzn2023.0.1.x86_64                                                                                                                                                                                   8/14
  Running scriptlet: polkit-125-1.amzn2023.0.1.x86_64                                                                                                                                                                                   8/14
  Installing       : polkit-pkla-compat-0.1-19.amzn2023.0.2.x86_64                                                                                                                                                                      9/14
  Installing       : pcsc-lite-ccid-1.4.34-1.amzn2023.0.3.x86_64                                                                                                                                                                       10/14
  Running scriptlet: pcsc-lite-ccid-1.4.34-1.amzn2023.0.3.x86_64                                                                                                                                                                       10/14
  Installing       : pcsc-lite-1.9.1-1.amzn2023.0.3.x86_64                                                                                                                                                                             11/14
  Running scriptlet: pcsc-lite-1.9.1-1.amzn2023.0.3.x86_64                                                                                                                                                                             11/14
Created symlink /etc/systemd/system/sockets.target.wants/pcscd.socket → /usr/lib/systemd/system/pcscd.socket.

  Installing       : gnupg2-smime-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                          12/14
  Installing       : gnupg2-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                                13/14
  Erasing          : gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                        14/14
  Running scriptlet: gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                        14/14
  Verifying        : duktape-2.7.0-21.amzn2023.x86_64                                                                                                                                                                                   1/14
  Verifying        : gnupg2-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                                 2/14
  Verifying        : gnupg2-smime-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                           3/14
  Verifying        : libksba-1.6.3-1.amzn2023.0.2.x86_64                                                                                                                                                                                4/14
  Verifying        : libsecret-0.20.4-2.amzn2023.0.2.x86_64                                                                                                                                                                             5/14
  Verifying        : libusbx-1.0.24-2.amzn2023.0.2.x86_64                                                                                                                                                                               6/14
  Verifying        : pcsc-lite-1.9.1-1.amzn2023.0.3.x86_64                                                                                                                                                                              7/14
  Verifying        : pcsc-lite-ccid-1.4.34-1.amzn2023.0.3.x86_64                                                                                                                                                                        8/14
  Verifying        : pcsc-lite-libs-1.9.1-1.amzn2023.0.3.x86_64                                                                                                                                                                         9/14
  Verifying        : pinentry-1.2.0-1.amzn2023.0.5.x86_64                                                                                                                                                                              10/14
  Verifying        : polkit-125-1.amzn2023.0.1.x86_64                                                                                                                                                                                  11/14
  Verifying        : polkit-libs-125-1.amzn2023.0.1.x86_64                                                                                                                                                                             12/14
  Verifying        : polkit-pkla-compat-0.1-19.amzn2023.0.2.x86_64                                                                                                                                                                     13/14
  Verifying        : gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64                                                                                                                                                                        14/14

Installed:
  duktape-2.7.0-21.amzn2023.x86_64           gnupg2-2.3.7-1.amzn2023.0.4.x86_64          gnupg2-smime-2.3.7-1.amzn2023.0.4.x86_64            libksba-1.6.3-1.amzn2023.0.2.x86_64              libsecret-0.20.4-2.amzn2023.0.2.x86_64
  libusbx-1.0.24-2.amzn2023.0.2.x86_64       pcsc-lite-1.9.1-1.amzn2023.0.3.x86_64       pcsc-lite-ccid-1.4.34-1.amzn2023.0.3.x86_64         pcsc-lite-libs-1.9.1-1.amzn2023.0.3.x86_64       pinentry-1.2.0-1.amzn2023.0.5.x86_64
  polkit-125-1.amzn2023.0.1.x86_64           polkit-libs-125-1.amzn2023.0.1.x86_64       polkit-pkla-compat-0.1-19.amzn2023.0.2.x86_64
Removed:
  gnupg2-minimal-2.3.7-1.amzn2023.0.4.x86_64

Complete!

その後、再度以下を実行しました。

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
gpg: /home/newuser/.gnupg/trustdb.gpg: trustdb created
gpg: key 5A125630709DD64B: public key "Snowflake Computing (Snowflake Computing Gpg key) <snowflake_gpg@snowflake.net>" imported
gpg: Total number processed: 1
gpg:               imported: 1

https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/gnupg-minimal.html

https://dev.classmethod.jp/articles/ecs-anywhere-amazon-linux-2023-gpg/

ドライバ パッケージをダウンロード

以下のコマンドで Snowflake ODBC ドライバ パッケージをダウンロードします。

wget https://sfc-repo.snowflakecomputing.com/odbc/linux/3.5.0/snowflake-odbc-3.5.0.x86_64.rpm

https://www.snowflake.com/en/developers/downloads/odbc/

RPM ドライバー パッケージの署名を確認します。

# キーが正常にインポートされたことを確認
$ gpg --list-keys
/home/newuser/.gnupg/pubring.kbx
--------------------------------
pub   rsa4096 2024-09-16 [SC] [expires: 2026-09-16]
      F46822FE012CC3FF371724F75A125630709DD64B
uid           [ unknown] Snowflake Computing (Snowflake Computing Gpg key) <snowflake_gpg@snowflake.net>
sub   rsa4096 2024-09-16 [E] [expires: 2026-09-16]

# 署名を確認
$ rpm -K snowflake-odbc-3.5.0.x86_64.rpm
snowflake-odbc-3.5.0.x86_64.rpm: digests SIGNATURES NOT OK

ドキュメントにもあるように、rpmインポートした GPG キーがない場合、上記の出力となるので、ここでは続けて以下を実行しました。

# GPGキーをエクスポート
$  gpg --export -a 5A125630709DD64B > odbc-signing-key.asc

# GPGキーをRPMにインポート
$  sudo rpm --import odbc-signing-key.asc

# RPMファイルの署名を再度検証
$  rpm -K snowflake-odbc-3.5.0.x86_64.rpm
snowflake-odbc-3.5.0.x86_64.rpm: digests signatures OK

ODBCドライバーをインストール

続けて、以下のコマンドでパッケージをインストールします。

$ sudo dnf install -y snowflake-odbc-3.5.0.x86_64.rpm
Last metadata expiration check: 0:26:56 ago on Wed Dec 18 04:58:57 2024.
Dependencies resolved.
=============================================================================================================================================================================================================================================
 Package                                                      Architecture                                         Version                                                  Repository                                                  Size
=============================================================================================================================================================================================================================================
Installing:
 snowflake-odbc                                               x86_64                                               3.5.0-1                                                  @commandline                                                62 M

Transaction Summary
=============================================================================================================================================================================================================================================
Install  1 Package

Total size: 62 M
Installed size: 208 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                                     1/1
  Installing       : snowflake-odbc-3.5.0-1.x86_64                                                                                                                                                                                       1/1
  Running scriptlet: snowflake-odbc-3.5.0-1.x86_64                                                                                                                                                                                       1/1
[WARN] SF_ACCOUNT is not set, please manually update the odbc.ini file after installation
Adding driver info to odbcinst.ini...
odbcinst: Driver installed. Usage count increased to 1.
    Target directory is /etc
Adding connect info to odbc.ini...
odbcinst: Sections and Entries from stdin have been added to ODBC.INI
Adding Simba Snowflake ini...
Creating a symlink /usr/lib64/libodbccr.so.1...

  Verifying        : snowflake-odbc-3.5.0-1.x86_64                                                                                                                                                                                       1/1

Installed:
  snowflake-odbc-3.5.0-1.x86_64

Complete!

ODBCドライバーを構成する

ドライバーをインストール後、後述する手順で構成を行います。この際、構成に必要な各種パスの情報は以下です。

  • インストール ディレクトリ: /usr/lib64/snowflake/odbc/
  • simba.snowflake.ini<path>/lib/simba.snowflake.ini
  • odbcinst.ini/etc/odbcinst.ini
  • odbc.ini/etc/odbc.ini

※<path>:/usr/lib64/snowflake/odbc

simba.snowflake.ini ファイルを変更

simba.snowflake.ini ファイルにドキュメント記載のエントリを追加します。

# ファイルの内容を確認
$ cat /usr/lib64/snowflake/odbc/lib/simba.snowflake.ini
[Driver]
DriverManagerEncoding=UTF-16
DriverLocale=en-US
ErrorMessagesPath=/usr/lib64/snowflake/odbc/ErrorMessages
LogNamespace=
LogPath=/tmp
ODBCInstLib=libodbcinst.so
CURLVerboseMode=false
#LogLevel=6
CABundleFile=/usr/lib64/snowflake/odbc/lib/cacert.pem

ドキュメントを参考に、ここでは以下の内容を追記しました。

ODBCInstLib=/usr/lib64/libodbcinst.so.2
ANSIENCODING=UTF-8

odbcinst.ini ファイルにエントリを変更

こちらはインストールとあわせて[SnowflakeDSIIDriver]の項目がすでに追加されていました。

# ファイルの内容を確認
$ cat /etc/odbcinst.ini
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1

[MySQL]
Description=ODBC for MySQL 8
Driver=/usr/lib/unixODBC/libmyodbc8.so
Driver64=/usr/lib64/unixODBC/libmyodbc8.so
FileUsage=1

[MySQL-5]
Description=ODBC for MySQL 5
Driver=/usr/lib/libmyodbc5.so
Driver64=/usr/lib64/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[FreeTDS]
Description=Free Sybase & MS SQL Driver
Driver=/usr/lib/libtdsodbc.so
Setup=/usr/lib/libtdsS.so
Driver64=/usr/lib64/libtdsodbc.so
Setup64=/usr/lib64/libtdsS.so
Port=1433

[MariaDB]
Description=ODBC for MariaDB
Driver=/usr/lib/libmaodbc.so
Driver64=/usr/lib64/libmaodbc.so
FileUsage=1

[SnowflakeDSIIDriver]
APILevel=1
ConnectFunctions=YYY
Description=Snowflake DSII
Driver=/usr/lib64/snowflake/odbc/lib/libSnowflake.so
DriverODBCVer=03.52
SQLLevel=1
UsageCount=1

DSN を設定

odbc.iniファイルを編集し、DSN を追加します。内容を確認すると、デフォルトで [snowflake]の名称で DSN が追加されていました。

$ cat /etc/odbc.ini
[snowflake]
Description=SnowflakeDB
Driver=SnowflakeDSIIDriver
Locale=en-US
SERVER=SF_ACCOUNT.snowflakecomputing.com
PORT=443
SSL=on
ACCOUNT=SF_ACCOUNT

ここでは検証なので、既存の DSN を編集しSF_ACCOUNTを実際の Snowflake アカウントの接続 URL に変更しました(PrivateLink 用に構成していたのでその設定としています)。

# ファイルを編集
$ sudo vi /etc/odbc.ini

# 変更内容を確認
$ cat /etc/odbc.ini
[snowflake]
Description=SnowflakeDB
Driver=SnowflakeDSIIDriver
Locale=en-US
SERVER=<アカウント識別子>.us-east-1.privatelink.snowflakecomputing.com
PORT=443
SSL=on
ACCOUNT=<アカウント識別子>.us-east-1.privatelink

接続テスト

DSN を追加後、ここでは簡単にユーザー名・パスワードを環境変数として設定し、isql で、Snowflake に接続し、SQL クエリを実行してみます。

# 環境変数を設定
export SNOWSQL_USER="<ユーザー名>"
export SNOWSQL_PWD="<パスワード>"

# Snowflakeに接続
isql -v snowflake $SNOWSQL_USER $SNOWSQL_PWD

SQL クエリを実行できました。

SQL> use warehouse compute_wh;
SQLRowCount returns -1
SQL> SELECT * FROM sample_db.public.ts1;
+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+
| ID                                                                                                                                      | NAME                                                                                                                                                                                                           | CREATED_AT                   |
+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+
| 1                                                                                                                                       | Alice                                                                                                                                                                                                           | 2024-12-13 19:31:27.182000000|
| 2                                                                                                                                       | Bob                                                                                                                                                                                                           | 2024-12-13 19:31:27.182000000|
| 3                                                                                                                                       | Charlie                                                                                                                                                                                                           | 2024-12-13 19:31:27.182000000|
| 4                                                                                                                                       | Diana                                                                                                                                                                                                           | 2024-12-13 19:31:27.182000000|
| 5                                                                                                                                       | Tom                                                                                                                                                                                                           | 2024-12-13 19:46:27.598000000|
| 6                                                                                                                                       | Sam                                                                                                                                                                                                           | 2024-12-13 20:03:05.894000000|
+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+
SQLRowCount returns 6
6 rows fetched

さいごに

Amazon Linux 2023 に Snowflake ODBC ドライバーをインストールし、Snowflake に接続してみました。
こちらの内容が何かの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.