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

Amazon Linux

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

AWS には、2 つのバージョンの Amazon Linux: Amazon Linux 2 および Amazon Linux AMI が用意されています。AMI の詳しいリストなどの詳細については、「Amazon Linux 2」と「Amazon Linux AMI」を参照してください。Amazon Linux Docker コンテナイメージの場合、Docker Hub の「amazonlinux」を参照してください。

別の Linux ディストリビューションから Amazon Linux に移行する場合、Amazon Linux 2 に移行することをお勧めします。現在 Amazon Linux AMI を使用している場合は、Amazon Linux 2 に移行することをお勧めします。Amazon Linux 2 に移行するには;、インスタンスを起動するか、現在のイメージを使用して仮想マシンを作成します。Amazon Linux 2 にアプリケーションと、アプリケーションに必要なパッケージをインストールしてください。アプリケーションをテストし、Amazon Linux 2 で実行するために必要な変更を加えます。AWS の外で Amazon Linux を実行する方法の詳細については、「Amazon Linux 2 を仮想マシンとしてオンプレミスで実行する」を参照してください。

Amazon Linux インスタンスへの接続

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

Amazon Linux イメージの特定

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

  • image_nameimage_versionimage_arch - イメージを作成するときに Amazon が使用したビルドレシピの値。

  • image_stamp — イメージの作成中に生成されたランダムな一意の 16 進値.

  • image_dateYYYYMMDDhhmmss 形式の、イメージを作成した UTC 時間

  • recipe_namerecipe_id – イメージを作成するときに Amazon が使用したビルドレシピの名前と ID。

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

Amazon Linux には、CPE 仕様に従う、機械による読み取りが可能なバージョンの /etc/system-release も含まれています。「/etc/system-release-cpe」を参照してください。

Amazon Linux 2

現在のバージョンの Amazon Linux 2 用の /etc/image-id の例を以下に示します。

[ec2-user ~]$ cat /etc/image-id image_name="amzn2-ami-hvm" image_version="2017.12" image_arch="x86_64" image_file="amzn2-ami-hvm-2017.12.0.20180328.1-x86_64.xfs.gpt" image_stamp="d58c-0f4e" image_date="20180328193624" recipe_name="amzn2 ami" recipe_id="abf7fcc8-f988-713a-d779-19ed-94b7-feab-3c3974af"

現在のバージョンの Amazon Linux 2 用の /etc/system-release の例を以下に示します。

[ec2-user ~]$ cat /etc/system-release Amazon Linux release 2.0 (2017.12) LTS Release Candidate

次は、Amazon Linux 2 の /etc/os-release の例です。

[ec2-user ~]$ cat /etc/os-release NAME="Amazon Linux" VERSION="2.0 (2017.12)" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2.0" PRETTY_NAME="Amazon Linux 2.0 (2017.12) LTS Release Candidate" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2.0" HOME_URL="https://amazonlinux.com/"

Amazon Linux AMI

現在の Amazon Linux AMI 用の /etc/image-id の例を以下に示します。

[ec2-user ~]$ cat /etc/image-id image_name="amzn-ami-hvm" image_version="2018.03" image_arch="x86_64" image_file="amzn-ami-hvm-2018.03.0.20180508-x86_64.ext4.gpt" image_stamp="c4fa-96f6" image_date="20180508174933" recipe_name="amzn ami" recipe_id="1cb2680c-5325-ae3b-9562-95c2-ae09-5817-8b40e17d"

現在の Amazon Linux AMI 用の /etc/system-release の例を以下に示します。

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

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

Amazon Linux またはデフォルトリポジトリには、AWS の統合および使用量に使用される次のコマンドラインツールが含まれています。パッケージの詳細なリストについては、Amazon Linux AMI 2017.09 パッケージに関する記事を参照してください。

  • aws-amitools-ec2

  • aws-apitools-as

  • aws-apitools-cfn

  • aws-apitools-ec2

  • aws-apitools-elb

  • aws-apitools-mon

  • aws-cfn-bootstrap

  • aws-cli

Amazon Linux (amzn-ami-minimal-* および amzn2-ami-minimal-*) の最小バージョンには、これらのパッケージが含まれていません。これらのパッケージは、次のコマンドを使用してデフォルトリポジトリからインストールできます。

[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 などの製品固有の環境変数を設定します。

パッケージリポジトリ

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

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

重要

インスタンスがリポジトリにアクセスするには、インターネットへのアクセスが必要です。

パッケージをインストールするには、次のコマンドを使用します。

[ec2-user ~]$ sudo yum install package

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

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

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

セキュリティの更新

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

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

#cloud-config repo_upgrade: security

repo_upgrade の有効な値は次のとおりです。

security

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

bugfix

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

all

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

none

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

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

リポジトリの設定

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

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

ローリング更新を無効にするには、lock-on-launch 機能を有効にします。Lock-on-launch 機能は、インスタンスが、指定したリリースの AMI からのみ更新を受け取れるようにロックします。たとえば、2018.03 AMI に移行する準備ができるまでは、2017.09 AMI を起動したときに、2018.03 AMI より前にリリースされた更新のみを受け取るよう指定できます。

重要

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

新しいインスタンスで lock-on-launch を有効にするには、次のユーザーデータを cloud-init に渡してインスタンスを起動します。

#cloud-config repo_releasever: 2017.09

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

  1. 編集 /etc/yum.conf.

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

  3. キャッシュをクリアするには、yum clean all を実行します。

Extras Library (Amazon Linux 2)

Amazon Linux 2 では、Extras Library を使用してアプリケーションおよびソフトウェア更新をインスタンスにインストールできます。このようなソフトウェア更新は、トピックと呼ばれます。特定のバージョンのトピックをインストールしたり、最新バージョンを使用するためにバージョン情報を省略したりすることができます。

使用可能なトピックのリストを表示するには、次のコマンドを使用します。

[ec2-user ~]$ amazon-linux-extras list

トピックを有効にし、パッケージの最新バージョンをインストールして最新の状態を維持するには、次のコマンドを使用します。

[ec2-user ~]$ sudo amazon-linux-extras install topic

トピックを有効にし、パッケージの特定のバージョンをインストールして安定性を確保するには、次のコマンドを使用します。

[ec2-user ~]$ sudo amazon-linux-extras install topic=version topic=version

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

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

[ec2-user ~]$ yumdownloader --source bash

ソース RPM は解凍できます。そして、標準の RPM ツールを使用して、参照するためにソースツリーを表示できます。デバッグが完了したら、パッケージを利用できます。

cloud-init

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

詳細については、「cloud-init ドキュメント」を参照してください。

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 に追加する.

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

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

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

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

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

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

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

      #cloud-config mounts: - [ ephemeral0 ]

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

    • TRIM をサポートするインスタンスストアボリュームは、インスタンスの起動時にはフォーマットされないため、マウントする前にパーティション化してフォーマットする必要があります。詳細については、「インスタンスストアボリュームの TRIM のサポート」を参照してください。disk_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」で始まります。

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

  • Upstart ジョブ

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

    • このコンテンツは /etc/init のファイルに格納され、upstart は他の upstart ジョブごとにコンテンツを消費します。

  • クラウドブートフック

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

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

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

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

新しい AMI が使用可能になったときに通知を受けるには、Amazon SNS を使用してサブスクライブします。

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

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

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

  3. ナビゲーションペインで、[Subscriptions]、[Create subscription] の順に選択します。

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

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

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

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

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

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

  5. 「AWS Notification - Subscription Confirmation」という件名の確認メールを受け取ります。メールを開いて [Confirm subscription] を選択して受信登録を完了します。

AMI がリリースされるごとに、対応するトピックの受信者に通知が送信されます。このような通知を停止するには、以下の手順を使用してサブスクリプション解除します。

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

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

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

  3. ナビゲーションペインで、[サブスクリプション] を選択し、サブスクリプションを選択したら、[アクション]、[サブスクリプションの削除] の順に選択します。

  4. 確認を求めるメッセージが表示されたら、[Delete] を選択します。