AWSのアクセスキーを取得する
condor_annexのようなプログラムからAWSの機能にアクセスするためには、AWSのアクセスキーを取得する必要があります。このキーがあるとプログラムから自分のAWSアカウントにアクセスしてインスタンスを立ち上げたりできるので、とても便利です。その反面、外部に漏れて悪意のある第三者に使われてしまうと、膨大な費用をAWSから請求されることもあるので気を付ける必要があります。GitHubの公開リポジトリに、ウッカリとアクセスキーを格納したファイルをpushしてしまって、そこから悪用されるケースが後を絶たないので本当に気を付けてください。
GitHub上にアクセスキーが公開されるとどんなことが起こるのか、試した方もいます。詳細は以下のWebページをご覧ください。
GitHub に AWS キーペアを上げると抜かれるってほんと???試してみよー!
AWSでもいくつか安全装置はあるため、アカウントをつくっていきなり乗っ取られても突然数十万円の請求が来るということはなかなかないのですが、クラウド環境を十分に活用するためにはその制限を外す必要があるため、その状態で乗っ取られると一気に数百台のインスタンスを立ち上げられて、気付いたときには大変なことになっていたということがあり得ます。大量の計算機を一気に使用することのできるクラウドならではの注意点です。
............と、脅しはこのくらいにしておきましょう。家の鍵をわかりやすく置いておいたら泥棒に入られて根こそぎもっていかれたというのと同じなので、それほど怖がる必要はありません。きちんと鍵さえ管理していれば、自分で機材を管理するよりよっぽど安全です。
話を進めます。
AWSのアクセスキーはIAM Management Consoleから取得します。
まず[ユーザーを追加]ボタンを押します。
ユーザー名を入力し(ここではannex-userとします)、アクセスの種類で[プログラムによるアクセス]を選びます。そして次のステップを選びます。
アクセス許可の設定で[既存のポリシーを直接アタッチ]を選び、ポリシーで[AdministratorAccess]を選びます。
次のステップでタグ付けができますが、今回は特に必要ないので更に[次のステップ: 確認]に進みます。
内容に問題が無ければ[ユーザーの作成]を押します。
これでユーザーの追加ができました。以後、condor_annexからAWSの機能にアクセスするときには、ここで表示されている[アクセスキーID]と[シークレットアクセスキー]を用います。
condor_annexの設定
アクセスキーが作成できたので、condor_annexの設定をします。~/.condorディレクトリにpublicKeyFileとprivateKeyFileを作成し、それぞれパーミッションを600にしておきます。
publicKeyFileには[アクセスキーID]を、privateKeyFileには[シークレットアクセスキー]を記述します。
-bash-4.1$ mkdir ~/.condor
-bash-4.1$ cd ~/.condor/
-bash-4.1$ touch publicKeyFile privateKeyFile
-bash-4.1$ chmod 600 publicKeyFile privateKeyFile
-bash-4.1$ vi publicKeyFile
-bash-4.1$ vi privateKeyFile
-bash-4.1$ cd ~/condor-8.8.5
condor_annexを用いてAWS上に必要な設定を行います。この処理は数分かかります。
-bash-4.1$ condor_annex -setup
Creating configuration bucket (this takes less than a minute).. complete.
Creating Lambda functions (this takes about a minute).. complete.
Creating instance profile (this takes about two minutes).. complete.
Creating security group (this takes less than a minute).. complete.
Setup successful.
-bash-4.1$
環境が正常につくられているか確認します。
-bash-4.1$ condor_annex -check-setup
Checking security configuration... OK.
Checking for configuration bucket... OK.
Checking for Lambda functions... OK.
Checking for instance profile... OK.
Checking for security group... OK.
Your setup looks OK.
-bash-4.1$
正常に認識されているようです。
インスタンスの立ち上げ
それでは、インスタンスを立ち上げてみます。インスタンスを立ち上げる際、デフォルト環境で使用できるインスタンスタイプとそうでないものがあるので注意が必要です。今回は旧世代インスタンスのm3.mediumを使用しました。
-bash-4.1$ condor_annex -count 1 -annex-name HTCondorOnAWS -aws-on-demand-instance-type m3.medium
Will request 1 m3.medium on-demand instance for 0.83 hours. Each instance will terminate after being idle for 0.25 hours.
Is that OK? (Type 'yes' or 'no'): yes
Starting annex...
Annex started. Its identity with the cloud provider is 'HTCondorOnAWS_6de43f64-5612-4ab4-bf01-5d69d7fa0ee7'. It will take about three minutes for the new machines to join the pool.
-bash-4.1$
AWSマネージメントコンソール上で、インスタンスが立ち上がっていることを確認します。
また、しばらく待ってcondor_statusで確認します。
無事にAWS上のインスタンスがpoolに登録されました。このようにして作成されたインスタンスは何も処理をしていない時間が続くと自動的に停止するようになっているため、インスタンスを立ち上げっぱなしにしてお金を無駄にしてしまう心配もないです。
参考までに、今回作成した構成も図にしておきます。
このように、condor_annexを使用することでクラウド環境構築にまつわる雑多な準備を省いて手軽に環境を立ち上げることができます。まずはこれで標準環境を立ち上げ、その後、徐々にカスタマイズしていく、というのができるのはとても便利です。
次回予告
やっと、社内向け環境と、AWSを使用したクラウド環境という、2つの環境を立ち上げることができました。このままだと、全く別の環境がそれぞれ存在することになるので、次回以降はこの2つの環境を統合し、シームレスに使用することができるようにしていきます。
第17回の公開は、2019年10月を予定しております。
プロフィール