こんにちは。AWSを触り始めて約半年、入社2年目。プラットフォーム技術部の大畑です。

先日、CentOS 5.11環境でAWS CLIを使う機会があったのですが、主な導入方法として公式で紹介されているpipではインストールすることが出来ず、導入前から若干ハマるという事件が起こりました。

CentOSと言えば、2018年5月現在の最新バージョンは7系ですが、場合によっては古いOSを使い続けなければならないこともあるかと思います。

そこで本記事では、CentOS 5.11におけるAWS CLIの導入方法についてまとめてみたいと思います。

※CentOS 5系のサポート期限は2017年3月31日で切れています。
 今から導入する人はくれぐれも化石バージョンを選ばないようにしましょう。

環境・制約条件

  • CentOS 5.11
  • なるべく現行システムに変更を加えない
  • 最低限のツールのみをインストールする

導入方法

Python 2.6の導入

AWS CLIをインストールするために必要な要件は以下となります。

  • Python 2 バージョン 2.6.5+ または Python 3 バージョン 3.3+
  • Windows、Linux, macOS, or Unix

CentOS 5.11標準のpythonは2.4ですが、CentOS5用のEPELにPython2.6が用意されているので、まずはEPELからPython2.6をインストールします。

下記のように、pythonコマンドでは標準の2.4を、python26コマンドでは新しく導入した2.6を指していることが確認できればOKです。

get-pip.pyのインストール

公式ページにある通り、LinuxでのAWS CLIの主な導入方法はpipによるインストールとなっています。
pipは、インストールスクリプトget-pip.pyを実行することでインストールできます。

ということで、まずはget-pip.pyをダウンロードしようと思います。

あれ・・・いきなりエラー・・・

Google先生に聞いてみたところ、以下内容がヒットしました。

CentOS5/RHEL5に含まれるOpenSSLは0.9.8eのため、curlなどOpenSSLをベースにアウトバウンドのhttps通信を行う場合、SHA-2やTLS1.2には未対応です(SHA-2はOpenSSL 0.9.8o以降、TLS1.2はOpenSSL 1.0.1以降が必要)。 
(http://fusic-kiban.hatenablog.com/entry/2016/10/03/085827)

残念。オンラインでget-pip.pyをゲットすることは難しそうです。

今回は”現行システムに手を加えない”という制約条件がありますし、そもそも標準パッケージに手を加えるのは怖いので、OpenSSLのバージョンアップ等はせずに他の手を考えます。

get-pip.pyをローカルからCentOSにSCP転送

ならば、ターミナルのSCP転送機能を使い、ローカルからCentOSへファイルを転送すれば良いのではと(安易な考えを)思いつく。
URLからローカルにダウンロードしたget-pip.pyファイルを、TeraTermのSSH SCPを使用して適当なディレクトリ配下(今回は/tmp 配下)に転送後、以下。

まずは、先ほどインストールしたpython26でget-pip.pyを実行します。

続いて、pipでawscliをインストール!

できないっ!
どうやらpipの実行がうまくいかなかったようです。

調べてみると、wheelのバージョンが0.30.0だと、pipによるawscliインストールが上手くいかないことがあるとのこと。
wheelをダウングレードすれば解決する問題のようですが、 “現行システムに変更を加えない” という制約条件があるのでこれも却下。

※現在ではこの問題に対応したget-pip.pyもあるそうです。

if implicit_wheel:
args += [“wheel<0.30”]

153~154行目のこの記述でwheel 0.30未満を指定しているので、わざわざwheelをダウングレードしなくても良いそうです。

バンドルされたインストーラを使用してみる

AWSのドキュメントを漁ってみたところ、オフラインでAWS CLIをインストールできるツールがありました(公式ドキュメントはこちら)。
pipをインストールする必要もないので、こちらの方がより制約条件にマッチする方法と言えそうです。

無事、 awscli-bundle.zip をダウンロードできました!

公式ドキュメントにあるように、必要なパッケージは全てインストーラに含まれているので、インストーラの実行自体はオフラインで行うことができます。
※「スペースを含むパスへのインストールはサポートされていない」ことに注意が必要です。

続いて、先ほどダウンロードしたzipファイルを解凍し、installスクリプトが格納されているディレクトリまで移動。

それでは、いよいよaws cliをインストールします。
今回は導入したpython26でinstallスクリプトを実行したいため、python26の実行可能ファイルへの絶対パスを指定します。

上記のようにawsコマンドのバージョンが表示されれば、AWS CLIのインストールは完了です。
※2018/5/21時点での最新バージョンは1.15.24でした。

AWS CLIの使い方

初期設定

AWS CLIを使用するには、AWSのアカウント情報を紐付ける必要があります。
今回は、CLI実行用のユーザーを作成することにしました。

  1. IAMユーザー作成
  2. 権限付与:今回はS3のバケット一覧を見てみようと思うので “s3:ListAllMyBuckets” をアタッチします
  3. アクセスキーIDとシークレットアクセスキーの確認

Tokyoリージョンを使用している場合は、リージョン名に ap-northeast-1 を選択すればOKです。
リージョンコードの一覧はこちらに載っています。

また、アウトプットフォーマット(awsコマンドの実行結果がどんな形式で返ってくるか)は、 json・table・text の3つの形式から選択することが出来ます。この辺はお好みで。

設定できたら、確認。

無事にS3内のバケット一覧を取得することができました!!

おまけ

AWS CLIはアンインストールも簡単

バンドルされたインストーラでは、インストールディレクトリの外に何も配置しません(オプションのシンボリックリンク以外)。
そのため、アンインストールもコマンド2発で非常に簡単にできるのです!

シンボリックリンクの削除確認が出てきたら、 y と入力してください。
これでOKです。

OSの時刻設定が狂っているとawsコマンドは使えない

こんな感じのエラーが返ってきてしまいます。

dateコマンドを乱発して軽く調べてみましたが、許容できる誤差は約10~15分程度のようです。
15分以上時間をずらすと、s3バケットの中身を一覧表示することができませんでした。

まとめ

  • 古いバージョンのOSにAWS CLIを導入する場合、バンドルされたインストーラを使うと楽ちん
  • アンインストールも楽ちん
  • OSの時刻設定に注意

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter で「株式会社アークシステム」をフォローしよう!

CentOS 5.11 で AWS CLI を使ってみたhttps://devlog.arksystems.co.jp/wp-content/uploads/2018/05/LISA78_MBAsawaru20141018102912_TP_V-1200x881.jpghttps://devlog.arksystems.co.jp/wp-content/uploads/2018/05/LISA78_MBAsawaru20141018102912_TP_V-150x150.jpgm-oohataプラットフォーム技術部クラウド利用技術AWS,AWS CLI,CentOSこんにちは。AWSを触り始めて約半年、入社2年目。プラットフォーム技術部の大畑です。 先日、CentOS 5.11環境でAWS CLIを使う機会があったのですが、主な導入方法として公式で紹介されているpipではインストールすることが出来ず、導入前から若干ハマるという事件が起こりました。 CentOSと言えば、2018年5月現在の最新バージョンは7系ですが、場合によっては古いOSを使い続けなければならないこともあるかと思います。 そこで本記事では、CentOS 5.11におけるAWS CLIの導入方法についてまとめてみたいと思います。※CentOS 5系のサポート期限は2017年3月31日で切れています。  今から導入する人はくれぐれも化石バージョンを選ばないようにしましょう。 環境・制約条件CentOS 5.11 なるべく現行システムに変更を加えない 最低限のツールのみをインストールする導入方法 Python 2.6の導入 AWS CLIをインストールするために必要な要件は以下となります。Python 2 バージョン 2.6.5+ または Python 3 バージョン 3.3+ Windows、Linux, macOS, or UnixCentOS 5.11標準のpythonは2.4ですが、CentOS5用のEPELにPython2.6が用意されているので、まずはEPELからPython2.6をインストールします。下記のように、pythonコマンドでは標準の2.4を、python26コマンドでは新しく導入した2.6を指していることが確認できればOKです。get-pip.pyのインストール 公式ページにある通り、LinuxでのAWS CLIの主な導入方法はpipによるインストールとなっています。 pipは、インストールスクリプトget-pip.pyを実行することでインストールできます。 ということで、まずはget-pip.pyをダウンロードしようと思います。あれ・・・いきなりエラー・・・ Google先生に聞いてみたところ、以下内容がヒットしました。CentOS5/RHEL5に含まれるOpenSSLは0.9.8eのため、curlなどOpenSSLをベースにアウトバウンドのhttps通信を行う場合、SHA-2やTLS1.2には未対応です(SHA-2はOpenSSL 0.9.8o以降、TLS1.2はOpenSSL 1.0.1以降が必要)。  (http://fusic-kiban.hatenablog.com/entry/2016/10/03/085827)残念。オンラインでget-pip.pyをゲットすることは難しそうです。 今回は'現行システムに手を加えない'という制約条件がありますし、そもそも標準パッケージに手を加えるのは怖いので、OpenSSLのバージョンアップ等はせずに他の手を考えます。 get-pip.pyをローカルからCentOSにSCP転送 ならば、ターミナルのSCP転送機能を使い、ローカルからCentOSへファイルを転送すれば良いのではと(安易な考えを)思いつく。 URLからローカルにダウンロードしたget-pip.pyファイルを、TeraTermのSSH SCPを使用して適当なディレクトリ配下(今回は/tmp 配下)に転送後、以下。 まずは、先ほどインストールしたpython26でget-pip.pyを実行します。続いて、pipでawscliをインストール!できないっ! どうやらpipの実行がうまくいかなかったようです。 調べてみると、wheelのバージョンが0.30.0だと、pipによるawscliインストールが上手くいかないことがあるとのこと。 wheelをダウングレードすれば解決する問題のようですが、 '現行システムに変更を加えない' という制約条件があるのでこれも却下。 ※現在ではこの問題に対応したget-pip.pyもあるそうです。if implicit_wheel: args +=153~154行目のこの記述でwheel 0.30未満を指定しているので、わざわざwheelをダウングレードしなくても良いそうです。 バンドルされたインストーラを使用してみる AWSのドキュメントを漁ってみたところ、オフラインでAWS CLIをインストールできるツールがありました(公式ドキュメントはこちら)。 pipをインストールする必要もないので、こちらの方がより制約条件にマッチする方法と言えそうです。無事、 awscli-bundle.zip をダウンロードできました! 公式ドキュメントにあるように、必要なパッケージは全てインストーラに含まれているので、インストーラの実行自体はオフラインで行うことができます。 ※「スペースを含むパスへのインストールはサポートされていない」ことに注意が必要です。 続いて、先ほどダウンロードしたzipファイルを解凍し、installスクリプトが格納されているディレクトリまで移動。それでは、いよいよaws cliをインストールします。 今回は導入したpython26でinstallスクリプトを実行したいため、python26の実行可能ファイルへの絶対パスを指定します。上記のようにawsコマンドのバージョンが表示されれば、AWS CLIのインストールは完了です。 ※2018/5/21時点での最新バージョンは1.15.24でした。 AWS CLIの使い方 初期設定 AWS CLIを使用するには、AWSのアカウント情報を紐付ける必要があります。 今回は、CLI実行用のユーザーを作成することにしました。IAMユーザー作成 権限付与:今回はS3のバケット一覧を見てみようと思うので 's3:ListAllMyBuckets' をアタッチします アクセスキーIDとシークレットアクセスキーの確認Tokyoリージョンを使用している場合は、リージョン名に ap-northeast-1 を選択すればOKです。 リージョンコードの一覧はこちらに載っています。 また、アウトプットフォーマット(awsコマンドの実行結果がどんな形式で返ってくるか)は、 json・table・text の3つの形式から選択することが出来ます。この辺はお好みで。 設定できたら、確認。無事にS3内のバケット一覧を取得することができました!! おまけ AWS CLIはアンインストールも簡単 バンドルされたインストーラでは、インストールディレクトリの外に何も配置しません(オプションのシンボリックリンク以外)。 そのため、アンインストールもコマンド2発で非常に簡単にできるのです!シンボリックリンクの削除確認が出てきたら、 y と入力してください。 これでOKです。 OSの時刻設定が狂っているとawsコマンドは使えないこんな感じのエラーが返ってきてしまいます。 dateコマンドを乱発して軽く調べてみましたが、許容できる誤差は約10~15分程度のようです。 15分以上時間をずらすと、s3バケットの中身を一覧表示することができませんでした。 まとめ古いバージョンのOSにAWS CLIを導入する場合、バンドルされたインストーラを使うと楽ちん アンインストールも楽ちん OSの時刻設定に注意ARK Solution Development Division Developers Blog.