twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル AWS用コマンドライン ツールの紹介

AWS用コマンドライン ツールの紹介

原文へのリンクは、こちらです。

Amazon Web Service (ASW) は、AWSマネジメント コンソールという WEB ベースの機能的で使いやすいコンソールを持っています。それは、AWS インフラの上で複雑なタスクを実行するのに適した非常にすばらしいものですが、Linux システムの管理者としては、もっとコンソールらしいインタフェースが欲しいところです。

2013 年 9 月始め、Amazon は、awscliバージョン1.0 をリリースしました。これは、AWS サービスを管理するための強力なコマンドライン インタフェースを備えています。

awscli command terminal

以下の 2 つの章で、awscli を用いて、AWS サービスのプロビジョニングを行う例を紹介します。

ここでは、AWSの無料利用枠の範囲内で使用するため、読者は Amazon の料金ポリシーを良く理解してください。

AWS に詳しくなく、詳細を理解したい方のために、Amazon が使用開始ドキュメントを提供しています。

最後に、Python の現行バージョンと、awscli を利用するための Amazon アカウントが必要です。



インストールと設定

pip を使って、awscli をインストールします。独立した Python 環境にインストールする場合は、「virtualenv」をチェックしてください。

$ pip  install awscli

次に、awscli 使用に必要な ~/.aws/config ファイルを作成します。

$ aws  configure

皆さんが使いたいリージョンを選択してください。一般的に、近いリージョンほどインターネット接続の遅延が小さいことに気をつけてください。

リージョンは 8 個あります。

  • ap-northeast-1
  • ap-southeast-1
  • ap-southeast-2
  • eu-west-1
  • sa-east-1
  • us-east-1
  • us-west-1
  • us-west-2

次に、出力の形式を選びます。標準では、表形式になっています。表形式は、読みやすく、理解
しやすいため、aws の初心者には最適です。

json形式は、jq のようなツールを使って、awscli の出力をプログラム的に処理する場合に適しています。テキスト形式は、grep、awk のような伝統的な UNIX ツールを使って処理する場合に適しています。

Proxyを使う場合は、環境変数 HTTP_PROXY HTTPS_PROXY に設定します。



第一段階

それでは、AWS とつなぎましょう。

$ aws ec2  describe-regions

Ec2 をサポートしている AWS リージョンの Endpoint と RegionName を含む表が出力されます。

$ aws ec2  describe-availability-zones

設定しているリージョンの AWS のアベイラビリティ ゾーンが出力されます。

設定しているリージョン以外の情報を得ることもできます。

$ aws ec2  describe-availability-zones --region us-west-2

--region 引数を指定することにより、設定済みのリージョン以外の情報を得ることができます。



Ec2 インスタンスのプロビジョニング

それでは、awscli を使って、Ec2 サーバーをビルドしてみましょう。

Ec2 サーバーに、SSH 鍵をインポートすることができます。Ec2 サーバーは物理コンソールを持たないため、SSH を使ってアクセスします。

SSH の公開鍵を AWS 内に格納します。公開鍵と秘密鍵の生成は、AWS で実行しても良いですし、自分で生成してもかまいません。

ここでは、自分で生成します。

$  ssh-keygen -t rsa -f ~/.ssh/ec2 -b 4096

適当に複雑なパスフレーズを入力して、得られた公開鍵を AWS に格納します。

$ >aws ec2 import-key-pair --key-name my-ec2-key \
   --public-key-material "$(cat  ~/.ssh/ec2.pub)"

--public-key-material 引数には、公開鍵へのパスではなく、公開鍵そのものを指定します。

新しくセキュリティ グループを生成し、自分達のワークステーションの外部 IP アドレス用にポート 22/tcp を開けます。セキュリティ グループを使って、ファイアウォールと同様に、Ec2 インスタンスの入出力を制御できます。

私は通常、ifconfig.me を使って外部 IP アドレスを調べます。

$ curl  ifconfig.me
   198.51.100.100

外部 IP アドレスがわかったら、セキュリティ グループを生成し、入力用ルールを設定します。

$ aws ec2  create-security-group \
   --group-name MySecurityGroupSSHOnly \
   --description "Inbound SSH only from  my IP address"
   $ aws ec2  authorize-security-group-ingress \
   --group-name MySecurityGroupSSHOnly \
   --cidr 198.51.100.100/32 \
   --protocol tcp --port 22

Linux用 Ec2 マシンをプロビジョニングするためには、Amazon Machine Image (AMI) ID が必要です。既に持っていれば、次のステップは省略してください。

 MI IDは、リージョンごとに異なります。describe-images 引数を使用して、2013-12-12 にリリースされた Amazon Linux AMI 2013.09.2 の AMI ID を入手します。

このAMIの名称 (name) は、amzn-ami-pv-2013.09.2.x86_64-ebs で、owner は、amazon です。

$ aws ec2  describe-images --owners amazon \
   --filters  Name=name,Values=amzn-ami-pv-2013.09.2.x86_64-ebs

 -owners name フィルターを併用することで、AMI に関するより重要な情報を入手できます。

ここで、重要なことは ImageId を確認することです。ap-southeast-2 リージョンの場合、ImageId は、ami-5ba83761 です。

$ aws ec2  run-instances --image-id ami-5ba83761 \
   --key-name my-ec2-key --instance-type  t1.micro \
   --security-groups MySecurityGroupSSHOnly

run-instances コマンドは複数インスタンスを生成し、大量のデータを出力します。

InstanceID : Ec2インスタンスの ID で、awscli コマンドで、プロビジョンされたマシンを指定するときに用います。
InstanceType : インスタンスのタイプを表します。これは、CPU、メモリ、ストレージとネットワークを組み合わせたセットになっています。たとえば、t1.micro は最も小さいインスタンス タイプで、AWS の初心者用であり、AWSの無料利用枠に入っています。
PublicDnsName : 新サーバーをプロビジョンしたときに AWS が自動生成する DNS レコードで、PublicIPAddress 下にある外部 IP アドレスの解決に使います。
GroupID : Ec2 インスタンスが関連付けされているセキュリティ グループ

 run-instance が成功したら、次は Ec2 インスタンスのブートです。

$ aws ec2  descirb-instances

すぐに、Ec2 インスタンスがプロビジョニングされます。ユーザー ec2-user を使って、SSH で接続します。describe-instances の出力の PublicDnsName を使って SSH 接続します。接続後、sudo コマンドで、root になります。

$ ssh -i  ~/.ssh/ec2 -l ec2-user \
   ec2-203-0-113-100.ap-southeast-2.compute.amazonaws.com

 get-console-output 引数を使い、インスタンス・ブート後の Linux コンソールを見ることができます。get-console-output とパイプを使って、sed コマンドとつなげ、改行処理をします。

$ aws ec2  get-console-output --instance-id i-0d9c2b31 \
   | sed 's/\\n/\n/g' | sed 's/\\r/\r/g'                           
Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ

  1. Today's Linux 2018/01/10 2018年 1月 09日
  2. Today's Linux 2018/01/12 2018年 1月 11日
  3. Today's Linux 2018/01/15 2018年 1月 14日
  4. Today's Linux 2018/01/16 2018年 1月 15日
  5. Today's Linux 2018/01/17 2018年 1月 16日

Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!