1. 序章

この短いチュートリアルでは、EC2サービスのAWSコマンドラインインターフェースを見ていきます。

先に進む前に、AWSCLIアクセスを構成することを忘れないでください。

2. EC2インスタンスを一覧表示します

まず、EC2インスタンスを一覧表示する方法を見てみましょう。

$ aws ec2 describe-instances

出力には、インスタンスに関する必要なすべてのデータがJSON形式で含まれます。 最も便利なプロパティのいくつかは次のとおりです。

{
  "InstanceId": "instance_id",
  "InstanceType": "t2.small",
  "KeyName": "ssh_key_name",
  "LaunchTime": "2020-01-31T15:48:22.000Z",
  "Monitoring": {
    "State": "disabled"
  },
  "Placement": {
    "AvailabilityZone": "eu-central-1c"
  },
  "PublicIpAddress": "1.123.123.12",
  "State": {
    "Code": 80,
    "Name": "stopped"
  },
  "Tags": [
    {
      "Key": "Creator",
      "Value": "Baeldung"
    }
  ]
}

CLIを使用して、特定のプロパティでインスタンスをフィルタリングすることもできます。 そのためには、 –filtersパラメーターを追加する必要があります。

たとえば、特定のタイプのインスタンスを検索できます。

$ aws ec2 describe-instances --filters Name=instance-type,Values=t2.medium

またはタグキー:

$ aws ec2 describe-instances --filters "Name=tag-key,Values=Baeldung"

これにより、フィルターに一致するインスタンスのみが返されます。

特定のEC2インスタンスの詳細を取得するには、 –instance-idsパラメーターに続いてインスタンスIDのリストを渡す必要があります。

$ aws ec2 describe-instances --instance-ids instance_id instance_id_2

3. EC2インスタンスの新しいキーペアを作成する

新しいEC2インスタンスを起動する前に、それに接続するために使用するSSHキーペアが必要です。

AWS CLIは、キーを生成するための簡単な方法として提供します。

$ aws ec2 create-key-pair --key-name BaeldungKey --output text > BaeldungKey.pem

上記のコマンドは、AWSに BaeldungKey という名前の新しいキーを作成し、秘密キーを指定した場所(この場合は BaeldungKey.pem )に直接パイプします。

結果のファイルは次のようになります。

-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyO
...
-----END RSA PRIVATE KEY-----

これで、新しいEC2インスタンスの作成中に使用できます。

4. 新しいEC2インスタンスを起動する

AWS CLIを使用すると、新しいEC2インスタンスを簡単に起動できます。 前提条件として、 pem キーペアを準備し、目的の Amazonマシンイメージ(AMI)とインスタンスタイプを選択する必要があります。

AMIは、インスタンスのオペレーティングシステム、アプリケーションサーバー、およびアプリケーションを提供します。 ただし、インスタンスタイプは、CPUやRAMなどのハードウェアプロパティを定義します。

例として、ID ami-0b418580298265d5cでUbuntu18.04イメージを実行するt2.microインスタンスを作成します。

$ aws ec2 run-instances --image-id ami-0b418580298265d5c --instance-type t2.micro --key-name BaeldungKey

出力には、新しいインスタンスに関するすべてのデータがJSON形式で含まれます。 さらに重要なものは次のとおりです。

{
  "Instances": [
    {
      "PrivateDns": "ip-10-31-39-158.eu-central-1.compute.internal",
      "Status": "booting",
      "InstanceId": "9b137a0d-2f5d-4cc0-9704-13da4b31fdcb",
      "SshKeyName": "EU-Central-1",
      "InstanceType": "t2.micro",
      "CreatedAt": "2020-02-07T11:00:00+00:00",
      "PublicDns": "ec2-192-0-2-1.eu-central-1.compute.amazonaws.com",
      "SecurityGroupIds": [
        "sg-b022add5"
      ],
      "Architecture": "x86_64",
      "RootDeviceType": "ebs",
      "Os": "Server Ubuntu 18.04",
      "AvailabilityZone": "eu-central-1c",
      "PrivateIp": "10.31.39.158",
      "PublicIp": "192.0.2.0"
    }
  ]
}

新しいインスタンスを起動すると、使用できるようになります。 接続するには、 PublicIp プロパティのIPアドレス、またはPublicDnsプロパティのホストのいずれかを使用できます。

接続できるようになるまでに少し時間がかかる場合がありますのでご注意ください。 これは、describe-instancesコマンド出力にあるインスタンスの状態によって監視できます。

まず、インスタンスの状態はペンディング:です。

{
  ...
  "State": {
    "Code": 0,
    "Name": "pending"
  },
  ...
}

状態がrunningの場合、インスタンスは完全に起動され、以下に接続する準備ができています。

{
  ...
  "State": {
    "Code": 16,
    "Name": "running"
  },
  ...
}

新しいインスタンスを作成するときに、 –security-group-ids security_group_id パラメーターを追加することにより、それに接続されるセキュリティグループを指定できます。 指定しない場合は、デフォルトのものが使用されます。 詳細については、AWSセキュリティグループのドキュメントを参照してください。

–subnet-id subnet_id を追加するだけで、サブネットIDを指定することもできます。 指定しない場合は、デフォルトのものが使用されます。

EC2インスタンスの起動中に使用できるその他のオプションについては、Run-instanceコマンドのAWS公式ドキュメントを参照してください。

5. EC2インスタンスを停止して開始します

実行状態のオンデマンドEC2インスタンスはすべて停止できます。

$ aws ec2 stop-instances --instance-ids instance_id

そして再び始めました:

$ aws ec2 start-instances --instance-ids instance_id

インスタンスは起動後もインスタンスIDを保持しますが、別のパブリックIPアドレスが割り当てられることに注意してください。

6. インスタンスを終了します

インスタンスを完全に削除したい場合は、インスタンスを終了できます。

$ aws ec2 terminate-instances --instance-ids instance_id

インスタンスを終了すると、停止したインスタンスのようにインスタンスを再開することはできないことに注意してください。 インスタンスの停止と終了の違いの詳細については、インスタンスライフサイクルのドキュメントを参照してください。

終了したインスタンスは、終了後も表示されたままになります(約1時間)。

7. 結論

このチュートリアルでは、新しいEC2インスタンスを一覧表示して作成する方法、それらを開始、停止、または終了する方法、およびEC2インスタンスのsshアクセスキーを生成する方法を学習しました。