ギークなエンジニアを目指す男

機械学習系の知識を蓄えようとするブログ

初心者が学ぶAWS備忘録(IAMユーザ、利用料金見積り、EC2、ミドルウェアインストール手順)

udemyの下記講座でAWSの基礎を学びました。

丁寧な解説と分かりやすいスライドにより、AWSの0→1を学ぶことができ、とても勉強になりました。

手を動かしながら2週間で学ぶ AWS 基本から応用まで

本記事はそれの備忘録です。何回かに分けてまとめていこうと思っています。

ルートユーザとIAMユーザ

ルートユーザ(AWSに登録したときに作成されるユーザ)

  • 全てのAWSサービスを使用できる特権ユーザ
  • アカウントの設定変更やサポートの変更などはルートユーザのみ
  • 通常の作業にルートユーザは用いない

IAMユーザ

  • 割り当てられたIAMポリシーで許可されたAWSサービスを使用できる
  • 利用者ごとに払い出し、通常の作業はこのIAMユーザで実行する
  • 新規サーバを建てられないように、など権限設定を行える

CloudTrail

AWSに関する操作ログを自動取得するサービス

  • デフォルトで有効になっている
  • 90日間分のログを確認できる
  • S3(ファイルの置き場のようなもの)に証跡を残せる

AWS利用料の見積もり方法

  • AWSの公式ページを参照する
    「AWS サービス名 pricing」でググる。

  • AWS Simple Monthly Calculatorを参照する
    こちらから試算できる。

AWS EC2

  • OSより上のレイヤについては自由に設定可能
  • 従量課金制

EC2インスタンス起動までの流れ

下記のような手順でインスタンスを起動します。

  • OS / Imageの選択
  • インスタンスタイプの選択
  • スレトージの選択
  • セキュリティグループの選択(Firewall)
  • SSHキーペア

  • AWSにログインし、EC2を検索

    f:id:taxa_program:20190111004332p:plain

  • インスタンスの作成をクリック

    f:id:taxa_program:20190111004545p:plain

  • MachineImageを選択
    Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Typeを選択

    f:id:taxa_program:20190111004835p:plain
     

  • インスタンスタイプを選択
    無料枠で使用できるものを選択

    f:id:taxa_program:20190111005004p:plain
     

  • セキュリティグループの作成
    今回はフルオープンでshhとhtmlを作成

    f:id:taxa_program:20190111005545p:plain
     

  • 最終確認とキーペア登録

    f:id:taxa_program:20190111005712p:plain
     
    作成ボタンをクリックすると、shhに使用するキーペアの作成を促される。
    f:id:taxa_program:20190111005934p:plain:w400
    ここに任意の名称を入力し、キーペアをダウンロードしインスタンスを作成する。


ターミナルからインスタンスへ接続

$ ssh -i [キーペア.pem] ec2-user@[上記で作成したIPv4 パブリック IP]

そうすると、下記のような警告が表示されます。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

これは、pemの権限設定がよろしくないということなので、パーミッションの変更をします。

$ ls -l

-rw-r--r--@ 1 XXXX  staff  1696  1 11 01:00 takapy.pem

$ chmod 400 takapy.pem

-r--------@ 1 XXXX  staff  1696  1 11 01:00 takapy.pem

この状態でもう一度インスタンスへ接続してみます。

$ ssh -i [キーペア.pem] ec2-user@[上記で作成したIPv4 パブリック IP]

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

成功しました!

ちなみに、接続を解除する場合は下記コマンドです。

$ exit

Amazon Machine Image(AMI)を取得する

AMIとSnapshotの違い

  • AMI:EC2のある時点の断面 / EC2インスタンスを作る元になる
  • Snapshot:ディスク(EBS)のある時点の断面 / EBSを作る元になる

どちらも、ある時点をコピーして作成できる便利な機能です。

ではAMIを取得してみます。

まずはインスタンスを停止させます。
(少し時間がかかります)

f:id:taxa_program:20190111094119p:plain
 

次にイメージの作成をします。

f:id:taxa_program:20190111094537p:plain

イメージ名とイメージの説明を設定します。

f:id:taxa_program:20190111094753p:plain

ここでイメージの作成ボタンを押下すると、AMIが作成できます。

左メニューの「AMI」を選択すると、イメージが作成されていることが確認できます。

f:id:taxa_program:20190111095042p:plain

このイメージを使って、EC2インスタンスを作成してみます。

上図の作成ボタンを押下すると、EC2インスタンスを作成した時と同じ手順で作成することができます。 今回はタグに下記のようなものを追加してみます。

f:id:taxa_program:20190111095257p:plain
 

これで、すでに作成したいたインスタンスをコピーして、新しいインスタンスを作成することができました!

f:id:taxa_program:20190111095755p:plain

オンプレのサーバだと、既存サーバと同じ環境でもう1台サーバを建てるとなった場合、アプリケーションなどの再インストールが必要で、時間と手間がかかり、また、本当に同じ環境になっているかのチェックなども必要かと思いますが、その点AWSではイメージというものである時点を切り取り、そのイメージを使って新しいサーバインスタンスが建てれるので、圧倒的に効率的だと感じました。

Elastic IP Adress(EIP)を用いてIPアドレスを固定する

インスタンスは一度停止し再開すると、割り当てられるIPアドレスが変わってしまいます。

そんなときはEIPを使うことで、IPアドレスを固定することができます。

メニューから「Elastic IP」を選択します。

f:id:taxa_program:20190111102729p:plain:w400

「新しいアドレスの割り当て」ボタンを押下すると、空いているIPアドレスが割り当てられます。

f:id:taxa_program:20190111102902p:plain

先ほど作成したインスタンスに、今回割り当てられたIPアドレスを関連付けます。

f:id:taxa_program:20190111103129p:plain:w400

f:id:taxa_program:20190111103446p:plain
 

こうすることで、IPアドレスを固定することができます。

Elastic IP Adress(EIP)を使用する際の注意点

下記画像は、AWS公式の料金表になります。

f:id:taxa_program:20190111103833p:plain
AWS 料金表

反転している部分が特に気をつけた方が良い点です。

「0.005USD: 実行中のインスタンスと関連付けられていない Elastic IP アドレス/時間あたり(比例計算)」

実行中のインスタンスに関連づけている場合は、1個まで無料ですが、インスタンスと関連づけられていないものは課金されます

なので、Elastic IPを使用する場合は必ず実行中のインスタンスと関連づけるようにしましょう!

ホスト名の変更

ホスト名とは、ターミナル上に表示されている「[ec2-user@ip-10-0-11-184 ~]$ 」の部分のことです。これを変更していきます。

# ホスト名の変更
$ sudo vim /etc/sysconfig/network

# hostsファイルに反映
$ sudo vim /etc/hosts

上記が設定できたら、一度リブートします。

$ sudo reboot

その他初期設定

日本語&タイムゾーンの設定

下記コマンドで日本語の設定およびタイムゾーン設定を行います。

$ sudo vim /etc/sysconfig/i18n
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vim /etc/sysconfig/clock

アップデート

初回のアップデートを実施します。

$ sudo yum update

apacheをインストールしてみる

現在の状態で、IPv4アドレスに接続してもWebサーバとしての機能はないため、下記のような画面になります。

f:id:taxa_program:20190111090440p:plain

ここからapacheをインストールしてみます。

# インストールされているか確認
$ yum list installed | grep httpd

何も表示されないので、httpdはインストールされていないことが分かります。

# インストール
$ sudo yum install httpd
・・・
# 途中でyes or noを答える部分がありますが、そこはyesでOK
総ダウンロード容量: 1.5 M
インストール容量: 3.6 M
Is this ok [y/d/N]: y
・・・
完了しました!

無事にインストールできたか確認してみます。

# インストールされているか確認
$ yum list installed | grep httpd
httpd.x86_64                         2.2.34-1.16.amzn1             @amzn-main   
httpd-tools.x86_64                   2.2.34-1.16.amzn1             @amzn-main  

できていそうです!

最後にapacheを起動して、webブラウザからアクセスしてみます。

# 現在のステータスの確認
$ sudo service httpd status
httpd is stopped

# 起動
$ sudo service httpd start
Starting httpd:                                            [  OK  ]

f:id:taxa_program:20190111091145p:plain

このような画面が表示され、無事にapacheをインストールすることができました。

phpのインストール

$ sudo yum install -y php70 php70-mbstring php70-pdo php70-mysqlnd

mysqlのインストール

$ sudo yum install -y mysql

gitのインストール

$ sudo yum install -y git

UserDataについて

ここまでで、インスタンスを起動して様々なミドルウェア(GIt, php...etc)などをインストールしてきました。しかし、インスタンスを起動するたびにこのようなインストール作業を実施していては、なかなか手間がかかります。そこで便利なのが、UserDataという機構です。これをもちいると、インスタンス起動時に自動的にインストール作業などができるようになります。

これはEC2インスタンス作成時に設定できます。

f:id:taxa_program:20190127184328p:plain
UserData設定例

以上