【Azure】AWSエンジニアがAzureを勉強するために使った資料まとめ

AWSエンジニアがAzureを1から勉強したので、参考ドキュメントとAzureサービス概要を書きました。Azureサービス概要にはAWSサービスに置き換えるとどのサービスが当てはまるかについても言及しています。

参考ドキュメント

Azure サービスと AWS サービスの比較 - マルチクラウド | Microsoft Docs

  • MSが出しているAWSとAzureの対応表。AWSエンジニアだとまずはここから始めると理解進むと思います。

Azure アーキテクチャ センター | Microsoft Docs

  • アーキテクト集。AWSでいうAWS Well-Architectedな感じ。一通り、さらっと読む。

Microsoft Azure実践ガイド

  • Azure関連の本で一番よかった。サービスの概要 => 実際に手を動かしてみる感じ。
  • 最終章に、代表的なアーキテクトの例と構築手順があって、実戦向きな内容。
  • サービスの作成手順が書いてあるので、実際にAzure契約してやってみるのが良い
      * 注)Azureの無料期間は1ヶ月なので、契約して1ヶ月以内にやると無料で体験できる。無料期間過ぎても少額のサービスを利用しているのでそこまでお金かからないですが。

実戦ガイド一通り読んだ後に、Azure アーキテクチャ センター を見返してみるとスっと内容が入ってくる感じがあった。
多分上記ドキュメントで基礎部分はできると思うので、後は実際にサービスの細かい部分について見ていけばAzureエンジニアとしても戦っていけそう。

Azureサービス概要

ネットワーク

  • 仮想ネットワーク(VNet)
  • サブネット
    • AWS : サブネット
  • ユーザー定義ルート(UDR)
    • AWS : ルートテーブル
  • インターネットアクセス
    • AWS : NATGateway
    • 仮想マシンは、GIP持っていない場合でも外部接続可能。AWSだとNATGateway等がないと外部への接続不可。
  • 負荷分散
    • Traffic Manager : DNSベースのトラフィック分散サービス
      • AWS : Route53 ルーティングポリシー
    • LoadBalancer : L4バランシング
      • AWS : CLB、NLB
      • 静的パブリックIPあり
    • Application Gateway : L7バランシング
      • AWS : ALB
      • 静的パブリックIPなし
      • WAF機能あり
  • DNS
  • ネットワーク監視
    • Network Watcher : ネットワークリソースの監視
      • AWS : CloudWatch、VPCフローログ
      • VPN診断
      • パケットキャプチャ
  • セキュリティ
    • NSG : ネットワークアクセス制御
      • AWS : NACL
      • サブネットとNICにアタッチ可能
      • ステートレス
      • AzureMonitor : NSGのイベントログ
    • SecurityCenter
      • AWS : GuardDuty
      • 防御、検知、可視化
      • IPS、IDS機能
      • サードパーティの製品との連携も可能
      • Endpoint Protection : セキュリティソフト
        • AWS : AWS標準のものはなさそう
  • VPN

仮想マシン

PaaS

  • AzureAppService
    • WebApp : WEBサイト、WEBアプリケーション基盤
      • AWS : ElasticBeanStalk
      • Kudu : WebApp内でのログを確認できる。これは便利そう。
    • Mobile Apps : モバイルアプリケーション基盤
      • AWS : Mobile Hub
    • API Apps : APIの作成
      • AWS : APIGateway?
    • Logic Apps : ワークフロー
      • AWS : StepFunction

権限制御

  • Azure AD : ID管理、SSO
  • RBAC : ユーザー + グループ権限制御
    • AWS : IAMポリシー + IAMユーザー、IAMグループ
  • リソースポリシー : サブスクリプション + リソースグループ権限制御
    • AWS : IAMポリシー + IAMロール? 概念が違うから正確ではないかも。AWSコンソール自体に権限付与するようなイメージ。
  • サービスプリンシパル : APIによるリソース操作
    • AWS : IAMクレデンシャル

ストレージ

  • Azure Storage
    • Blob : 非構造化オブジェクトデータ
      • AWS : S3、EBS
      • コンテナ : S3バケット/オブジェクト
      • ブロックBLOB : ファイルをブロックとして構成
      • ページBLOB : ランダムアクセス向き
        • AWS : EBS
        • Azure Disk Encryption
      • 追加BLOB : ブロックの追加のみ
      • SSE
        • S3サーバーサイド暗号化
    • Table : NoSQL
      • AWS : DynamoDB
    • Queue : キュー
    • File : SMB、HTTP
  • クライアントツール
  • アクセス管理
    • ストレージアカウントキー : ストレージアカウント上の全てのデータにアクセス可能
    • Shared Access Signature(SAS) : 接続できる領域を制御できる
  • Managed Disk
    • AWS : EBS
    • 今はAzureで仮想マシン起動するならこれ使う。
    • VHDエクスポート可
    • スナップショットは増分課金ではなく、取得時のディスク容量
    • 制限はあるけど、非管理ディスクからManaged Diskに変換可能

データストア

  • SQLDatabase
    • AWS : RDS
    • 性能調査のツールがある
      • DTU Calculator
    • アクティブジオレプリケーション : リージョン間のDBレプリケーション(非同期)
    • 認証
      • SQL認証
      • AzureAD認証
    • FW
      • サーバーレベル : 全DBに適用
      • データベースレベル : DBごと
    • Query Performance Insight : クエリの実行時間とか
      • AWS : RDS拡張モニタリング
  • Azure SQL Data Warehouse : データウェアハウス
    • AWS : Redshift
    • FW : SQLDBと同じ
      • サーバーレベル : 全DBに適用
      • データベースレベル : DBごと
  • Azure Cosmos DB: グローバルレベルで利用可能なDB。世界的に展開しているサービスで利用。
    • AWS : 対応しているサービスなし?RDSのグローバルバージョンみたいな感じかな。
  • Azure Data Lake Store : データレイク

環境作成

【Azure】Azureアカウント登録後に実施すること

これまではAWSだけ触ってきましたが、今後Azureに関わる機会が増えそうなのでAzureのアカウント登録をしました。
AWS同様Azureでも、アカウント作成後に必ずやっておいた方がよいことがあったので、まとめます。
AWSコンソールにに慣れているとAzurePortalとの相性が頗る悪いです...(つらい)

目次

①課金アラート
②2要素認証の有効化

①課金アラート

個人でクラウドサービスに契約している時は、クラウド破産しないために課金アラートは必ず設定しておきましょう。
Azureでは、2018年9月時点でプレビューですが、課金アラートの設定があったので以下のサイトを参考に設定してみました。プレビューなのに驚きましたが...

docs.microsoft.com

設定はこんな感じです。2000円を超えたらメールがくるようにしました。複数アカウント登録できるようなので、必要に応じて設定してみてください。 f:id:ykoomaru:20180907151909p:plain

②2要素認証の有効化

乗っ取られたら話にならないので、2要素認証を有効にしましょう。
Azureは良くわからかったのですが、MSのアカウントへの2要素認証(管理者アカウント)とAzureADへの2要素認証?の考え方があるらしく後者はライセンスがいるらしい。
とりあえず、下のURLを参考にAzureの管理者となっているMSアカウントに2要素認証かけました。

https://support.microsoft.com/ja-jp/help/4028586/microsoft-account-turning-two-step-verification-on-or-off

有効にするとログイン時に以下のように2要素認証を求められるようになります。安心!

f:id:ykoomaru:20180907152626p:plain

参考:AzureADでの2要素認証
docs.microsoft.com

Azureのアカウントの考え方が難しい。
AWSでいう管理者アカウントがAzureでいうMSアカウントなのかな。
AWSのIAMユーザーがAzureADに登録されているユーザー? もっと勉強する必要があります。

最後に

AWSとAzureの違いに苦しめされていますが、まず最初のセットアップが終わったのガシガシリソースに触っていこうと思います。

[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