メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon Linux

Amazon Linux はアマゾン ウェブ サービス (AWS) が提供します。これは Amazon EC2 上で実行するアプリケーションのために安定した安全で高性能な実行環境を提供できるよう設計されています。またこれには、起動設定ツールおよび多くの AWS 人気ライブラリやツールなど、AWS の統合を容易にするいくつかのパッケージも含まれています。AWS は Amazon Linux を実行しているすべてのインスタンスに、現行のセキュリティとメンテナンスの更新を提供します。

注記

この Amazon Linux AMI リポジトリ構造は、Amazon Linux AMI のあるバージョンから次のバージョンへのローリング更新を可能にするように、連続的な更新が配信されるように設定されています。既存のインスタンスを現在のバージョンにロックする方法については、「リポジトリの設定」を参照してください。

Amazon Linux インスタンスを起動するには、Amazon Linux AMI を使用します。AWS は、Amazon Linux AMI を Amazon EC2 ユーザーに追加料金なしで提供しています。

Amazon Linux AMI を検索する

最新の Amazon Linux AMI のリストについては、「Amazon Linux AMI」を参照してください。

Amazon Linux AMI 通知にサブスクライブする

新しい Amazon Linux AMI がリリースされたときに通知を受け取る場合は、Amazon SNS を使用してこの通知にサブスクライブできます。

Amazon Linux AMI 通知にサブスクライブするには

  1. https://console.aws.amazon.com/sns/v2/home にある Amazon SNS コンソールを開きます。

  2. ナビゲーションバーで、必要に応じてリージョンを [米国東部(バージニア北部)] に変更します。購読する SNS 通知がこのリージョンで作成されているため、このリージョンを選択する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. [Create subscription] を選択します。

  5. [サブスクリプションの作成] ダイアログボックスで、次の操作を行います。

    1. [トピックの ARN] で次の Amazon リソースネーム (ARN) をコピーアンドペーストします。arn:aws:sns:us-east-1:137112412989:amazon-linux-ami-updates

    2. [Protocol] で [Email] を選択します。

    3. [エンドポイント] では、通知を受信するために使用できる E メールアドレスを入力します。

    4. [Create subscription] を選択します。

  6. AWS Notification - Subscription Confirmation という件名の確認用 E メールを受信します。メールを開いて [Confirm subscription] をクリックして受信登録を完了します。

Amazon Linux AMI がリリースされるごとに、amazon-linux-ami-updates トピックの受信者に通知が送信されます。通知が不要になった場合は、次の手順で受信登録を解除します。

Amazon Linux AMI の通知の受信登録を解除するには

  1. https://console.aws.amazon.com/sns/v2/home にある Amazon SNS コンソールを開きます。

  2. ナビゲーションバーで、必要に応じてリージョンを [米国東部(バージニア北部)] に変更します。SNS 通知はこのリージョンで作成されたため、このリージョンを使用する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. サブスクリプションを選択し、[アクション]、[サブスクリプションの削除] を選択します。確認のプロンプトが表示されたら、[削除] を選択します。

Amazon Linux インスタンスを起動し、それに接続する

希望する AMI が見つかったら、AMI ID を控えておきます。AMI ID を使ってインスタンスを起動し、そのインスタンスに接続することができます。

デフォルトでは、Amazon Linux はリモートルート SSH を許可しません。また、パスワード認証は、パスワードのブルートフォース攻撃を防ぐために無効になっています。Amazon Linux インスタンスへの SSH ログインを有効にするには、起動時にキーペアをインスタンスに提供する必要があります。インスタンスを起動するときに使用するセキュリティグループで、SSH アクセスを許可するよう設定する必要もあります。デフォルトでは、SSH を使用してリモートログインできる唯一のアカウントは ec2-user です。このアカウントには sudo 特権もあります。リモートルートログインを有効にする場合は、このログインが、キーペアおよびセカンダリユーザーを使用する場合よりも安全性が低いことに注意してください。

Amazon Linux インスタンスの起動と使用についての詳細は、インスタンスの作成 を参照してください。Amazon Linux インスタンスへの接続についての詳細は、Linux インスタンスへの接続 を参照してください。

Amazon Linux AMI イメージの特定

各イメージには AMI を特定する一意の /etc/image-id が含まれています。このファイルには、イメージに関する情報が含まれています。

次は、/etc/image-id ファイルの例です。

Copy
[ec2-user ~]$ cat /etc/image-id image_name="amzn-ami-hvm" image_version="2017.03" image_arch="x86_64" image_file="amzn-ami-hvm-2017.03.0.20170401-x86_64.ext4.gpt" image_stamp="26a3-ed31" image_date="20170402053945" recipe_name="amzn ami" recipe_id="47cfa924-413c-d460-f4f2-2af7-feb6-9e37-7c9f1d2b"

image_nameimage_version、および image_arch 項目は、イメージを作成するときに Amazon が使用したビルドレシピに基づいています。image_stamp は、イメージの作成中に生成されたランダムな一意の16進値にすぎません。image_date 項目の形式は YYYYMMDDhhmmss で、イメージを作成した UTC 時間です。recipe_namerecipe_id は、イメージを作成するときに Amazon が使用したビルドレシピの名前と ID を参照し、これにより、現在実行中の Amazon Linux バージョンが特定されます。このファイルは、yum リポジトリから更新をインストールしても変更されません。

Amazon Linux には、インストールされている現在のリリースを示す /etc/system-release ファイルが含まれています。このファイルは、yum によって更新され、system-release RPM の一部です。

次は、/etc/system-release ファイルの例です。

Copy
[ec2-user ~]$ cat /etc/system-release Amazon Linux AMI release 2017.03

Amazon Linux には、/etc/system-release-cpe 内の機械による読み取りが可能なバージョンの /etc/system-release ファイルも含まれます。また、MITRE の CPE 仕様に準拠しています (CPE)。

組み込まれている AWS コマンドラインツール

Amazon Linux またはデフォルトリポジトリには、AWS の統合および使用量によく使用される次のコマンドラインツールが含まれています。

  • aws-amitools-ec2

  • aws-apitools-as

  • aws-apitools-cfn

  • aws-apitools-ec2

  • aws-apitools-elb

  • aws-apitools-iam

  • aws-apitools-mon

  • aws-apitools-rds

  • aws-cfn-bootstrap

  • aws-cli

  • aws-scripts-ses

Amazon Linux (amzn-ami-minimal-*) の最小バージョンには、上記のパッケージが含まれていません。これらのパッケージはデフォルトの yum リポジトリから入手でき、次のコマンドでインストールできます:

Copy
[ec2-user ~]$ sudo yum install -y package_name

IAM ロールを使用して起動したインスタンスの場合、認証情報ファイルのインストール後、AWS_CREDENTIAL_FILEJAVA_HOMEAWS_PATHPATH、および製品固有の環境変数を準備するためのシンプルなスクリプトが組み込まれます。これにより、上記のツールの設定が簡素化されます。

また、次に説明するように、複数のバージョンの API と AMI ツールをインストールできるように、これらのツールの希望するバージョンにアクセスするシンボリックリンクを /opt/aws に配置しました。

/opt/aws/bin

インストールされている各ツールディレクトリにある、/bin ディレクトリへのシンボリックリンク。

/opt/aws/{apitools|amitools}

インストールされた最新バージョンにアタッチされている name-version フォームと name シンボリックリンクのディレクトリに製品がインストールされます。

/opt/aws/{apitools|amitools}/name/environment.sh

/etc/profile.d/aws-apitools-common.sh により使用され、EC2_HOME などの製品固有の環境変数を設定します。

cloud-init

cloud-init パッケージは、Canonical によって構築されたオープンソースアプリケーションであり、Amazon EC2 などのクラウドコンピューティング環境で Linux イメージをブートストラップするときに使用されます。Amazon Linux にはカスタマイズされたバージョンの cloud-init が含まれています。これにより、起動時のインスタンスに対するアクションを指定することができます。インスタンスの起動時に、ユーザーデータフィールドを使用して必要なアクションを cloud-init に渡すことができます。つまり、さまざまなユースケースに対して共通の AMI を使用し、起動時にその AMI を動的に設定できます。また、Amazon Linux は cloud-init を使用して、ec2-user アカウントの初期設定を実行します。

cloud-init の詳細については、「http://cloudinit.readthedocs.org/en/latest/」を参照してください。

Amazon Linux は、/etc/cloud/cloud.cfg.d/etc/cloud/cloud.cfg にある cloud-init アクションを使用します。独自の cloud-init アクションファイルを /etc/cloud/cloud.cfg.d に作成することができます。このディレクトリ内のすべてのファイルは、cloud-init で読み取られます。それらは辞書と同じ順序に読み取られ、後のファイルは以前のファイルの値を上書きします。

cloud-init パッケージは、起動時にインスタンスのこれらの (およびその他の) 共通の設定タスクを実行します。

  • デフォルトのロケールを設定

  • ホスト名を設定

  • ユーザーデータの解析と処理

  • ホスト プライベート SSH キーの生成

  • 容易にログインおよび管理できるように、ユーザーのパブリック SSH キーを .ssh/authorized_keys に追加する

  • パッケージ管理のために yum リポジトリを準備する

  • ユーザーデータで定義されたパッケージアクションの処理

  • ユーザーデータにあるユーザースクリプトの実行

  • インスタンスストアボリュームをマウントする (該当する場合)

    • デフォルトでは、ephemeral0 インスタンスストアボリュームがある場合は /media/ephemeral0 にマウントされ、有効なファイルシステムが含まれます。それ以外の場合は、マウントされません。

    • デフォルトでは、インスタンスに関連付けられたスワップボリュームがマウントされます (m1.smallおよびc1.mediumインスタンスタイプの場合のみ)。

    • 次の cloud-init ディレクティブを使用して、デフォルトのインスタンスストアボリュームマウントを上書きすることができます。

      Copy
      #cloud-config mounts: - [ ephemeral0 ]

      マウントをより詳細にコントロールするには、cloud-init ドキュメントの「マウント」を参照してください。

    • TRIM をサポートするインスタンスストアボリュームは、インスタンスの起動時にはフォーマットされないため、マウントする前にパーティション化してフォーマットする必要があります。詳細については、「インスタンスストアボリュームの TRIM のサポート」を参照してください。cloud-initdisk_setup モジュールを使用して、起動時にインスタンスストアボリュームをパーティションおよびフォーマットすることができます。詳細については、cloud-init ドキュメントの「Disk Setup」を参照してください。

サポートされているユーザーデータ形式

cloud-init パッケージでは、さまざまな形式のユーザーデータを処理できます。

  • Gzip

    • ユーザーデータが gzip で圧縮されている場合、cloud-init はデータを解凍し、適切に処理します。

  • MIME マルチパート

    • MIME マルチパートファイルを使用して、複数のデータタイプを指定できます。たとえば、ユーザーデータスクリプトとクラウド設定タイプの両方を指定できます。マルチパートファイルのパートの形式がサポートされている形式のいずれかの場合、そのパートは cloud-init で処理できます。

  • Base64 デコード

    • ユーザーデータが base64 でエンコードされている場合、cloud-init は、デコードされたデータをサポートされているタイプのいずれかとして認識できるか確認します。デコードされたデータを認識できる場合、データをデコードし、適切に処理します。認識できない場合、base64 データは変更されません。

  • ユーザーデータスクリプト

    • #!」または「Content-Type: text/x-shellscript」で始まります。

    • このスクリプトは、初回の起動サイクル時に /etc/init.d/cloud-init-user-scripts によって実行されます。これは起動プロセスの後半 (初期設定アクションが実行された後) に実行されます。

  • インクルードファイル

    • #include」または「Content-Type: text/x-include-url」で始まります。

    • このコンテンツはインクルードファイルです。ファイルには URL の一覧 (1行に1つの URL) が含まれます。各 URL が読み取られ、そのコンテンツが同じルールセットを使用して渡されます。URL から読み取られたコンテンツは gzip、MIME マルチパート、またはプレーンテキスト形式になります。

  • クラウド設定データ

    • #cloud-config」または「Content-Type: text/cloud-config」で始まります。

    • このコンテンツはクラウド設定データです。サポートされている設定形式のコメント付きサンプルについては、例を参照してください。

  • クラウドブートフック

    • #cloud-boothook」または「Content-Type: text/cloud-boothook」で始まります。

    • このコンテンツはブートフックデータです。このデータは /var/lib/cloud にあるファイルに保存され、すぐに実行されます。

    • これは最初に使用可能な「フック」です。1 回だけ実行するためのメカニズムはありません。ブートフックは自身でこの点に対処する必要があります。環境変数 INSTANCE_ID でインスタンス ID が指定されています。この変数を使用して、インスタンスあたり1つのブートフックデータのセットを提供します。

リポジトリの設定

2011 年 9 月リリースの Amazon Linux より、Amazon Linux AMI はスナップショットとして扱われるようになり、yum update -y の実行時には、最新のパッケージを常に提供するリポジトリおよび更新構造を備えるようになりました。

このリポジトリ構造は、Amazon Linux のあるバージョンから次のバージョンへのローリング更新を可能にするように、連続的な更新が配信されるように設定されています。たとえば、前のバージョンの Amazon Linux AMI (2016.09 やそれより前のバージョンなど) からインスタンスを起動し、yum update -y を実行する場合でも、最新のパッケージが利用できます。

Amazon Linux のローリング更新を無効にするには、lock-on-launch 機能を有効にします。Lock-on-launch 機能は、新たに起動したインスタンスが、指定したリリースの AMI からのみ更新を受け取れるようにロックします。たとえば、2017.03 AMI に移行する準備ができるまでは、2016.09 AMI を起動したときに、2017.03 AMI より前にリリースされた更新のみを受け取るよう指定できます。新しいインスタンスで lock-on-launch を有効にするには、Amazon EC2 コンソールまたは -f フラグが設定された ec2-run-instances コマンドを使用して、次のユーザーデータを cloud-init に渡してインスタンスを起動します。

重要

AMI を「latest」ではないリポジトリのバージョンに固定すると、それ以上の更新を受け取ることができなくなります。Amazon Linux AMI の更新を継続的に受け取るには、最新の AMI を使用するか、必ず「latest」とされているリポジトリで古い AMI を更新する必要があります。

Copy
#cloud-config repo_releasever: 2016.09

既存のインスタンスを現在の AMI リリースバージョンにロックするには

  1. 編集 /etc/yum.conf.

  2. releasever=latest をコメントアウトします。

  3. yum clean all を実行し、キャッシュを消去します。

パッケージの追加

Amazon Linux は、各 Amazon EC2 のリージョンでホストされているオンラインパッケージリポジトリと一緒に使用するように設計されています。これらのリポジトリは、Amazon Linux AMI パッケージの継続的な更新だけでなく、何百もの一般的なオープンソースのサーバーアプリケーションへのアクセスを提供します。リポジトリはすべてのリージョンに存在し、yum 更新ツールを使用してアクセスできるほか、Amazon Linux AMI パッケージのサイトでもアクセスできます。各リージョンでリポジトリをホストしているため、データ転送料金なしで、更新を迅速にデプロイできます。パッケージをインストールするには、次の yum コマンドを発行します。

Copy
[ec2-user ~]$ sudo yum install httpd

Enterprise Linux (EPEL) リポジトリの追加パッケージへのアクセスが設定されていますが、デフォルトでは有効になっていません。EPEL は、Amazon Linux リポジトリのパッケージのほか、サードパーティ製のパッケージを提供します。AWS はサードパーティ製のパッケージをサポートしていません。

必要なアプリケーションが Amazon Linux に含まれていない場合は、そのアプリケーションを直接 Amazon Linux インスタンスにインストールできます。Amazon Linux は、RPM および yum を使用してパッケージを管理します。これが最も簡単に新しいアプリケーションをインストールする方法になるでしょう。Amazon Linux セントラルリポジトリで利用可能なアプリケーションは多数あるので、アプリケーションがそのリポジトリで利用できるかどうかを最初に必ず確認する必要があります。これらのアプリケーションは、Amazon Linux インスタンスに簡単に追加できます。

実行中の Amazon Linux インスタンスにアプリケーションをアップロードするには、scp または sftp を使用し、インスタンスにログオンしてアプリケーションを設定します。組み込みの cloud-init パッケージから PACKAGE_SETUP アクションを使用して、インスタンスの起動時にアプリケーションをアップロードすることもできます。詳細については、「cloud-init」を参照してください。

重要

VPC (Virtual Private Cloud) でインスタンスを実行している場合、yum リポジトリにアクセスするために、インターネットゲートウェイを VPC にアタッチする必要があります。詳細については、Amazon VPC ユーザーガイドインターネットゲートウェイを参照してください。

参照のためのソースパッケージへのアクセス

Amazon Linux で提供されているツールを使用して、インスタンスにインストールしたパッケージソースを参照するために表示できます。ソースパッケージは、Amazon Linux およびオンラインパッケージリポジトリに含まれるすべてのパッケージで利用できます。インストールするソースパッケージのパッケージ名を確認し、get_reference_source コマンドを使用して実行中のインスタンス内にソースを表示します。(例:

Copy
[ec2-user ~]$ get_reference_source -p bash

レスポンスの例を次に示します。

リクエストされたパッケージ: ローカル RPM データベースから bash によって見つけられるパッケージ: 見つけるパッケージのソース RPM に対応する bash-4.2.46-20.36.amzn1.x86_64: bash-4.2.46-20.36.amzn1.src.rpm これらのパラメーターは正しいですか。続行するには「yes」と入力します。yes ソース RPM が /usr/src/srpm/debug/bash-4.2.46-20.36.amzn1.src.rpm にダウンロードされます

ソース RPM は、インスタンスの /usr/src/srpm/debug ディレクトリにあります。ソース RPM はこの場所から解凍されます。そして、標準の RPM ツールを使用して、参照するためにソースツリーを表示できます。デバッグが完了したら、パッケージを利用できます。

重要

VPC (Virtual Private Cloud) でインスタンスを実行している場合、yum リポジトリにアクセスするために、インターネットゲートウェイを VPC にアタッチする必要があります。詳細については、Amazon VPC ユーザーガイドインターネットゲートウェイを参照してください。

アプリケーションの開発

Amazon Linux の yum リポジトリには、Linux 開発ツールのフルセットが用意されています。Amazon Linux でアプリケーションを開発するには、yum で必要な開発ツールを選択します。あるいは、CentOS および他の同様のディストリビューションで開発された多くのアプリケーションは、Amazon Linux で実行できるはずです。

インスタンスストアアクセス

インスタンスストアドライブ ephemeral0 は、Amazon Instance Store-Backed AMI でのみ、/media/ephemeral0 にマウントされます。これは、インスタンスストアドライブを /mnt にマウントする他の多くのイメージとは異なります。

製品ライフサイクル

Amazon Linux AMI のセキュリティと機能強化は定期的に更新されます。Amazon Linux インスタンスでデータまたはカスタム設定を保存する必要がない場合は、最新の Amazon Linux AMI で新しいインスタンスを再作成できます。Amazon Linux インスタンスでデータまたはカスタム設定を保存する必要がある場合は、Amazon Linux yum リポジトリを介してこれらのインスタンスを維持できます。yum リポジトリには、更新されたすべてのパッケージが含まれます。実行中のインスタンスにこれらの更新を適用するよう選択できます。

新しいバージョンの AMI がリリースされても、古いバージョンの AMI と更新パッケージは引き続き利用できます。AWS サポートを介して古いバージョンの Amazon Linux; サポートをお求めの場合、Amazon では、サポートプロセスの一環として、新しいバージョンに移行するようお客様にお願いすることがあります。

セキュリティの更新

セキュリティの更新は、Amazon Linux AMI yum リポジトリと更新された Amazon Linux AMI を介して提供されます。セキュリティアラートは、Amazon Linux AMI セキュリティセンターで公開されます。AWS セキュリティポリシーの詳細については、またはセキュリティの問題を報告するには、AWS セキュリティセンターにアクセスしてください。

Amazon Linux AMI は、起動時にセキュリティ更新をダウンロードおよびインストールするよう設定されています。これは repo_upgrade と呼ばれる cloud-init 設定を介して制御されます。次の cloud-init 設定のスニペットは、インスタンス初期化に渡すユーザーデータテキストで設定を変更する方法を示しています。

Copy
#cloud-config repo_upgrade: security

repo_upgrade 設定に使用できる値は次のようになります。

security

Amazon によってセキュリティ更新としてマークされた保留中の更新を適用します。

bugfix

Amazon によってバグフィックスとしてマークされた更新を適用します。バグフィックスは大きなサイズの更新セットで、セキュリティ更新および他のさまざまな小さなバグに対する修正が含まれます。

all

分類に関係なく、使用できる適切な更新すべてを適用します。

none

起動時に更新をインスタンスに適用しません。

repo_upgrade のデフォルトの設定は security です。つまり、ユーザーデータで別の値を指定しない場合、Amazon Linux AMI は、デフォルトにより、インストールされているすべてのパッケージに対して、起動時にセキュリティを更新します。Amazon Linux AMI はまた、/etc/motd ファイルを利用して、ログイン時に利用できる更新の数を表示し、インストールされているパッケージすべての更新をお知らせします。これらの更新をインストールするには、インスタンスで sudo yum upgrade を実行する必要があります。

重要

VPC (Virtual Private Cloud) でインスタンスを実行している場合、yum リポジトリにアクセスするために、インターネットゲートウェイを VPC にアタッチする必要があります。詳細については、Amazon VPC ユーザーガイドインターネットゲートウェイを参照してください。

サポート

基本的な Amazon Linux AMI のインストールと使用に関するサポートは、AWS サポートの加入者向けサービスとなっています。詳細については、「AWS サポート」を参照してください。

Amazon Linux についてご質問がありましたら、Amazon EC2 forum に投稿することをお勧めします。