udemyの下記講座でAWSの基礎を学びました。
丁寧な解説と分かりやすいスライドにより、AWSの0→1を学ぶことができ、とても勉強になりました。
本記事はそれの備忘録です。何回かに分けてまとめていこうと思っています。
ルートユーザと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を検索
インスタンスの作成をクリック
MachineImageを選択
Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Typeを選択インスタンスタイプを選択
無料枠で使用できるものを選択セキュリティグループの作成
今回はフルオープンでshhとhtmlを作成最終確認とキーペア登録 作成ボタンをクリックすると、shhに使用するキーペアの作成を促される。 ここに任意の名称を入力し、キーペアをダウンロードしインスタンスを作成する。
ターミナルからインスタンスへ接続
$ 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を取得してみます。
まずはインスタンスを停止させます。
(少し時間がかかります)
次にイメージの作成をします。
イメージ名とイメージの説明を設定します。
ここでイメージの作成ボタンを押下すると、AMIが作成できます。
左メニューの「AMI」を選択すると、イメージが作成されていることが確認できます。
このイメージを使って、EC2インスタンスを作成してみます。
上図の作成ボタンを押下すると、EC2インスタンスを作成した時と同じ手順で作成することができます。 今回はタグに下記のようなものを追加してみます。
これで、すでに作成したいたインスタンスをコピーして、新しいインスタンスを作成することができました!
オンプレのサーバだと、既存サーバと同じ環境でもう1台サーバを建てるとなった場合、アプリケーションなどの再インストールが必要で、時間と手間がかかり、また、本当に同じ環境になっているかのチェックなども必要かと思いますが、その点AWSではイメージというものである時点を切り取り、そのイメージを使って新しいサーバインスタンスが建てれるので、圧倒的に効率的だと感じました。
Elastic IP Adress(EIP)を用いてIPアドレスを固定する
インスタンスは一度停止し再開すると、割り当てられるIPアドレスが変わってしまいます。
そんなときはEIPを使うことで、IPアドレスを固定することができます。
メニューから「Elastic IP」を選択します。
「新しいアドレスの割り当て」ボタンを押下すると、空いているIPアドレスが割り当てられます。
先ほど作成したインスタンスに、今回割り当てられたIPアドレスを関連付けます。
こうすることで、IPアドレスを固定することができます。
Elastic IP Adress(EIP)を使用する際の注意点
下記画像は、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サーバとしての機能はないため、下記のような画面になります。
ここから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 ]
このような画面が表示され、無事に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インスタンス作成時に設定できます。
以上