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

Amazon Linux

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

Note

この 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 が見つかったら、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 ファイルの例です。

[ec2-user ~]$ cat /etc/image-id
image_name="amzn-ami-hvm"
image_version="2016.09"
image_arch="x86_64"
image_file="amzn-ami-hvm-2016.09.0.20160923-x86_64.ext4.gpt"
image_stamp="43c4-0c27"
image_date="20160923100227"
recipe_name="amzn ami"
recipe_id="e6502326-ea51-97ff-eeef-0750-1887-836c-cf751774"

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 ファイルの例です。

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

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

Note

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

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

aws-apitools-*コマンドラインツールはあらゆる Amazon Linux バージョンに付属していますが、aws-cli コマンドラインツールはすべての Amazon Web Services において共通の操作で利用でき、最終的にサービス特有のツールセットに置き換わる予定です。

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 は次の cloud-init アクションを使用します(/etc/sysconfig/cloudinit で設定できます)。

  • action: INIT(常に実行)

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

    • ホスト名の設定

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

  • アクション: CONFIG_SSH

    • ホスト プライベート SSH キーを生成する

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

  • アクション: PACKAGE_SETUP

    • yum repo を準備する

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

  • アクション: RUNCMD

    • シェルコマンドの実行

  • アクション: RUN_USER_SCRIPTS

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

  • アクション: CONFIG_MOUNTS

    • エフェメラルドライブのマウント

  • アクション: CONFIG_LOCALE

    • ユーザーデータに基づく、ロケール設定ファイルのロケールを設定する

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

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.03 やそれより前のバージョンなど)からインスタンスを起動し、yum update -y を実行する場合でも、最新のパッケージが利用できます。

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

Important

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

#cloud-config
repo_releasever: 2016.03

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

  1. /etc/yum.conf を編集します。

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

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

パッケージの追加

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

[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」を参照してください。

Important

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

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

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

[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 ツールを使用して、参照するためにソースツリーを表示できます。デバッグが完了したら、パッケージを利用できます。

Important

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 設定のスニペットは、インスタンス初期化に渡すユーザーデータテキストで設定を変更する方法を示しています。

#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 を実行する必要があります。

Important

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

サポート

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

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