[AWS認定資格]5冠になったので、勉強法まとめてみた ~アソシエイト編~

こんにちは。
SAPRO、DevOpsを取得でき、AWS認定資格制覇、俗に言う5冠となれましたので、AWS認定資格の勉強法をまとめてみました。参考までに、AWSの利用歴ですが、1年と少しくらいです!

AWS認定資格とは

AWS公式には以下のような記載されています。

AWS 認定は、AWS プラットフォームで稼働するアプリケーションとインフラストラクチャの設計、デプロイ、運用に必要なスキルと技術知識を有する IT プロフェッショナルであることを証明します。認定試験は、複数の言語で、世界中の試験センターで提供しています。

設計、デプロイ、運用の3つの項目にわかれており、アソシエイト、プロフェッショナルの2つのレベルがあり、現時点で日本語対応している試験は合計5つとなります。 今回はアソシエイトレベルの話をします。

AWS 認定ソリューションアーキテクト – アソシエイトレベル
AWS 認定ソリューションアーキテクト – プロフェッショナルレベル
AWS 認定デベロッパー – アソシエイトレベル
AWS 認定システムオペレーション(SysOps)アドミニストレーター – アソシエイトレベル
AWS 認定 DevOps エンジニア – プロフェッショナル

f:id:ykoomaru:20170117092527p:plain

勉強法

アソシエイトレベルの資格を取得した際に私が実施した勉強法をまとめてみました。

1. 試験範囲の確認

AWSの公式ページで各試験ごとの試験要項に出題範囲が記載されているので、確認します。出題範囲に具体的なサービス名が書かれているものは要チェックです。
SAアソシエイトの場合以下のような試験要項があります。 http://media.amazonwebservices.com/jp/certification/AWS_certified_SolutionArchitect_associate_blueprint_JP.pdf

重要なのは、どのサービスが出題されるかある程度あたりをつけることだと思います。
AWSでは、2017年1月時点で大きく分けても60を超えるサービスがあり、すべてのサービスを学習するにはかなりの時間が必要となります。(サービスの細かい部分までは未だにすべて理解できていないです…orz)

2. インプット

AWSでは、資料がかなり充実しているので、ドキュメントでのインプットは公式の資料だけでも十分だと思います。

  • AWS クラウドサービス活用資料集 | AWS
    基本的なサービスのインプットはblackbeltでOKです。概要だけでなく、かなり深い部分まで記載があるので、1. でチェックしたサービスは全て目を通しておいたほうがよいです。

  • ホワイトペーパー | AWS
    クラウド利用のベストプラクティスなど、クラウドを使うにあたっての前提知識のインプットはホワイトペーパーを読めばある程度わかります。

  • AWS-CloudDesignPattern
    クラウドを利用する際の典型的な構成パターンが記載されています。 構成図も載っているので、具体的なイメージがしやすくなります。
    分量がそこまで多いわけではないので、全ての構成パターンに目を通すことをお勧めします。

  • 実際に触ってみる
    ここが一番大事かなと思います。良くある ELB - WEB - AP - DB(RDS) の構成は1度自分で作ってみたほうがよいです。私も経験があるのですが、実際に触ってみないと結局サービス同士がどのようにつながっているのかが見えないので、サービスの細かい部分まで覚えることができませんでした。1度でも触ったことがあると、サービスの繋がりが見えてくるので、自分が知らない部分でもサービスの繋がりから問題を解くことができるようになります。
    AWSの公式サイトにチュートリアルがありますので、参考にしていただけますと幸いです。
    アマゾン ウェブ サービス (AWS) 使用の 10 分間チュートリアル

3.アウトプット

  • サンプル問題
    AWS 認定ソリューションアーキテクト – アソシエイト 各試験ごとに、サンプル問題が用意されています。無料ですので、必ず見るようにしましょう。 アソシエイトですと、3種の試験で共通した出題範囲があるので、どの試験を受ける場合でも、全てのサンプル問題に目を通しておきましょう。

  • 模試
    こちらは有料となりますが、模試を受けることができます。実際の試験に近い内容の問題が出題されるので、試験の雰囲気を掴む意味でも、受けることをお勧めします。
    注意が必要なのが、模試に解答はついてきません。勉強方法としては、模試で分からなかったサービスを再度blackbeltなどで確認することです。

最後に

模試受験→復習 まで実施すれば、合格点に近いレベルの知識はついてくると思います。ここまできたら一度受験してみることをお勧めします。
不合格だった場合でも、自分に足りていない部分がかなり明確にわかるので、そこを復習すれば合格に近づけます。 私は、Sysops2回、SAPRO1回落ちてます(´・ω・`) それでも、最終的にはすべての試験に合格できたので、復習あるのみだと思います!

今後AWS認定資格を受ける方の参考になれば幸いです。

以上となります。

「Toggl」を使って、秒単位の時間管理をする

こんにちは。

最近AWSの資格の勉強などをしていてブログかけてませんでした。
今回技術とは少し離れて、時間管理の話をしたいと思います。内容は軽め。

最近実施したタスクに使った時間を秒単位で記録するようになりました。
今いる会社は比較的緩いので、昼休みや休憩の時間も自由に取れます。
そのため、自分で時間を管理しないと、思った以上に休憩していたり、逆にオーバーワークしていることがあり、思ったよりパフォーマンスがでていないことがあります。
そこで、時間管理をし始め、どこにどれくらいの時間を使っているのか見える化しました。

時間管理に使っているツールは「Toggl」です。
f:id:ykoomaru:20161208224917p:plain

Toggl - Free Time Tracking Software

Webベースの時間管理ツールで、構造がシンプルで使いやすいのでおすすめです。
日/週/月/年単位のサマリもグラフで見ることができるので、自分の時間の使い方を一目で確認することができます。
f:id:ykoomaru:20161208225143p:plain

詳しい使い方は、こちらのサイトで紹介されているので御覧いただければと思います。 inspiration-notebook.com

時間管理して1番よかったことは、時間の感覚がかなり正確になったことにつきます。
設計や構築、資料作成など色々作業はありますが、自分はどれにどれくらいの時間かかっているか把握できるようになったので、1日の予定を正確に立てられるようになりました。
それによって、精神的にも余裕がでているのを感じています。
また、突発的なタスクが降ってくることもありますが、その分のバッファも設けていているので、そこで対応しています。

何を書きたいのかわからなくなってきましたが、最後に実際にTogglを使っている画面を載せておきます。
休憩時間だけでなく、社内業務(事務処理など)で使った時間なども時間を残しています。業務時間行ったことすべてを残しておくのがおすすめです。

f:id:ykoomaru:20161208223740p:plain

数日続けるだけでも、個人にとっては価値のあるデータになるはずです。

【AWS】EC2にDockerを導入する (インストールからコンテナ作成、Apache導入まで)

コマンドのチートシートはこちらを参照ください。
Docker チートシート - Qoosky

目次

  1. Dockerインストール(ホストOS作業)
  2. Dockerコンテナ作成(ホストOS作業)
  3. Apacheインストール(ゲストOS作業)
  4. コンテナイメージの保存(ホストOS作業)
  5. コンテナ内のApacheを起動(ホストOS作業)
  6. 動作確認

環境

OS : Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type

作業

1.Dockerインストール(ホストOS作業)
  • ルートへ切り替え
# sudo su -
  • Dockerをyumのレポジトリからインストール
    AmazonLinuxではデフォルトでレポジトリに登録されているので、そのままyumでインストールできます。
# yum install -y docker
# service docker start
# chkconfig docker on
# chkconfig

2.Dockerコンテナ作成(ホストOS作業)

  • DockerHubより、CentOS6のイメージをpull
# docker images
# docker pull centos:centos6
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos6             f07f6ca555a5        5 weeks ago         194.6 MB
  • コンテナのデプロイ(ホストOS作業)
    先ほどPULLしてきたCentOSのイメージをデプロイ
# docker run -i -t centos:centos6 /bin/bash

3.Apacheインストール(ゲストOS作業)

先ほどのデプロイしたコンテナ内で作業します。

# rpm -qa | grep httpd
# yum info httpd
# yum install -y httpd
# rpm -qa | grep httpd
httpd-tools-2.2.15-54.el6.centos.x86_64
httpd-2.2.15-54.el6.centos.x86_64

# service httpd start
# chkconfig httpd on
# chkconfig
  • コンテナからexit
# exit

4.コンテナイメージの保存(ホストOS作業)

Apacheを導入したコンテナイメージを保存します。

  • 作成したコンテナID確認
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
84f57724fd5a←確認        centos:centos6      "/bin/bash"         15 minutes ago      Exited (0) 4 minutes ago                        romantic_goldstine
a709cc377033        centos:centos6      "/bin/bash"         17 minutes ago      Exited (0) 16 minutes ago                       backstabbing_leavitt
  • コンテナイメージの保存
# docker commit 84f57724fd5a centos:httpd2.2.15
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              httpd2.2.15         221ae221bd50        8 seconds ago       295.3 MB  ←追加されたイメージ
centos              centos6             f07f6ca555a5        5 weeks ago         194.6 MB

5.コンテナ内のApacheを起動(ホストOS作業)

# docker ps
# docker run -d -p 8080:80 centos:httpd2.2.15 /usr/sbin/httpd -DFOREGROUND
# docker ps 
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                  NAMES
c281e513e098        centos:httpd2.2.15   "/usr/sbin/httpd -DFO"   3 seconds ago       Up 2 seconds        0.0.0.0:8080->80/tcp   clever_raman.2.15 /usr/sbin/httpd -DFOREGROUND

docker run -d -p 8080:80 centos:httpd2.2.15 /usr/sbin/httpd -DFOREGROUND
docker run → コンテナを作成
-d → バックグラウンドで起動
-p 8080:80 → ホストポート(8080)をゲストポート(80)へポートフォワード
centos:httpd2.2.15  → 雛形のコンテナイメージ
/usr/sbin/httpd -DFOREGROUND → コンテナ内の/usr/sbin/httpdを実行

6.動作確認

  • ブラウザより、コンテナ内のApacheへアクセス(SGはホスト側のポートを解放してください)
    http://[EC2のEIP]:8080/

f:id:ykoomaru:20161014153754p:plain

以上となります。
Docker楽しい。

【AWS】 AmazonLinuxにSSH接続用ユーザーと秘密鍵を作成

test001というユーザーと秘密鍵を作成し、ssh接続するまでの備忘録です。

目次

  1. ユーザー作成
  2. 公開鍵,秘密鍵作成
  3. 公開鍵をリネーム
  4. 公開鍵の権限修正
  5. 接続確認

作業

1.ユーザー作成

テストユーザーを作成し、テストユーザーへ切り替え

# useradd test001
# sudo su test001

2.公開鍵,秘密鍵作成

ssh-keygenコマンドで、秘密鍵と公開鍵を作成(項目は全てエンターで問題ないです。)
秘密鍵の扱いには注意してください。流出したら鍵を作り直しましょう。

# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test001/.ssh/id_rsa): 
Created directory '/home/test001/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/test001/.ssh/id_rsa.
Your public key has been saved in /home/test001/.ssh/id_rsa.pub.

3.公開鍵をリネーム

# mv /home/test001/.ssh/id_rsa.pub /home/test001/.ssh/authorized_keys

4.公開鍵の権限修正

自分のみ参照できるように権限修正

# chown -R test001. /home/test001/.ssh/
# chmod 400 /home/test001/.ssh/authorized_keys

5.接続確認

/home/test001/.ssh/id_rsa(秘密鍵) をローカルへコピー
秘密鍵を使ってのSSH接続できればOK

ssh -i <秘密鍵> test001@<EC2のグローバルIP>

参考

ssh公開鍵認証設定まとめ - Qiita

鍵交換方式によるssh接続

【AWS】AmazonLinuxにApacheをソースインストールしてみた

こんにちは。
yumrpmからパッケージインストールした経験はあったのですが、ソースインストールした経験はなかったので、やってみました。

環境

目次

  1. 事前準備
  2. Apacheインストール
  3. 動作確認

作業

1.事前作業

Apache2.4をソースからインストールするためには、 APRAPR-UtilPCREの3つのツールが必要らしいので、こちらもインストールします。
これらのツールがないと、Apacheインストールの際にこけるらしい。

  • APR APR-Util

    Apache Portable Runtime(アパッチ・ポータブル・ランタイム、APR)は、 Apache HTTP Server のサポートライブラリである。 OSとソフトウェアの間でOSなどの環境の違いを吸収するAPIを提供する。そして、他のOSに一般的にある機能が存在しないOSでは、APRが代替を提供する。よって、APRを使うことにより真のクロスプラットフォームなプログラムを作ることが出来る。(WIKI)

  • PCRE

    PCRE (Perl Compatible Regular Expressions) は、Perl 5 互換の正規表現C言語で実装したライブラリのことである。(WIKI)

ライブラリのインストール

ツールを入れる前に必要なライブラリがあるので、以下のコマンドでインストールor更新をします。pcreはここでインストール。

# yum install gcc make pcre pcre-devel wget

APRインストール

# cd /usr/local/src
# wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache//apr/apr-1.5.2.tar.gz
# tar -xvzf apr-1.5.2.tar.gz
# cd apr-1.5.2
# ./configure --prefix=/opt/apr/apr-1.5.2
# make
# make test
# make install

APR-Utilインストール

# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.4.tar.gz
# tar -xvzf apr-util-1.5.4.tar.gz
# cd apr-util-1.5.4
# ./configure --prefix=/opt/apr-util/apr-util-1.5.4 --with-apr=/opt/apr-1.5.2
# make
# make test
# make install

2. Apacheインストール

Apacheのソースインストール

ソースコードは以下からダウンロードします。
Download - The Apache HTTP Server Project
手順の1でインストールしたAPR、APR-Utilのディレクトリを指定してコンパイルします。

# cd /usr/local/src
# wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.4.23.tar.gz
# tar -xvzf httpd-2.4.23.tar.gz
# cd /usr/local/src/httpd-2.4.23
# ./configure --prefix=/opt/httpd/httpd-2.4.23 --with-apr=/opt/apr/apr-1.5.2 --with-apr-util=/opt/apr-util/apr-util-1.5.4
# make
# make install

3.動作確認

Apacheを起動して、ブラウザから接続できるか確認します。

Apache起動

# /opt/httpd/httpd-2.4.23/bin/apachectl start
# ps alx|grep httpd

ブラウザからアクセス

EC2のパブリックIPにHTTP(80)でアクセスします。

http:// <EC2のパブリックIP>
f:id:ykoomaru:20160922153615j:plain

上記のように表示されれば、Apacheが正常に動作しています。

ソースからのインストールは初めてでしたが、yumrpmと比べてかなり手順が多いですね。
まだまだコマンドで不明な所があるので、もっと勉強しなければ!

以上となります。
ご指摘事項がありましたら、ご連絡お願いします。

参考

Apache2.4系をソースからインストール - Qiita
Apache 2.4 ソースインストール - eTuts+ Server Tutorial
Apache httpd 2.4 をソースからインストールする手順 (CentOS/RedHat) | WEB ARCH LABO

パッケージインストールとソースインストールの違い

こんにちは。
前回phpをパッケージインストールしたのですが、パッケージインストールとソースインストールの明確な違いを理解していなかったので、調べてみました。
前職では、ほぼWindowsServerしか触ったことなかったので、Linuxの基礎から学びます。

目次

  1. パッケージインストールとソースインストールとは
  2. パッケージインストールとソースインストールのメリット、デメリット

1. パッケージインストールとソースインストールとは

そもそもパッケージインストールとソースインストールの違いがわかってなかったので、調べてみた。 わかりやすく解説しているサイトがあったので、引用。
インストール方法の違い

  • パッケージインストール

パッケージを利用する方法は既に利用する環境に合わせてコンパイルされているものをインストールする方法です. この方法の多くはパッケージ管理ツールと言うものを利用し, インストールするソフトウェアが必要としている別のソフトウェアなどがインストールされているかという確認を行ってくれてます. また管理ツールを利用するとインストールしたソフトウェアの環境を管理してくれますのでアンインストールなども容易で, 関連するファイルも全て処理してくれます.

利用する環境に合わせてコンパイルされているものがrpmパッケージですね。 導入するOSによってrpmパッケージがわかれているのは、環境に合わせてすでにコンパイルされているのが理由だったのですね。

  • ソースインストール

 ソースからコンパイルする方法はソフトウェアのプログラムを自分のコンピュータでコンパイルする方法で, 利用環境にあった動作を行う実行ファイルを作成できます. この方法はほとんどの UNIX系の OS で共通にインストールできる方法です. ただし, コンパイルするための環境がコンピュータに用意しておく必要があり, インストールされたファイルは各自で管理しなければいけません.

パッケージのようにすでにコンパイルされているわけではないので、自分でコンパイルする必要があるのですね。
パッケージ化されていないソフトのインストールはソースインストールする必要がありそう。
ソースインストールは、ファイルを自分で管理しないといけないので、アップデートやアンインストールをするときに手間がかかりそう。依存関係も意識しないといけないので、レベル高め。

2.パッケージインストールとソースインストールのメリット、デメリッ

それぞれのメリット、デメリットも抑えたほうが良さそうなので、調べてみた。

メリット デメリット
ソースインストール インストールオプションを指定できる。最新版が利用できる。インストールディレクトリを変更できる(複数バージョンを混在させられる)。 インストールに時間がかかる。エラー時にソースやライブラリアンに関する知識が要求される。
パッケージインストール 手軽にインストールできる。依存関係のパッケージも自動的にインストールしてくれる。 最新版が使えない。インストールオプションが指定できない。

複数のバージョンを使い分ける時は、ソースインストールしないといけないのか。いろいろ調べてみたけど、ソースインストールは上級者向けの印象。
最新版をインストールできないとか問題もあるけど、ソースインストールするとアンインストールもままならないので、できることならパッケージインストールのほうがいいのかな。
安定版のバージョンを使うレベルで良いなら、パッケージインストールで事足りるはず。

以上となります。
ご指摘事項がありましたら、ご連絡お願いします。
もっと詳しく知りたい場合は、参考をご参照ください。

参考

参考にさせていただきました。

LinuxにPHPをインストールする方法は大きく2通りあると思います… - 人力検索はてな
http://cai.cs.shinshu-u.ac.jp/sugsi/Lecture/linux/h_08-03.html
yumとソースインストールのメリット・デメリット [遊びとお勉強の村]

【AWS】AmazonLinuxにPHP5.1を導入してみた【メモ】

こんにちは。
必要になるかわかりませんが、AmazonLinuxにphp5.1を入れる機会があったので、メモを残しておきます。
ソースからコンパイルしているわけではなく、RPMからごりごりパッケージインストールしているので、正常に動作しない可能性があります。
インストールは自己責任でお願いします。

環境

構築手順

1. php関係ファイルダウンロード

wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-cli-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-common-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-gd-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-mbstring-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-xml-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-pdo-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-devel-5.1.6-45.el5_11.x86_64.rpm 
wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/php-mysql-5.1.6-45.el5_11.x86_64.rpm
wget ftp://rpmfind.net/linux/remi/enterprise/5/remi/x86_64/compat-libcurl3-7.15.5-3.el5.remi.x86_64.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/CentOS/5/x86_64/mysqlclient15-5.0.92-3.ius.centos5.x86_64.rpm

2.phpインストールに必要なモジュールインストール

#yum install -y libcrypto.so.6 libssl.so.6 openssl098e-0.9.8e
#rpm -Uvh compat-libcurl3-7.15.5-3.el5.remi.x86_64.rpm

3.LAMP構成でMysqlを使う場合は、Mysqlクライアントを導入

# yum install -y libpcap
# rpm -Uvh mysqlclient15-5.0.92-3.ius.centos5.x86_64.rpm

4.phpインストール

# yum localinstall -y php-5.1.6-45.el5_11.x86_64.rpm php-devel-5.1.6-45.el5_11.x86_64.rpm php-cli-5.1.6-45.el5_11.x86_64.rpm php-common-5.1.6-45.el5_11.x86_64.rpm php-pdo-5.1.6-45.el5_11.x86_64.rpm
# yum localinstall -y php-xml-5.1.6-45.el5_11.x86_64.rpm php-gd-5.1.6-45.el5_11.x86_64.rpm php-mbstring-5.1.6-45.el5_11.x86_64.rpm php-mysql-5.1.6-45.el5_11.x86_64.rpm

5.バージョン確認

#php -v
PHP 5.1.6 (cli) (built: Nov  6 2014 12:25:07) 
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies