

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AL2 インスタンスのホスト名を変更する
<a name="set-hostname"></a>

プライベート VPC 内でインスタンスを起動すると、Amazon EC2 によってゲスト OS ホスト名が割り当てられます。Amazon EC2 によって割り当てられるホスト名のタイプは、サブネット設定によって異なります。EC2 ホスト名の詳細については、[Amazon EC2 ユーザーガイド」の「Amazon EC2 インスタンスのホスト名タイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html)」を参照してください。 *Amazon EC2 *

IPv4 アドレスで IP ベースの命名を使用するように構成された EC2 インスタンスの典型的な Amazon EC2 のプライベート DNS 名は、`ip-12-34-56-78.us-west-2.compute.internal` のような形式になります。この名前は内部ドメイン、サービス (この例では、`compute`)、リージョン、そしてプライベート IPv4 アドレスで構成されます。インスタンスにログインしたとき、このホスト名の一部がシェルプロンプトで表示されます (`ip-12-34-56-78` など)。Amazon EC2 インスタンスを停止し、再起動するたびに (Elastic IP アドレスを使用していない限り)、パブリック IPv4 アドレスが変わり、パブリック DNS 名、システムホスト名、シェルプロンプトも変わります。

**重要**  
この情報は、Amazon Linux に適用されます。その他のディストリビューションの情報については、各ドキュメントを参照してください。

## システムホスト名の変更
<a name="set-hostname-system"></a>

インスタンスの IP アドレスにパブリック DNS 名を登録している場合 (`webserver.mydomain.com` など)、インスタンスがそのドメインに含まれているものとして識別されるように、システムホスト名を設定できます。また、シェルプロンプトが変更され、 によって指定されたホスト名ではなく、この名前の最初の部分が表示されます AWS (例: `ip-12-34-56-78`)。パブリック DNS 名を登録していない場合でもホスト名は変更できますが、プロセスが少し違います。

ホスト名の更新内容を維持するには、`preserve_hostname` cloud-init 設定が `true` に設定されていることを確認してください。この設定を編集または追加するには、次のコマンドを実行します。

```
sudo vi /etc/cloud/cloud.cfg
```

`preserve_hostname` 設定が一覧表示されない場合は、ファイルの末尾に次のテキスト行を追加します。

```
preserve_hostname: true
```

**システムホスト名をパブリック DNS 名に変更するには**

パブリック DNS 名を登録している場合、この手順を行います。

1. 
   + AL2 の場合: **hostnamectl** コマンドを使用して、完全修飾ドメイン名 ( など) を反映するようにホスト名を設定します**webserver.mydomain.com**。

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
     ```
   + Amazon Linux AMI の場合: インスタンスで、お好みのテキストエディタを使用して `/etc/sysconfig/network` 設定ファイルを開き、`HOSTNAME` エントリを変更して、完全修飾ドメイン名 (**webserver.mydomain.com** など) を反映させます。

     ```
     HOSTNAME=webserver.mydomain.com
     ```

1. インスタンスを再起動し、新しいホスト名を取得します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

   または、Amazon EC2 コンソールを使用して再起動することもできます (**[Instances (インスタンス)**] ページでインスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Reboot instance (インスタンスの再起動)**] の順に選択します)。

1. インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。**hostname** コマンドで完全修飾ドメイン名が表示されます。

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.mydomain.com
   ```

**パブリック DNS 名なしでシステムホスト名を変更するには**

1. 
   + AL2 の場合: **hostnamectl** コマンドを使用して、目的のシステムホスト名 ( など) を反映するようにホスト名を設定します**webserver**。

     ```
     [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
     ```
   + Amazon Linux AMI の場合: インスタンスで、お好みのテキストエディタで `/etc/sysconfig/network` 設定ファイルを開き、`HOSTNAME` エントリを変更して、希望するシステムホスト名を反映させます (例: **webserver**)。

     ```
     HOSTNAME=webserver.localdomain
     ```

1. お好みのテキストエディタで `/etc/hosts` ファイルを開き、下の例と一致する **127.0.0.1** で始まるエントリを変更します。ホスト名は自分のホスト名に置換します。

   ```
   127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
   ```

1. インスタンスを再起動し、新しいホスト名を取得します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

   または、Amazon EC2 コンソールを使用して再起動することもできます (**[Instances (インスタンス)**] ページでインスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Reboot instance (インスタンスの再起動)**] の順に選択します)。

1. インスタンスにログインして、ホスト名が更新されていることを確認します。メッセージには、新しいホスト名が表示されるはずです (最初の「.」まで)。**hostname** コマンドで完全修飾ドメイン名が表示されます。

   ```
   [ec2-user@webserver ~]$ hostname
   webserver.localdomain
   ```

また、ユーザーデータを指定してインスタンスを設定するなど、よりプログラム的なソリューションを実装することもできます。インスタンスが Auto Scaling グループの一部である場合、ライフサイクルフックを使用してユーザーデータを定義できます。詳細については、「AWS CloudFormation ユーザーガイド」の「[Run commands on your Linux instance at launch](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)」(起動時に Linux インスタンスでコマンドを実行する) および「[Lifecycle hook for instance launch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html#aws-resource-autoscaling-lifecyclehook--examples--Lifecycle_hook_for_instance_launch)」(インスタンス起動のライフサイクルフック) を参照してください。

## ホスト名に影響を与えずにシェルプロンプトを変更する
<a name="set-hostname-shell"></a>

インスタンスのホスト名を変更せずに、 が提供するプライベート名 ( など**webserver**) よりも便利なシステム名 AWS ( など`ip-12-34-56-78`) を表示する場合は、シェルプロンプト設定ファイルを編集して、ホスト名の代わりにシステムニックネームを表示できます。

**シェルプロンプトをホストニックネームに変更するには**

1. `/etc/profile.d` で、`NICKNAME` と呼ばれる環境変数を設定するファイルを作成して、シェルプロンプトに表示する値を設定します。例えば、システムニックネームを **webserver** に設定するには、次のコマンドを実行します。

   ```
   [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
   ```

1. お好みのテキストエディタ (`/etc/bashrc` や `/etc/bash.bashrc` など) で、**vim** (Red Hat) または **nano** (Debian/Ubuntu) ファイルを開きます。エディタのコマンドで **sudo** を使用する必要があります。`/etc/bashrc` および `/etc/bash.bashrc` は `root` が所有するためです。

1. ファイルを編集し、ホスト名の代わりにニックネームを表示するようにシェルプロンプト変数 (`PS1`) を変更します。`/etc/bashrc` または `/etc/bash.bashrc` でシェルプロンプトを設定する次の行を見つけます (以下には、コンテキストを示すため前後の行も表示されています。`[ "$PS1"` で始まる行を探してください)。

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

   その行の `\h` (`hostname` を表す記号) を `NICKNAME` 変数の値に変更します。

   ```
     # Turn on checkwinsize
     shopt -s checkwinsize
     [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ "
     # You might want to have e.g. tty in prompt (e.g. more virtual machines)
     # and console windows
   ```

1. (オプション) シェルウィンドウのタイトルを新しいニックネームに設定するには、次の手順を完了します。

   1. `/etc/sysconfig/bash-prompt-xterm` という名前のファイルを作成します。

      ```
      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
      ```

   1. 次のコマンドを使用して、ファイルを実行可能にします。

      ```
      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
      ```

   1. お好みのテキストエディタ (`/etc/sysconfig/bash-prompt-xterm` や **vim** など) で、**nano** ファイルを開きます。エディタのコマンドで **sudo** を使用する必要があります。`/etc/sysconfig/bash-prompt-xterm` は `root` が所有するためです。

   1. 次の行をファイルに追加します。

      ```
      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
      ```

1. ログアウトしてから再度ログインし、新しいニックネーム値を取得します。

## 他の Linux ディストリビューションのホスト名の変更
<a name="set-hostname-other-linux"></a>

このページの手順は、Amazon Linux のみで使用するためのものです。他の Linux ディストリビューションの詳細については、各ドキュメントおよび次の記事を参照してください。
+ [RHEL 7 または Centos 7 を実行するプライベート Amazon EC2 インスタンスに静的ホスト名を割り当てる方法を教えてください。](https://aws.amazon.com/premiumsupport/knowledge-center/linux-static-hostname-rhel7-centos7/)