1
2

AWS CloudShellにdyneinをインストールする

Posted at

CloudShell上でdyneinを利用しようとしたがうまく行かなかった。それらを対処した手順を残しておく。(2024-02-17)

実行したコマンドを載せていますが、自己責任で実行をお願いします。

dynein

Rustで記載されたDynamoDBのCLIツール。少ない記述でDynamoDBを操作することが出来る。例えば、下記の記載で現在参照中のテーブルに対して、primary keyがabcであるものを検索される。

取得コマンド例
dy get abc

dyneinをCloudShellにインストールする

CloudShellでは、永続的なストレージとして扱えるのはホームディレクトリのみとなっている。そのため、公式手順のままインストールをしてしまうと、CloudShellが再起動されるたびに再インストールが必要となる。

これを回避するため、ホームディレクトリ直下にtoolsというフォルダを作成し、そのフォルダをインストール場所として作業を進めていく。

dyneineをインストールする

基本的には公式の手順に従って進めていくが、ファイルの配置場所はホームディレクトリ配下に変更する。フォルダ構成などはパッケージをインストールした時と同じ形にしたいため、ひとまず適当なパッケージをインストールする。また、公式の手順の実施のみではlibssl.so.1.1が存在せず、エラーとなってしまうため、こちらも合わせて配置する。

適当なパッケージをインストール

適当なパッケージをインストールしていく。ここでは nkf (Network Kanji Filter) を選択した。下記コマンドでインストールする。

nkfのインストール
cd ~
mkdir -p tools
# フォルダ指定でインストール
sudo dnf install -y --installroot=/home/cloudshell-user/tools nkf
# パスを通す
cp .bashrc .bashrc_bk # 念のためにバックアップを取っておく
cat .bashrc | sed '$aexport PATH=$PATH:/home/cloudshell-user/tools/bin' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc

下記のようなフォルダが作成されていることが確認できる。

ls tools/
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Unicodeエスケープ文字列が変換できることを確認する。

エスケープ文字列を変換
echo "\u65e5\u672c\u8a9e" | sed 's/\\\u\(....\)/\&#x\1;/g' | nkf --numchar-input -w
日本語 # 出力

下記記事を参照

dyneinをインストールする

公式の手順に従ってインストールする。配置場所のみ変更する。

dyneinのインストール
curl -O -L https://github.com/awslabs/dynein/releases/latest/download/dynein-linux.tar.gz
tar xzvf dynein-linux.tar.gz
sudo mv dy ~/tools/usr/local/bin/
# パスを通す
cd ~
cat .bashrc | sed '$aexport PATH=$PATH:/home/cloudshell-user/tools/usr/local/bin' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc

下記コマンドでdyneinがインストールされたことを確認する。現在の状態ではlibssl.so.1.1が存在しないためエラーとなる。

インストール後の確認
dy --help
dy: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

OpenSSL 1.1.1をインストールする

libssl.so.1.1 は OpenSSL 1.1.1 に存在するファイルのようだ。amazon-linux-2023では、OpenSSL 3.0.8 がインストールされており、OpenSSL 1.1.1 はインストールされていない。サポートは終了しているため好ましくないが、インストールしていく。

OpenSSL 1.1.1 のインストール
# ビルドに必要なパッケージをインストール
sudo dnf install -y gcc perl-FindBin perl-open perl-YAML perl-YAML-Tiny perl-File-HomeDir perl-Unicode-LineBreak perl-lib perl-File-Compare perl-File-Copy
# インストール
curl -O -L https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
sudo ./config --prefix=/home/cloudshell-user/tools/usr/local/ssl
sudo make
sudo make install
# パスを通す
cd ~
cat .bashrc | sed '$aexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/cloudshell-user/tools/usr/local/ssl/lib' > .bashrc_tmp
mv .bashrc_tmp .bashrc
source .bashrc

下記コマンドを実行する。バージョンが表示されれば問題なくインストールされている。CloudShellを再起動した場合でも問題なく実行できることを確認する。

インストール後の確認
dy --version
dynein 0.2.1 # 出力

利用したファイルは削除しておく。

利用したファイルの削除
cd ~
rm dynein-linux.tar.gz 
rm openssl-1.1.1w.tar.gz 
rm -rf openssl-1.1.1w/

参考ページ

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2