AWS Command Line Interface
ユーザーガイド

チュートリアル: AWS CLI を使用して Amazon EC2 開発環境をデプロイする

このチュートリアルでは、AWS Command Line Interface (AWS CLI) を使用して Amazon Elastic Compute Cloud (Amazon EC2) で開発環境をセットアップする方法について説明します。インストールおよび設定手順のショートバージョンが含まれています。Windowsや Linux, macOS, or Unix で最初から最後まで実行できます。

ステップ 1: AWS CLI をインストールする

AWS CLI のインストールには、インストーラ (Windows) または Python のパッケージマネージャーである pip を使用できます。

Windows

  1. MSI インストーラをダウンロードします。

  2. ダウンロードした MSI インストーラを実行します。

  3. 表示される手順に従います。

Linux, macOS, or Unix

これらのステップには、Python 2 バージョン 2.6.5+ または Python 3 バージョン 3.3+ がインストールされ動作している必要があります。以下の手順を使用して問題が発生した場合は、AWS Command Line Interface ユーザーガイド の完全インストールの手順を参照してください。

  1. pip をインストール済みの場合は、ステップ 2 へスキップしてください。pip をまだインストールしていない場合は、pip のウェブサイトからインストールスクリプトをダウンロードして実行します。

    $ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1622k 100 1622k 0 0 14.9M 0 --:--:-- --:--:-- --:--:-- 14.9M $ python3 get-pip.py --user Collecting pip Using cached https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl Collecting setuptools Using cached https://files.pythonhosted.org/packages/e7/16/da8cb8046149d50940c6110310983abb359bbb8cbc3539e6bef95c29428a/setuptools-40.6.2-py2.py3-none-any.whl Collecting wheel Using cached https://files.pythonhosted.org/packages/ff/47/1dfa4795e24fd6f93d5d58602dd716c3f101cfd5a77cd9acbe519b44a0a9/wheel-0.32.3-py2.py3-none-any.whl Installing collected packages: pip, setuptools, wheel The script wheel is installed in '/home/myusername/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

    --user スイッチは、ユーザーのローカルホームディレクトリに pip をインストールすることを指定します。これは、root/administrator アクセス許可がない場合に必要です。--user を指定しなかった場合、pip はすべてのユーザーについてシステムフォルダへのインストールを試みます。

  2. pip インストールフォルダが PATH 環境変数にあることを確認してください。ない場合は通常、前の例に示されているように、インストーラにその旨が表示されます。これに対処するには、次のようなステートメントをシェルの RC スクリプトの末尾に追加します。これは、pip がホームディレクトリの .local/bin フォルダにインストールされている場合に適切です。

    export PATH=~/.local/bin:$PATH
  3. これで、pip を使用して AWS CLI をインストールできます。

    $ pip install awscli --user

    繰り返しになりますが、--user スイッチを使用して、root/administrator アクセス許可が不要なローカルホームフォルダに AWS CLI をインストールすることをお勧めします。

ステップ 2: AWS CLI の設定

まず、認証情報とデフォルト設定で AWS CLI を設定します。

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-2 Default output format [None]: json

AWS CLI は、以下の情報を要求します。

  • AWS アクセスキー ID と AWS シークレットアクセスキー – これらは、ユーザーまたはアカウントの認証情報です。キーを持っていない場合は、アマゾン ウェブ サービス全般のリファレンスアクセスキー (アクセスキー ID とシークレットアクセスキー) を参照してください。

  • デフォルトのリージョン名 – CLI がデフォルトでリクエストを送信する AWS リージョンの名前です。

  • デフォルトの出力形式 – これは、CLI がデフォルトで使用する出力形式を指定します。値には、jsontexttable などがあります。出力形式を指定しない場合、json が使用されます。

では、単純なコマンドを試して、認証情報が正しく設定されていることと、AWS に接続できることを確認します。

$ aws ec2 describe-regions --output table ---------------------------------------------------------- | DescribeRegions | +--------------------------------------------------------+ || Regions || |+-----------------------------------+------------------+| || Endpoint | RegionName || |+-----------------------------------+------------------+| || ec2.ap-south-1.amazonaws.com | ap-south-1 || || ec2.eu-west-3.amazonaws.com | eu-west-3 || || ec2.eu-west-2.amazonaws.com | eu-west-2 || || ec2.eu-west-1.amazonaws.com | eu-west-1 || || ec2.ap-northeast-3.amazonaws.com | ap-northeast-3 || || ec2.ap-northeast-2.amazonaws.com | ap-northeast-2 || || ec2.ap-northeast-1.amazonaws.com | ap-northeast-1 || || ec2.sa-east-1.amazonaws.com | sa-east-1 || || ec2.ca-central-1.amazonaws.com | ca-central-1 || || ec2.ap-southeast-1.amazonaws.com | ap-southeast-1 || || ec2.ap-southeast-2.amazonaws.com | ap-southeast-2 || || ec2.eu-central-1.amazonaws.com | eu-central-1 || || ec2.us-east-1.amazonaws.com | us-east-1 || || ec2.us-east-2.amazonaws.com | us-east-2 || || ec2.us-west-1.amazonaws.com | us-west-1 || || ec2.us-west-2.amazonaws.com | us-west-2 || |+-----------------------------------+------------------+|

ステップ 3: Amazon EC2 インスタンスのセキュリティグループおよびキーペアを作成する

このステップでは、Secure Shell (SSH) プロトコルを使用して接続された端末エミュレータでアクセスできる Amazon EC2 インスタンスを起動するための前提条件をセットアップします。Amazon EC2 と機能の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド を参照してください。

Amazon EC2 が EC2 インスタンスと通信するためには、以下の前提条件が必要です。

  • セキュリティグループ – インスタンスへの進入と退出が許されるネットワークトラフィックを決定します。セキュリティグループは、そのグループにアタッチされているインスタンスの仮想ファイアウォールとして考えることができます。セキュリティグループには、インバウンドおよびアウトバウンドネットワークトラフィックを制御するルールが含まれます。

  • キーペア – パブリックキー暗号は、パブリックキーを使用してパスワードなどのデータを暗号化し、受信者はプライベートキーを使用してデータを復号化します。Amazon EC2 は指定されたキーペアを使用して、インスタンスへのアクセスに使用される認証情報を暗号化します。

セキュリティグループとキーペアを作成するには

  1. インスタンスを起動する VPC のセキュリティグループを作成します。アカウントのデフォルトの VPC を使用している場合は、--vpc-id パラメータを省略できます。その他の場合は、インスタンスを起動する VPC の ID を指定します。出力には、新しいセキュリティグループの識別子が示されます。

    $ aws ec2 create-security-group --group-name devenv-sg --vpc-id vpc-xxxxxxxx --description "Security group for development environment" { "GroupId": "sg-b018ced5" }
  2. インスタンスへの接続に使用する CIDR ネットワークアドレス範囲からポート 22 へのインバウンドネットワークトラフィックを可能にするセキュリティグループのルールを作成します。

    重要

    この例は、インターネットのあらゆる場所からのインバウンドトラフィックを有効にする 0.0.0.0/0 CIDR 範囲を示しています。これをインスタンスに接続する (AWS によって見られる) ネットワークの public CIDR 範囲に置き換えることを強くお勧めします。

    $ aws ec2 authorize-security-group-ingress --group-name devenv-sg --protocol tcp --port 22 --cidr 0.0.0.0/0

    セキュリティグループ ID を書き留めます。後でインスタンスを起動するときに必要になります。

  3. インスタンスへの接続に使用する SSH 暗号キーペアを作成します。この例のコマンドは、キーの内容を devenv-key.pem という名前のファイルに保存する方法を示しています。

    $ aws ec2 create-key-pair --key-name devenv-key --query "KeyMaterial" --output text > devenv-key.pem

    --query "KeyMaterial" パラメータは、必要な出力部分だけを .pem ファイルに抽出します。

    --query パラメータの二重引用符

    このトピックの例のうち、--query パラメータを含んでいるものはすべて、二重引用符を使用しています。Linux では、--query パラメータに単一引用符を使用しますが、Windows コマンドプロンプトでは、単一引用符ではなく、二重引用符を使用する必要があります。

  4. Linux では、新しいキーファイルのアクセスを変更して、ユーザーだけがアクセスできるようにしてください。

    $ chmod 400 devenv-key.pem

ステップ 4: インスタンスを起動し接続する

これで、インスタンスを起動して接続する準備ができました。

インスタンスを起動し接続するには

  1. 次のコマンドを、前のステップで作成したセキュリティグループの ID を使用して実行します。--image-id パラメータでは、Amazon EC2 がインスタンスをブートストラップするために使用する Amazon マシンイメージ (AMI) を指定します。AWS リージョンおよびオペレーティングシステムのイメージ ID は、Amazon EC2 コンソールを使用して確認できます。デフォルト VPC のデフォルトのサブネットを使用している場合は、--subnet-id パラメータを省略できます。その他の場合は、インスタンスを起動するサブネットの ID を指定します。

    注記

    この例は、Linux の「\」行連結文字を使用して複数行に分割されたコマンドを示しています。もちろん、すべてを 1 行で送信することもできます。Windows コマンドラインでは、「\」を「^」に置き換えます。

    $ aws ec2 run-instances --image-id ami-xxxxxxxx \ --subnet-id subnet-xxxxxxxx \ --security-group-ids sg-b018ced5 \ --count 1 \ --instance-type t2.micro \ --key-name devenv-key \ --query "Instances[0].InstanceId" "i-0787e4282810ef9cf"
  2. インスタンスが起動するまで、少し時間がかかります。インスタンスの起動後、インスタンスへの接続に必要なインスタンスのパブリック IP アドレスは、以下のコマンドを使用して取得できます。

    $ aws ec2 describe-instances --instance-ids i-0787e4282810ef9cf --query "Reservations[0].Instances[0].PublicIpAddress" "54.183.22.255"
  3. インスタンスに接続するには、パブリック IP アドレスとプライベートキーの .pem ファイルを任意のターミナルプログラムで使用します。Linux, macOS, or Unix では、コマンドラインから次のコマンドを使用して実行できます。

    $ ssh -i devenv-key.pem user@54.183.22.255

    インスタンスへの接続で、「Permission denied(publickey)」などのエラーが発生した場合は、以下が正しいことを確認します。

    • キー – 指定されたキーが指定されたパスにあり、プライベートキーである (パブリックキーではない)。キーのアクセス権限が所有者のみに制限されている。

    • ユーザー – ユーザー名がインスタンスの起動に使用された AMI に関連付けられているデフォルトのユーザー名と一致している。Ubuntu AMI の場合は ubuntu です。Amazon Linux AMI の場合は、ec2-user です。

    • インスタンス – インスタンスのパブリック IP アドレスまたは DNS 名。アドレスがパブリックであること、およびポート 22 がインスタンスのセキュリティグループのローカルマシンに対して開かれていることを確認してください。

    -v オプションを使用してエラーに関連する追加情報を表示することもできます。

    Windows の SSH

    Windows では、ここで入手できる PuTTY ターミナルアプリケーションを使用できます。ダウンロードページから putty.exe および puttygen.exe を入手します。

    puttygen.exe を使用して、プライベートキーを PuTTY で必要な .ppk ファイルに変換します。putty.exe を起動し、インスタンスのパブリック IP アドレスを [Host Name] フィールドに入力して、接続タイプを SSH に設定します。

    [Category (カテゴリ)] パネルで、[Connection (接続)]、[SSH]、[Auth] の順に移動し、[Browse] をクリックして .ppk ファイルを選択します。次に、[Open] をクリックして接続します。

  4. ターミナルはサーバーのパブリックキーを受け入れるように要求します。yes と入力して、Enter キーを押し、接続を完了します。

これで、セキュリティグループの構成、キーペアの作成、EC2 インスタンスの起動、およびインスタンスへの接続が、コマンドラインを離れることなく完了しました。