カテゴリー
2020年 Linux LPIC コマンド コンピューター トラブルシューティング 技術一般 認定資格

Linux の基本コマンドが変更されて困った

2020年09月27日作成

Linux って、コマンド操作が多いのですが、コマンドが変わりましたね。例えば、「ifconfig」で各インターフェースに割り当てられている IP アドレスが見られたのですが、これは「ip address」に変わってます。

これくらいなら、大きな問題にはならないのですが、「nmcli」という Network Service コマンドになると、もうさぱりです。何だたっけ?と、インターネットでその都度調べないと使えません。

私は古いコマンドで Linux を使っていた人ですが、5 年くらい前に対応していたある案件で、久しぶりに Linux を触った時に、「え、何これ?」って感じでした。確か、その時に触ったのが、CentOS 7 だったと思います。

最近は、自宅での動作確認で使用している仮想環境や AWS などのパブリッククラウド上で、Linux を再びよく使うようになりました。やはり、何らかのサーバーを作る際に、Windows よりも Linux が便利である面は多いです。

そこで、迷って Linux のコマンドを確認したい時にすぐに見られるように、ちょっとまとめておこうと思いました。

IP コマンド

オブジェクト省略形    説明
addr aIP アドレスの設定や確認します
link lネットワークデバイスの設定や確認します
route rルーティングテーブルの設定や確認します
neighbor nARP キャッシュの表示します
addr のコマンド省略形    説明
show s指定したデバイスのみのIP アドレス情報を表示します
add aIP アドレスの追加します
del dIP アドレスの削除します

IP アドレスの表示

ip addr / ip a

全てのデバイスの IP アドレス情報を一覧で表示します。

ip addr show <device-name>

デバイス名を指定し、特定のデバイスに割り当てられた IP アドレスの情報を表示します。

以下の例では、ens33 を指定して表示しています。

以下の例では、Loopback インターフェースを指定して表示しています。

IP アドレスの追加と削除

ip addr add <ip-address>/<prefix> dev <device-name>

dev でデバイス名を指定し、指定したデバイスに対して、IP アドレスを追加します。

以下の例では、ens33を指定して、IP アドレスをマニュアルにて設定しています。

ip a で表示してみると、指定した IP アドレスが設定されていますね。

ただ、上書きされると思っていたのですが、追加されるみたいです。これは気をつけないといけない点です。

ip addr del <ip-address>/<prefix> dev <device-name>

dev でデバイス名を指定し、指定したデバイスに対して、IP アドレスの削除を行います。

以下の例では、ens33を指定して、IP アドレスを削除しています。

ip a で表示してみると、指定した IP アドレスが削除されていますね。

疎通確認コマンド

疏通確認

ping

ping は非常によく使用する疏通確認コマンドですが、さすがにこれは変わってませんね。

経路確認

traceroute

宛先ホストに到達するまでの経路情報を表示します。

オプション説明
-UUDP パケットを送信すします(デフォルト)
-IICMP パケットを送信します

Linux の traceroute って、Cisco 機器と同じ様に、デフォルトは UDP なんですね。Windows と同じく ICMP を使っていると思ってました。オプションで切り替えられるのは便利ですね。

以下の例では、Google DNS である「8.8.8.8」に対して、Traceroute を打ってみました。

ついでに、Linux のTraceroute のデフォルトがUDP であることも確かめてみようと思い、隣で動かしているWindows マシンで、Wiresharkを取って見てみました。確かにUDP を使っていますね。TTL exceed などの応答は、ICMP を使うんですね。

「-I 」オプションも試してみましょう。今度はICMPを使ってTraceroute を打つはずです。

Wireshark でパケット見てみると、UDP はなくなり、ICMP のみ見えています。

IPv6 の環境では、traceroute6 コマンドを使用します。

tracepath

宛先ホストに到達するまでの経路情報を表示します。traceroute との違いは、PMTU (Path MTU)を表示できるという点です。

以下の例では、Google DNS である「8.8.8.8」に対して、Tracepath を打ってみました。PMTU の値が表示されていますね。

これもついでに、パケットキャプチャを見てみました。UDP を使っていますね。

ちなみに、私が先日受講した Linux のオンライン講義では、「ICMP を使う」と言っていましたが、実際に見てみるとICMP ではなくUDP を使っています。ここにもそう書いてありますね。

やはり、実機でちゃんと見てみるというのは重要ですね!

ルーティングコマンド

経路情報の確認

ip route

経路情報(ルーティングテーブル)を表示します。昔からの「netstat -r」は非推奨になってしまったみたいです。

以下の例が、ip route の出力結果です。1行しかなく、非常にシンプルですが、NIC が1つでスタティックルートも使っていませんので、PC として使っていれば大体こんなものでしょう。

でも、デフォルトゲートウェイは、どうやって確認しましょうか?

route -n コマンドを使えば良いみたいですね。先日の講義で、route コマンドも非推奨だという話を聞きましたが、インターネットでいろいろ調べてみた限り、そのようなことはなさそうです。とりあえず、デフォルトゲートウェイの確認には、このコマンドを使っておきましょう。

経路情報の追加と削除

オプション説明
addルーティングテーブルに、経路情報を追加します
delルーティングテーブルから、経路情報を削除します
経路情報の追加
ip route add <dest-network> via <gw-ip-addr> dev <device-name>

dev でデバイス名を指定し、ルーティングテーブルに経路情報を追加します。

以下の例が、「10.10.10.0 /24」ネットワーク向けのネクトホップを「192.168.45.2」に設定した出力です。

route -n コマンドでも、追加した経路が見られますね。と言うか、初めから route -n お使っていた方が早い気がしてきました。デフォルトゲートウェイも見られますし。

経路情報の削除
ip route del <dest-network>

ip route del <dest-network> via <gw-ip-addr> dev <device-name>

ルーティングテーブルから、指定した経路情報を削除します。

dev でデバイス名を指定し、特定のデバイスに関連付いているルーティングテーブルに経路情報を削除することもできます。

以下の例が、「10.10.10.0 /24」ネットワーク向けのネクトホップを「192.168.45.2」に設定した経路情報を削除した出力です。

ホスト名の設定

このコマンドは変更された訳ではないですが、個人的に思い出せないことが多いのでメモしておきます。

ホスト名の表示

ホスト名は、/etc/hostnameファイルの中に記載されています。

ホスト名の表示には、hostname コマンドで表示するのと、cat /etc/hostnameとホスト名ファイルを表示する方法があります。

ホスト名の変更

ホスト名の変更には、hostnamectl コマンドを使用します。set-hostname の後に hostnameファルを指定して、ホスト名を変更します。

DNS の設定

DNS で使用するネームサーバーは、/etc/resolve.conf ファイルの中に記載されています。

ネームサーバーの表示

Cat コマンドで、上記ファイルを指定して、内容を表示させます。

ネームサーバーの追加・変更

ネームサーバーは上記ファイルの記載されていますので、vi などのエディターを使って編集すれば、追加・変更が可能です。

ついでに vi エディターですが、最低限のこれくらい知っておけば、とりあえず使えます。

  • i で入力モード
  • ESC ボタンを押して、コマンドモード
  • :wq で保存して終了
  • :q! で終了

NMCLI コマンドは、まだ下書きです。時間のある時に修正していきます。

nmcli コマンド

オブジェクトコマンド説明
なしデバイスの情報を一覧表示
deviceshow <device-name>指定したデバイスの情報のみを表示
connectionshow <connection-name>接続情報を表示
modify <connection-name> <parameter>指定した接続を設定
up <connection-name>接続を有効化
down <connection-name>接続を無効化

IP アドレスの表示

nmcli

各デバイスの IP アドレス情報を表示します。

nmcli show <device-name>

指定したデバイスの IP アドレス情報のみを表示します。

IP アドレスの変更

nmcli connection modify <conn.-name> ipv4.method manual ipv4.addresses <ip-address> / <prefix>

コネクション名を指定して、IP アドレスを設定します。

コネクションの有効化・無効化

nmcli connection up <conn.-name>

設定を反映させるために、コネクションを UP にします。

nmcli connection down <conn.-name>

コネクションを Down させます。

デフォルトデートウェイの設定

nmcli connection modify <conn.-name> ipv4.gateway <default-gw-ip-address>

指定したコネクションに対して、デフオルトゲートウェイを設定します。

nmcli connection modify <conn.-name> ipv4.dns <dns-ip-address>

指定したコネクションの参照先 DNS サーバーのアドレスを設定します。

これを覚えておくと、ちょっと便利です。

IP アドレス、デフォルトゲートウェイ、DNS サーバーのアドレスは、セットで設定することが多い項目です。この様にコマンドを組み合わせることで、これら3つの項目が一度に設定ができます。

nmcli connection modify <conn.-name> ipv4.method manual ipv4.addresses <ip-address> / <prefix> ipv4.gateway <default-gw-ip-addr> ipv4.dns <dns-ip-addr>

これはたまに使うなと思うコマンドあれば、今後も追記して更新していきたいと思います。

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate PaaS クラウド コンピューター サーバレス 技術一般 認定資格

AWS を学ぶ(21)Elastic Beanstalk って何だろう?


にほんブログ村

AWS Elastic Beanstalk (以下、Elastic Beanstalk)は、アプリケーションを実行するインフラを学習することなく、AWS でアプリケーションを素早くディプロイ、管理できます。これにより、管理の複雑さを激減させることが可能となります。

つまり、PaaS(Platform as a Service) ですね。

ユーザーは、アプリケーションをアップロードするだけです。あとは、AWS 側で、Elastic Beanstalk が自動的に、容量のプロビジョニング、負荷分散、拡張、及びアプリケーションの状態のモニタリングを処理します。

つまり、ユーザーは、アプリケーション開発にのみ集中し、インフラの方はAWSに任せてしまうということです。正にクラウドですね。

Elastic Beanstalk は、複数のアプリケーションをサポートしています。

  • Go
  • Java
  • .NET
  • Node.js
  • PHP
  • Python
  • Ruby

アプリケーションをデプロイすると、Elastic Beanstalk は選択されたサポートされるプラットフォームのバージョンをビルドし、複数の AWS リソースをプロビジョニングして、アプリケーションを実行します。

Elastic Beanstalk に関して別途料金が発生することはありません。アプリケーションが使用する基になる AWS リソースに対してのみ支払うだけとなります。

Elastic Beanstalk を使ってみる

Elastic Beanstalkは、便利そうということは分かったのですが、やはりまだピンと来ません。実際に触ってみましょう。

Elastic Beanstalk には、サンプルアプリケーションが用意されています。それを使って試してみましょう。

AWS 管理コンソールの検索メニューから、「Elastic Beanstalk」と入力し、クリックします。

Elastic Beanstalk の管理画面が表示されます。

今すぐ始めるのところの「Create Application」をクリックします。

ウェブアプリケーションの作成画面が表示されます。

アプリケーション名を入力します。

キーも入力します。

プラットフォームは、Tomcat を選択します。そのオプションは、表示されたものをそのまま使います。

画面下部の「アプリケーションの作成」をクリックして、次に進みます。

アプリケーションの作成が始まりました。

完了するまでに、5分くらいかかります。

ログを見ていると、EC2 にインスタンスを作ったり、ELB を作成したり、いろいろしていますね。

アプリケーションの作成が完了しました。

環境名のところに、アプリケーションのアクセス先になるURL が表示されています。それをクリックしてアクセスします。

ブラウザーが開き、サンプルアプリケーションが表示されました。

動作確認成功です。

アプリケーションの作成時に、いろいろとリソースを作成するログが見えましたので、実際に見て見ましょう。

EC2 の画面を見て見ます。インスタンスが新規に作成されてますね。

次に、ELB も見て見ます。ELB が新規で作成されています。

ELB のDNS 名にもアクセスして見ましょう。サンプルアプリケーションの画面が表示されますね。

ELB のターゲットグループも、ちゃんと作成されています。

次に、CLoudFormation を見て見ます。こちらにもスタックが作成されています。

最後に、S3 です。ここにも新規でバケットができています。

必要となるリソースを自動で作成して、アプリケーションを展開するというのは本当ですね。これは素晴らしいです。

先ほどは、サンプルアプリケーションでしたので、今度はサンプルじゃないアプリケーションを動かしてみたくなりました。

しかし、私はコードが書けません。そこで、インターネット上に何かアプリケーションが公開されていないかと探してみたら、ありました!私と同じ様に、Elastic Beanstalk を試してました。それを動かしてみようと思います。

新規でアプリケーションを作成します。

アプリケーション名を入力します。

キーも入力します。

プラットフォームは、先ほどと同じでTomcat です。

そのオプションは、表示されたものをそのまま使ってみましょう。

今回は、アプリケーションを持ち込みますので、「アプリケーションコード」のところは、「コードのアップロード」を選択します。

「ファイルを選択」をクリックして、アプリケーションをアップロードします。

注意点は、アップロードするアプリケーションを圧縮しておく必要があるみたいです。

画面下部の「アプリケーションの作成」をクリックします。

アプリケーションの作成が始まりました。

5分くらいで、アプリケーションの作成が完了しました。

ブラウザーでアクセスしてみましょう。

表示されました。持ち込みアプリケーションでも、動作確認成功です。

Elastic Beanstalk は、アプリケーションのバージョン管理もできるみたいです。

Elastic Beanstalk は、アプリケーション開発者にとって、素晴らしい環境だと思います。自分のアプリケーションを動かすインフラ側の環境は、一切気にすることなく、AWS が自動で作成してくれます。コードを書くことだけに集中できますね。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 証明書 認定資格

AWS を学ぶ(20)AWS Certificate Manager を使ってみる


にほんブログ村

前回に引き続き、今回も暗号化に関する記事です。

インターネット通信に、暗号化は必須となりました。サーバーとのやり取りの暗号化、そのアクセス先のサーバーの信頼性を確認するために、サーバー証明書が使われています。

その際に利用されるプロトコルが、SSL (Secure Sockets Layer) / TLS (Transport Layer Security) となります。

そこで使用される証明書は、SSL 証明書と呼ばれます。実際に使用されているのは、SSL 3.0 をベースにした後継のプロトコルであるTLSとなります。

SSL 証明書の種類と役割

証明書は、主に以下の2つのために使用されます。

  • 通信経路での安全性の確保
  • 通信している相手が誰であるかの証明

通信経路の安全性の確保は、通信内容を盗聴されない様にすることと、通信内容を改ざんされない様にすることのために使用されます。

通信している相手が誰であるかの証明には、証明局(CA: Certification Authority)を使用し、ここで証明書を発行・管理します。

証明書の種類

証明書には、以下の 4 種類があります。

  1. 自己証明書:自分で証明局を建てて証明書を発行
  2. ドメイン証明(DV):ドメインの所有のみを証明し、組織情報の証明はされない
  3. 組織証明(OV):組織情報を証明
  4. 拡張認証(EV):OV よりも厳しい審査で認証し、アドレスバーに組織名が表示される

Vは「Validation」の略で、DV = Domain Validation、OV = Organization Validation、EV = Extended Validationになります。それぞれのもう少し細かい説明は、ここのページが参考になります。

AWS Certificate Manager

AWS Certification Manager (以下、ACM)は、AWS が証明局となり、DV 証明書を発行するサービスです。

2048ビットRSA鍵と、SHA-256 の SSL/TLS サーバー証明書の「作成と管理」を行います。ACM が発行する証明書の有効期限は13ヶ月となり、自動で更新するという設定も可能となります。

ACM を利用できる対象は、AWS のサービスのみとなりますが、無料で使用できるというメリットがあります。

ACM の初期設定時には、ドメインの所有の確認が必要で、メール送信、またはDNS を利用して確認します。

ACM が利用可能なサービス(2020年9月現在)

  • Elastic Load Balancer (ELB)
  • Amazon CloudFront
  • AWS Elastic Beanstalk
  • Amazon API Gateway

AMC を使ってみる

AWS 管理コンソールの検索テキストボックスに「Certificate Manager」と入力し、Certificate Manager をクリックします。

証明書の管理画面が表示されます。

「証明書のリクエスト」をクリックします。

証明書のリクエスト画面が表示されます。

今回は、EC2 上に稼働させている Web サーバー向けに証明書を発行したいと思います。「パブリック証明書のリクエスト」を選択します。

画面下部の「署名書のリクエスト」をクリックして、次へ進みます。

対象となるドメイン名の指定です。

ドメイン名のところに、EC2 上で稼働させている Web サーバーで使用しているドメイン名を入力します。

画面下部の「次へ」をクリックして、次へ進みます。

証明書の確認方法の選択です。

今回は、自分が管理している Web サーバーで、DNS の方も管理していますので、「DNS の確証」を使います。

画面下部の「次へ」をクリックして、次へ進みます。

タグの設定です。

後から分かりやすい様に、名前を付けておきます。

最終確認です。

今まで設定した内容を確認し、間違いがなければ、画面下部の「確証とリクエスト」をクリックします。

証明書が発行されました。

「DNS の設定をファイルにエクスポート」をクリックし、ファイルをダウンロードしておきます。

画面下部の「続行」をクリックします。

証明書は発行されたのですが、確証状態のところが、「確証保留中」になっています。証明書はまだ使えない状態です。

先ほどダウンロードしたファイルの内容を、DNS (AWS ならRoute 53) 側に設定します。

しばらく時間がかかりますが、確証が完了すると、確証状態が「成功」に変わります。これで、証明書が使える状態になりました。

ちなみにこの記事を表示している Web サーバーも EC2 上にあり、Route 53 やACM を使用しています。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

関連する記事:

最近の記事:

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(19)AWS の暗号化サービス

KMS と CloudHSM

機密性の高いデータを扱う際には、暗号化が必要となります。まず、鍵管理サービスです。AWS の鍵管理サービスは 2 種類あります。

  • KMS: Key Management Service
  • CloudHSM: Cloud Hardware Security Module

KMS は、AWS が管理するマネージドサービスです。

CloudHSM は、AWS 内に専用のハードウェアを用意し、これを利用して鍵管理するサービスです。

この2つのサービスの違いは、信頼の起点(Roots of Trust)です。ユーザー自身なのか、AWS に任せるのか、です。

KMS

KMS には、以下の 3 つの API が用意されています。

  • Encrypt: ユーザーデータ暗号化のための API で、4KB までの平文データをサポート
  • Decrypt: ユーザーデータ復号化のための API
  • GenerateDataKey: ユーザーデータの暗号化に利用するカスタマーデータキーを生成
マスターキーとデータキー

KMS では、2 つの鍵を管理しています。

  • マスターキー: Customer Master Key (CMK)
  • データキー: Customer Data Key (CDK)

CMK は、データキー (CDK) を暗号化するために使用される鍵です。ユーザーデータの暗号化には使用されません。

CDK は、ユーザーデータを暗号化するために使用される鍵です。通常は AWS で暗号化されて保存されいますので、ユーザーデータの暗号化や復号化を行う度に、CDK を復号化して使用します。

つまり、CDK でユーザーデータを暗号化し、CMK を使って、 CDK をさらに暗号化します。この手法は、エンベロープ暗号化と呼ばれています。

CloudHSM

CloudHSM は、専用のハードウェアを使用する為、初期コストも月次の固定費も必要となります。大規模なシステム向けや、特定の規制、法令に準拠したい場合に使用されます。

CloudHSM で、FIPS 140-2 のレベル 3 認証済みの HSM を使用して、暗号化キーを管理できます。

上記の様に、CMK とCDK があり、2 段階の鍵構造になっています。この理由は、セキュリティーの向上のためです。

データキーは、S3、EBS、Redshift など、暗号化の対象ごとに作成します。これにより、万が一、鍵の漏洩があった際にも、そのリスク範囲を限定することができます。

そして、データキーをマスターキーで暗号化することにより、実際の運用で使用する機会の多いデータを保護します。マスターキーを集中管理することにより、全体としてのセキュリティーを高めています

クライアントサイドとサーバーサイドの暗号化

暗号化は、クライアントサイドで行うのか、サーバーサイドで行うのかも、常用なポイントとなります。

クライアントサイドの暗号化

クライアントサイドの暗号化は、ユーザー側の処理で行います。AWS が提供するSDKを利用するケースが多いです。EC2やLambdaなどでプログラムで暗号化して、S3などにアップロードするというケースも、クライアントサイドの暗号化となります。

クライアントサイドの暗号化の利点は、暗号化れたデータが転送されますので、経路が暗号化されていなくても、ユーザーデータを保護できるという点です。

クライアント側暗号化には、AES 256 ビットが使用できます。

クライアント側のマスターキーと暗号化されていないデータが AWS に送信されることありません。暗号化キーを安全に管理することが重要です。キーを紛失した場合、データを復号することはできません。

AWS オフィシャルサイト

サーバサイドの暗号化

サーバーサイドの暗号化は、AWS内で行います。サーバーサイドの暗号化は限定されていて、S3などの一部のサービスのみで提供されています。

サーバー側の暗号化は、保管時のデータ暗号化に関するものです。  S3 は、ディスクに書き込まれるときにデータをオブジェクトレベルで暗号化し、ユーザーがデータにアクセスする時に復号します。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

カテゴリー
2020年 AWS AWS Solutions Architect - Associate CDN キャッシュ クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(18)CloudFront を使ってみる

この記事は、日本語で作成し、機械翻訳で外国語に訳しています。

AWS を学んでみる(8)CloudFront ってなんだろうで、CloudFront について調べてみましたが、今回は、CloudFront を実際に使ってみました。

今回の動作確認では、以下のようなイメージで、構成を作ってみます。

(1) の部分が、Web サーバーと ELB、(2) の部分が CloudFront です。

CloudFront を使ってみる

事前準備

まず、(1) の部分を作っていきます。

VPC やサブネットについては、AWS を学ぶ(1)VPC を理解するAWS を学ぶ(2)VPC を作ってみようで説明しています。

EC2 でのインスタンスの起動については、AWS を学ぶ(4)EC2 を理解するAWS を学ぶ(6)EC2 を使ってみようで説明しています。

EC2 上に、Web サーバーを起動させます。インターネットからアクセスできるように、パブリックサブネットに起動させて下さい。

Web サーバーのグローバルアドレスを確認し、ブラウザーに入力して下さい。

Web サーバーのコンテンツが表示されましたね。

次に、ELB を起動させます。

ELB の起動と設定については、AWS を学んでみる(9)ELB を使ってみようで説明しています。

今回は ALB を使ってみます。ターゲットを、ES2 上の Web サーバーで指定しておきます。

ターゲットのステータスが Healthy になりました。

ELB のDNS 名を確認し、それをブラウザーに入力してアクセスします。

Web サーバーのコンテンツが表示されましたね。ELB 経由で Web サーバーへのアクセスも成功です。

CloudFront の起動と設定

AWS 管理コンソールの検索テキストボックスに CloudFront と入力し、CloudFront を選択します。

CloudFront の管理コンソールが表示されます。

「Create Distribution」をクリックします。

今回試したいのは、Web サーバーのコンテンツキャッシュです。上の「Web」の方の「Get Started」をクリックします。

Create Distribution の画面が表示されます。

Origin Settings の中の「Origin Distribution Name」のテキストボックスをクリックし、プルダウンメニューを表示させます。

その中に、先ほどの事前準備で作成した ELB が表示されていますので、それを選択します。

これ以外の設定は、今回は特に変更しません。

画面下部の「Create Distribution」をクリックします。

CloudFront Distributions の画面に戻ります。

Statusのところが、「In Progress」になっているはずです。導入が完了するまでに、10 分くらいかかります。

Status が「Deployed」になりました。これで CloudFront の導入が完了です。

導入が完了した Distribution の「ID」をクリックして、詳細を表示させます。

「Domain Name」の箇所に表示されているのが、CloudFront を使う時のアクセス先になります。

CloudFront のドメイン名を、ブラウザーに入力してアクセスしてみます。

Web サーバーやELB経由の時と同じコンテンツが表示されましたね。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWS を学ぶ(17)CloudWatch を使ってみる

このページは、日本語で作成し、機械翻訳で外国語に変換しています。

今回は、CloudWatch について学んでみます。

例えば、何らかのしきい値を超えたらアラートを出し、Eメールで通知するということは、運用上必要だと思います。

この機能を、CloudWatch は、簡単に提供してくれます。

実際に使ってみることが早いですので使ってみました。

CloudWatch を使ってみる

AWS 管理コンソールにログインします。

検索テキストボックスで、CloudWatch と入力すると、CloudWatch が見つかるので、それをクリックします。

CloudWatch の管理コンソールが表示されます。

画面右側のメニューから、「アラーム」をクリックします。

アラーム設定画面が表示されます。

画面右上の「アラームの作成」をクリックします。

メトリクスの設定画面が表示されます。

「メトリクスの選択」をクリックします。

EBS、EC2、S3 などの項目が表示されます。表示される項目は、実際に使っている環境で異なります。

今回は、EC2 インスタンスに対して、アラームを設定したいと思います。EC2 をクリックします。

「インスタンス別メトリクス」をクリックします。

さまざまなメトリクスが表示されます。

とりあえず、分かりやすく、CPU 使用率でアラートを設定してみましょう。

一覧の中から、「CPU Utilization」をクリックします。

対象となるインスタンス ID が表示されています。これは EC2 の仮想インスタンスのインスタンスIDです。EC2 の管理コンソールも同時に開いて確認しましょう。

私の場合、テスト向けのインスタンスである、TEST-amz-linux があります。これのインスタンス名とインスタンス ID が同じであるかを確認します。

「CPU Utilization」を選択すると、現在の対象インスタンスの CPU 使用率が表示されます。

メトリクスの条件と指定の画面が表示されます。

今回は、CPU 使用率をメトリクスとして使用します。そのメトリクスは、AWS が用意しているので、メトリクス名は、そのまま使います。

今回は、CPU 使用率が 70% を超えたらアラートメールを出すようにしようと思います。「しきい値の種類」は、静的にします。

「より大きい」を選択し、「よりも」の項目で「70」を入力します。

まだトピックがありませんので、「新しいトピック」を選択し、「通知を受け取るEメールエンドポイント」に、メールの送信先になるEメールアドレスを入力します。このEメールアドレスが、アラートメールの受け取り先です。

名前と説明の画面が表示されます。

アラームの名前とその説明を入力します。

「次へ」を押すと、設定が完了します。

アクションのところを見ると、まだ「保留中の確認」になってますね。

先ほどメールの送信先に設定したメールを確認してみましょう。AWS からメールが届いているはずです。

メールの本文中にある「Confirm Subscription」をクリックします。

以下のような画面が表示されるはずです。これで、サブスクリプションは完了です。これからアラートメールが飛んできます。

CloudWatch の管理画面に戻ると、先ほど保留中だったステータス項目が、「確認済み」に変わります。

設定は、これで完了です。

CloudWatch のアラートを確認してみる

では、実際にアラートを発生させてみましょう。

今回設定しているのは、「CPU の使用率が 70% を超えたら、Eメールでアラートを出す」です。

Linux の top コマンドで、現在の CPU 使用率を確認してみます。テスト機を使ってますので、現在の CPU 使用率は 0% です。

top

次に、Linux の yes コマンドを使って、CPU 使用率を上げてみたいと思います。

これは不思議なコマンドです。Null にリダイレクトし続けると、CPU 使用率がどんどん上がっていきます。

yes > /dev/null

これを 4つ か 5つ 繰り返すと、すぐに CPU 使用率が上がります。今回は、5つ 繰り返してみましょう。

yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &

すぐに CPU 使用率が 99% まで上昇しました。

しかし、CloudWatch の方は、5分間の平均値で表示しています。すぐには結果が反映されませんので、5分から10分くらい待ってみましょう。

CloudWatch 側でも、CPU 使用率の上昇がみられるようになりました。

アラートメールが飛んでいるはずです。

メールボックスを確認してみると、70% のアラートのメールが届いてますね。動作確認は成功です。

今回は、CPU 使用率でアラートメールを飛ばすように設定してみましたが、CloudWatchは、いろいろなメトリクスが用意されています。いろんなアラートを飛ばして、試してみて下さい。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(16)IAMについて

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのサービスです。

IAM は基本的な機能なのですが、非常に重要な機能です。AWS のアカウントを作成したばかりの状態ですと、Root ユーザーのみが作成され、そのユーザーでログインしています。

このRoot ユーザーですが、非常に権限のあるユーザーで、名前の通り、AWS 上のオペレーションを何でも行うことができます。

このアカウント情報が、仮に外部に漏れてしまうと、AWS アカウントが乗っ取られ、何でもできてしまうという危険があります。

これを避けるために、IAM ユーザーを作成し、そのユーザーを使って運用するというのが、ベストプラクティスとなります。

IAM の基本機能

IAM の設定項目として、以下の4つがあります。

IAM ポリシー: 何を許可し、何ができるのかを定義します。例えば、EC2の操作は閲覧と開始、起動のみ許可し、削除は許可しないなどです。

IAM ユーザー: ユーザー名のことです。

IAM グループ: 複数のユーザーをグループ化します。

IAM ロール: 何ができるかを定義するポリシーを指定し、サーバー(仮想インスタンス)に適用します。

これらの設定項目が、それぞれどの様なものなのか見ていきましょう。

IAM ユーザーとIAM ポリシーを作成します。

作成したポリシーを、権限内容に応じて、必要なIAM ユーザーに割り当てます。これで、IAM ユーザーに何ができるかの権限が割り当てられます。これをインラインポリシーと呼びます。

インラインポリシーでも良いのですが、IAM ユーザーの数が増えた場合はどうでしょうか。運用が煩雑になりますよね。権限の許可忘れや、意図しない権限を割り当ててしまったりして、事故に繋がるケースもあり得ます。

これを避けるために、IAM グループを利用します。IAM ポリシーは、IAMグループに割り当てます。そして、IAM ユーザーを、必要なIAM グループに所属させるのです。これにより、運用が楽になります。IAM ユーザーは、所属するグループを変更するだけで、権限内容も変更可能となります。

次に、IAM ロールです。

IAM ロールは、IAM ユーザーに割り当てるのではなく、サーバー(仮想インスタンス)に割り当てます。

IAM ポリシーで、何を許可するのかを定義し、そのIAM ポリシーをIAM ロールに割り当てます。そして、そのIAM ロールをサーバーに割り当てることで、サーバに権限を適用することができます。

IAM を使ってみよう

IAM ポリシーの作成

AWS の管理コンソールにログインし、検索テキストボックスにIAMと入力します。

IAM の管理コンソールに接続します。

左側のメニューから、「ポリシー」をクリックします。

ポリシーの一覧が表示されます。これらは、AWS が用意しているポリシーとなります。

自分で新規にポリシーを作成してみましょう。

「ポリシーのフィルター」をクリックし、表示されるメニューの中から「ユーザーによる管理」をクリックします。

「ポリシーの作成」をクリックします。

「ビジュアルエディタ」のタブの中に、メニューが表示されます。「サービス」をクリックします。

サービスの一覧が表示されます。非常にたくさんのサービスがありますので、検索を使って、使用したいサービスを選択していきます。

まず、EC2を設定してみましょう。検索エキストボックスに、「EC2」と入力します。

EC2関連のサービスのみが表示されますので、「EC2」をクリックします。

実行可能なアクションが表示されます。

リスト:参照系アクション

  • リスト: 表示系のアクション
  • 読み込み: 参照系のアクション
  • タグ付け: タグの追加、削除、編集アクション
  • 書き込み: 書き込み系のアクション
  • アクセス権限の管理: アクセス制御系のアクション

「リスト」をクリックして、表示系アクションの詳細を表示します。

アクションの詳細が表示されます。ここから、具体的に適用したいアクションを細かく選択できます。

今回は、リストは、全てのアクションを選択します。また、読み込みも全てのアクションを選択します。

次に、「書き込み」をクリックします。

書き込み系アクションの一覧が表示されます。今回は、書き込みに関しては、一部のアクションのみを許可してみたいと思います。

アクションはたくさんあるので、CTL+Fで検索すると早いです。

今回許可したいアクションは、EC2インスタンスの起動(StartInstance)と停止(StopInstance)です。それ以外の書き込み系アクションは許可しません。この2つのアクションだけを選択します。

書き込み系アクションで、2つのみが許可されてますね。

次に、アクションの対象の指定です。「リソース」の項目になります。

今回は、「全てのリソース」を選択し、EC2インスタンス全てに対して、上記アクションを適用します。

「リクエスト条件」では、MFA(多要素認証が必要)や、送信元IPアドレスを限定するなどが設定可能となります。

今回はこれらの機能は使用しません。指定せずに進めます。

EC2に対しての権限設定は完了しました。画面の上部に戻り、EC2の横の三角ボタンを押して、詳細画面を閉じます。

再び、サービスの検索に戻ります。

次に、RDSに対するアクションを指定していきます。

検索テキストに「RDS」と入力し、RDS関連のサービス一覧を表示させます。

「アクセスレベル」が表示されます。先ほどのEC2の時と同じ感じで、設定していきます。

表示系と読み込み系の権限は、全て与えます。

書き込み系の権限はですが、今回は何も与えません

次に、「リソース」の右側の三角ボタンをクリックします。

RDSサービスの全てに対して、指定したアクションを適用します。

これで、2つのサービスに対する権限が完成しました。

画面下部の「ポリシーの確認」をクリックします。

ポリシーの確認画面が表示されます。

今、作成したポリシーの名前を入力し、説明のテキストボックスに、そのポリシーの説明を入力します。

最後に、画面下部の「ポリシーの作成」をクリックします。

ポリシーが作成されました。

「ポリシーフィルター」から、実際に見てみましょう。

先ほど作成した、EC2とRDS向けのポリシーが見えますね。

IAM ユーザーの作成

次に、IAM ユーザーを作ってみましょう。

IAM 管理コンソールの左側メニューから、「ユーザー」をクリックします。

「ユーザーを追加」をクリックします。

まず、ユーザー名を入力します。

次に、「アクセスの種類」から、「AWSマネジメントコンソールへのアクセス」を選択します。

次に、「コンソールのパスワード」です。ここには、ログインの際に使用するパスワードを入力します。

最後に、「パスワードのリセットが必要」です。今回はこの機能は使用しませんので、チェックは入れません。

「次のステップ」をクリックします。

アクセス許可の設定画面が表示されます。

今回は、まずはインラインポリシー(IAM ユーザーに直接、IAM ポリシーを割り当てる)を試してみたいと思いますので、「既存のポリシーを直接アタッチ」を選択します。

ポリシーの一覧が表示されます。

「ポリシーのフィルタ」をクリックし、メニューから、「ユーザーによる管理」にチェックを入れます。

先ほど作成したポリシーが表示されますので、ポリシーの名前を選択します。

「次のステップ」をクリックします。

タグの追加画面が表示されます。

タグを入力しておきます。

「次のステップ」をクリックします。

最後に、画面下部の「ユーザーの作成」をクリックします。

ユーザーが作成されました。

これで、作成したユーザー「User-01」に対して、作成したIAM ポリシーが適用されました。

権限の確認

今回の手順では、ユーザーを作成し、そのユーザーに対して、自分で定義したポリシーを直接適用(インラインポリシー)しました。

次に、そのユーザーでログインして、想定通りの権限であるかを確認してみましょう。

IAM 管理コンソールの画面左側メニューから、「ダッシュボード」をクリックします。

「IAM ユーザーのサインインリンク」が表示され、その下にログインに使用するURLが表示されます。これをコピーします。

コピーしたURLをブラウザーに入力してアクセスします。

ログイン画面が表示されます。

作成したユーザー名、そのパスワード入力してログインします。

ログインすると、画面右上に、ログイン中のユーザー名が表示されます。「User-01」になってますね。

EC2の管理コンソールにアクセスします。

画面左側メニューの「インスタンス」をクリックして、インスタンスの管理画面にアクセスします。

テスト様のAmazon Linuxのインスタンスがあるので、これを使ってみます。

「開始」をクリックして、インスタンスを起動します。

インスタンスの起動が始まりました。成功ですね。今回適用しているポリシーでは、EC2の全てのインスタンスに対して、起動と停止は許可しています。

次に、インスタンスを終了してみましょう。このアクションは、ポリシーで許可されていないはずです。

終了保護されているので、終了ができないようです。

ならば、終了保護を解除してみましょう。

「アクション」から、「終了保護の変更」をクリックします。

「はい」をクリックして、終了保護を無効化します。

エラーとなり、終了保護の解除ができません。

EC2インスタンスに対して、終了の権限がないためですね。

ここで思いました。

Rootユーザーならば、終了保護を外すことができるので、これを外した後では、どの様になるのだろう?

早速、試してみましょう。Rootユーザーでログインして、先ほどのインスタンスの終了保護を外してみます。

Rootユーザーでログインしています。

「はい」をクリックし、終了保護を無効化します。

インスタンスの終了保護が無効化されましたので、先ほどのUser-01で、再度ログインします。

User-01でログインしました。再度、インスタンスの終了を行ってみます。

終了エラーとなり、終了させられません。

権限がないことが検証できましたね。

IAM グループの作成

次は、IAM グループを作成してみましょう。

前回までの手順では、IAM ユーザーに、IAM ポリシーを直接割り当てる、インラインポリシーで行いましたが、今回は、IAM グループを作成し、IAM ポリシーはグループに割り当て、IAM ユーザーを、そのグループに所属させるという方法を行います。

IAM の管理コンソールの画面左側メニューから、「グループ」をクリックします。

「新しいグループの作成」をクリックします。

グループ名の設定画面が表示されます。

グループ名を入力します。

「次のステップ」をクリックします。

ポリシーのアタッチ画面が表示されます。

「ポリシーフィルタ」から、「カスタマー管理ポリシー」を選択します。

ポシリーのアタッチ画面が表示されます。

ポリシー名のところに、先ほど作成したポリシーが表示されますので、適用したいポリシーを選択します。

確認画面が表示されますので、設定内容を確認します。

画面下部の「グループの作成」をクリックします。

グループが作成されました。

次に、作成したグループに、ユーザーを所属させてみます。

追加したいグループ名を選択し、「グループのアクション」から「グループにユーザーを追加」を選択します。

ユーザー名の一覧が表示されます。

追加したいユーザーを選択します。

画面下部の「ユーザーの追加」をクリックします。

グループ名の隣が、そのグループに所属しているユーザーの数になります。User-01を所属させましたので1になりましたね。

これで、IAM ポリシーをIAM グループに適用し、IAM ユーザーはグループに所属するという形ができました。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)
カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(15)Glacier とは何か?どの様に使うのか?

AWS Glacier

Amazon Glacier (以下、Glacier)は、99.999999999の耐久性を持ちながら、容量あたりの費用を抑えたアーカイブストレージサービスです。価格は安いのですが、データの取り出しの際には時間がかかってしまうという特徴があります。

ちなみに、Glacier というのは、グレイシアと読み、日本語で「氷河」という意味です。

オンプレミスの環境ですと、磁気テープを使って長期のデータ保存を行いますが、磁気テープでのバックアップには、「長期保存」、「取り出しに時間がかかる」、「アクセス頻度は低い」といった特徴があります。Glacierは、このイメージで使用されます。

S3の様に、保存するデータに対して名前を付ける事はできず、自動採番された「アーカイブID」で管理されます。

Glacierへのデータの保存は、APIによる操作、またはS3のライフサイクル管理により行われます。

余談ですが、私は以前、クラウドバックアップ関連の製品を取り扱っていたのですが、その製品がS3 やGlacier にデータを保存することができました。Glacier を保存先とする時に、設定にちょっと困ったのですが、ここがポイントでした。Glacier はS3 のバケットを経由しないと、データの保存ができないです(API を使えば別ですが)。

Glacier の価格

Glacier は非常に低コストと言われますが、具体的に価格を見てみましょう。S3と比較してみます。AWSの公式サイトに価格が掲載されています。

S3 標準GlacierS3 Glacier Deep Archive
条件最初の50TB/月      1分から12時間の取り出し     年に1、2回のアクセスで、12時間以内でのデータ取り出し
GBあたりのコスト(USD)0.0250.0050.002
S3 と Glacier のコスト比較

ちなみに私の自宅のNASには、約2TBのデータが保存されています。これをAWSのクラウドストレージ にバックアップして保存すると想定してみます。

S3 と Glacier のコストシミュレーション

1ドル120円換算で計算していますが、S3 Glacier Seep Archive だと月にして4ドル(日本円で480円)です。確かにすごく安いですね。これなら個人でも可能な金額です。

Glacier の構成要素

Glacierは、以下の4つの要素から構成されます。基本的にはS3と同じ(ただし呼び方は異なる)です。

ボールト(S3: バケット)

アーカイブを保存するための領域です。ボールトで使われる名前は、リージョン、及びアカウント内で一意であれば良いため、たのアカウントで使用されている名前も利用できます

アーカイブ(S3: オブジェクト)

Glaceirに保存されるデータのことです。各アーカイブには一意のアーカイブIDとオプションの説明が割り当てられます。アーカイブIDには、138バイトのランダムな文字列が自動的に割り当てられ、ユーザーが指定する事はできません。

インベントリ

各ボールトに保存されているアーカイブの情報(サイズ、作成日、アップロード時に指定された説明など)を収集します。1日に1回の頻度で更新されるため、最新の情報が反映されるまでに時間がかかります。マネージメントコンソールから確認する事で、リアルタイムで状況が見られます。また、ListVaults API を使用することもできます。

ジョブ

アーカイブやイベントリに対して検索をしたり、データをダウンロードするといった要求に対して処理を実施し、それらの処理状況を管理します。

Glacier を使ってみよう

ボールトの作成

AWS 管理コンソールの検索から、「Glacier」を入力し、Glacierの管理コンソールにアクセスします。

「ボールトの作成」をクリックします。

ボールトを作成するリージョンを選択し、ボールトの名前を付けます。

イベント通知の画面が表示されます。

今回は「通知を有効にしない」を選択します。

確認画面が表示されます。

設定内容を確認し、「送信」をクリックします。

ボールトが作成されました。

ボールト名をクリックしてみると、ボールトの中が見られます。まだデータ(アーカイブ)は何も保存していませんので、アーカイブ数は 0 のままです。

アーカイブデータの保存

Glacier のボールトには、上述の通り、直接アクセスができません。API または、S3 のライフサイクルを使用します。

S3 の使い方については、AWSを学んでみる14で調べてみましたので、そちらをご参照下さい。

S3 上の指定したバケツにデータを保存します。

ストレージクラスで、「Glacier」を選択します。

設定内容の確認をし、「アップロード」をクリックして、データを転送します。

転送したデータの名前の「ストレージクラス」を見てみると、Glacier になっています。これでデータがアーカイブとして、Glacier 上に保存されました。

データの取り出しオプション

Glacierにアーカイブしたデータを閲覧するためには、「データの取り出しリクエスト」を行う必要があります。取り出しリクエストを行ってから実際に取り出しができる様になるまでの待ち時間に応じて、高速、標準、バルクの3種類のリクエストオプションがあります。

高速

1−5分程度後でのデータ取得

標準

3−5時間程度後でのデータ取得

バルク

5−12時間後でのデータ取得。次の日に見られれば十分というケースに使用

データの取り出し設定オプション

データ取り出し時の設定オプションは3つあります。Glacier 上のボールトを指定し、「設定」をクリックして設定ができます。

  • 無料利用枠のみ: 無料枠の範囲でデータの取り出しができます。それを超えるデータ量になると、取得リクエストは拒否されます。
  • 最大取得率: 1時間あたりの最大取得率で価格が変わります。
  • 取得制限なし: 制限をかけません。

Glacier Select

Glacier Select は、アーカイブデータに対してSQL を実施し、条件にあったデータを抽出する機能です。つまり、Glacier に保存されているデータを直接検索することができ、アーカイブ全体を取得する必要がありません。

特定のデータだけをアーカイブから取り出せる便利な機能なのですが、使用には、対象のアーカイブデータは非圧縮のSCV形式出なければならばならないなどの条件があります。

Glacier Select は、まもなく Amazon Athena と Amazon Redshift Spectrum と統合される予定とのことです。

データの暗号化

Glacier にデータ保存する時は、SSLを使ったデータ転送が行われます。またGlacier に保存されるデータは、標準で暗号化されます。

もし独自の暗号化方式を使用したい場合は、Glacierに保存する前にその暗号化方式で暗号化を行い、そのデータをGlacierに転送します。

データのセキュリティーに関して、AWSの公式サイトでは、以下の様に記載されています。

AWS では、お客様のプライバシーに絶えず注意を払っています。弊社のお客様はデータのセキュリティを重視しています。そのため、弊社にはシステムを 24 時間体制でモニタリングしている世界トップクラスのセキュリティ専門家チームがおり、お客様のコンテンツを保護しています。AWS により、暗号化、移動、保管管理機能を含め、常にデータを保有しているという認識を持って、最も安全なグローバルインフラストラクチャを構築できます。データセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、安全性が保証された施設を離れる前に物理レイヤーで自動的に暗号化されます。すべての VPC クロスリージョンピアリングトラフィックや、カスタマーまたはサービス間の TLS 接続などといった追加の暗号化レイヤーもあります。AWS Key Management System (KMS) が管理するキーを使用する、あるいは FIPS 140-2 レベル 3 検証済み HSM を使って CloudHSM で独自の暗号化キーを管理することにより、転送中および保存中のデータを簡単に暗号化して、許可されたユーザーのみがアクセスできるようにするツールを提供しています。AWS では、地域および地方のデータプライバシー法や規制を順守していることを示すために必要な管理と可視性も提供しています。グローバルインフラストラクチャの設計により、データが物理的に配置されている地域を完全に制御し、データ常駐要件を満たします。

AWS 公式ウェブサイト

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

AWS認定資格試験テキスト AWS認定 ソリューションアーキテクト-アソシエイト【電子書籍】[ 佐々木 拓郎 ]価格:2,618円
(2020/8/30 16:09時点)
感想(0件)
カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(14)S3とは

AWS Simple Storage Service (以下、S3)は、AWS が提供する、安価で耐久性の高いオブジェクトストレージサービスです。容量は無制限(ただし、1つのオブジェクトの最大サイズは 5TB)です。

オブジェクトストレージとは?

ストレージとして一番メジャーなファイルストレージと比較すると、分かりやすいと思います。ファイルストレージはディレクトリ構造をもち、フォルダやファイルを管理しますが、オブジェクトストレージはディレクトリ構造を持ちません。フラットな構成で、ユーザーが独自にデータに対して情報(メタデータ)を付与することができます。このページが参考になります。

利用料とSLA

  • 1ヶ月あたり、0.025 USD/GB(月に 10GB 使っても30円程度。cf. EBS は、1ヶ月あたり 0.12 USD/GB)
  • データは複数のAZに保存され、その耐久性は、99.999999999%(イレブンナイン)

S3 の構成要素

バケット

オブジェクト( データ)を保存するための領域です。バケットは名前を付けて管理しますが、その名前は、AWS内でユニークである必要があります。

キー名

各オブジェクトに付けられる名前です。

オブジェクト

S3 上に保存あれるデータそのものです。各オブジェクトにはキーが付与され、「バケット名+キー名+バージョンID」で、必ずユニークになるURLが作成されます。

メタデータ

オブジェクトデータを管理するための情報です。オブジェクトの作成日時やサーズと言ったシステム定義情報以外にも、アプリケーションで必要となるユーザーが定義する情報をメタデータに保存することもできます。

S3 の使い方

REST や SOAP と言った HTTP ベースの Web API を使用して、S3 上のオブジェクトにアクセスします。

S3 はウェブの管理コンソールから、シンプルなオペレーションで使用することができます。やることは、バケット(フォルダ)を作り、その中にファイル(オブジェクト)やフォルダを保存していきます。

S3 上のバケットとその配下のフォルダ

S3 の機能

アクセス管理
  • ユーザーポリシー・アクセスポリシーなどでアクセスを管理
  • IAMで利用できるユーザーを管理
  • バケット単位で、ユーザーや送信元IPアドレスなどを制限
Webホスティング機能
  • 静的サイトであれば、S3だけで公開することが可能
  • ウェブサイトのラインディングページを保存したり、ウェイブサーバの障害時のSorry ページを置いておくなど
他のAWSサービスとの連携が豊富
  • Redshiftを使ってS3のデータを利用するSpectrum機能
  • S3にデータが保存されたらLumbdaを起動するFunction機能(起動トリガー)

S3 がよく使われるシーンの例

S3 は柔軟性に優れたサービスであるため、アイデア次第では使い方は無限大です。代表的な使われ方として、以下のものがあります。

  • バックアップデータの保存
  • ビッグデータ解析用のデータ一時保存
  • ETL (Extranc/Transform/ Load)の中間ファイルの保存
  • EC2インスタンスやコンテナからのログの転送
  • 静的コンテンツのホスティング

具体例:

1. 静的コンテンツの配置
  • 今、ご覧になっているこのブログのページで使っているイメージファイルも、S3 上に保存してあり、そこから配信しています。
2. ログなどのエクスポート先
3. バッチ連携用ファイルの保存先
4. 静的ウェブホスティング

静的ウェブホスティング機能を行う場合、注意点があります。

  • 静的コンテンツに限る
  • サーバサードの動的なコンテンツをホスティングすることはできない
  • 使用する独自ドメインとバケット名を一致させておく必要がある

ストレージクラス

S3 では、用途に応じて7つのランクを設けています。これをストレージクラスと呼びます。ストレージクラスにより、SLAが設定されます。

STANDARD(スタンダード)

これがデフォルトのストレージクラスです、低遅延と高スループットを兼ね備え、S3 の性能が最も発揮されるクラスとなります。

  • 耐久性:99.999999999%
  • 可用性:99.99%
STANDARD-IA(標準 IA)

STANDARDよりは保存にかかるコストが安価になるストレージクラスです。参照頻度の低いデータ向けとなるため、アクセスが必要のないデータ、それほど頻繁にアクセスしないデータ、といったデータを保存する時に向いています。

  • 耐久性:99.999999999%
  • 可用性:99.99%
ONEZONE-IA(1ゾーン IA)

単一AZ内のみでデータを複製するストレージクラスです。1つのAZ内でのみ複製を行うため、AZ単位で障害が発生した場合、データの復元ができない可能性が高いです。この点以外は、STANDARD-IAと同等のサービスレベルが提供されます。

  • 耐久性:99.999999999%
  • 可用性:99.5%
INTELLIGENT-TIERING(インテリジェントな階層型)

参照頻度の高低を明確に決めることができないデータ向けのストレージクラスです。STANDARDとSTANDARD-IAの2層構成となっており、30日以上参照されなかったデータは、自動的にSTANDARD-IAに移動されます。データの移動が発生するため、頻繁に移動は発生するとコストが高くなります。

  • 耐久性:99.999999999%
  • 可用性:99.9%
Glacier

ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。このクラスに保存されたデータにアクセスする場合、事前にアクセスリクエストする必要があります。またアクセスできるようになるまでに、数分から数時間かかるという特徴があります。

  • 耐久性:99.999999999%
  • 可用性:99.99%

上記5つのストレージクラス以外に、更に2つのストレージクラスが追加されているようです(2020年8月30日時点)。

Glacier Deep Archive

ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。アクセスできるようになるまでに、数時間かかるという特徴があります。1 年のうち 1 回か 2 回しかアクセスされないようなデータを対象とした、長期保存やデジタル保存をサポートします。特に、金融サービス、ヘルスケア、パブリックセクターなどの規制が厳しい業界を対象としており、コンプライアンス要件を満たすために 7ー10 年以上データを保管するように設計されています。

低冗長化

ほとんど参照されない、アーカイブ目的のデータを保存するストレージクラスです。推奨はされていないみたいです。

ライフサイクルの管理

S3 に保存されたオブジェクトは、その利用頻度に応じてライフサイクルを定義することができます。

移行アクション

データの利用頻度に応じて、ストレージクラスを変更します。最初はアクセス頻度が高いが、一定期間過ぎると低くなり、最後にはアーカイブさせると言った移行ができます。

有効期限アクション

指定された期限を越えたオブジェクトを、S3 から削除します。S3 は容量無制限のストレージサービスですが、保存容量が増えればコストも上がります。不要なデータは定期的に削除することが望ましいです。

バージョン管理

1つのオブジェクトに対して、複数のバージョンを管理(バージョニング)することができます。バージョニングは、バケット単位で有効・無効が指定できます。真・旧の両方のオブジェクトが保存されるため、保存容量が増えます。

アクセス管理

S3 のアクセス管理には、バケットポリシー、ACL、IAMが使用できます。

バケットポリシーは、バケット単位でのアクセス制御を行います。

オブジェクト単位での制御には、ACLやIAMを使用します。

データの暗号化

暗号化は、サーバ側での暗号化とクライアント側での暗号化の2種類があります。

サーバ側での暗号化は、データがS3 に書き込まれる時に暗号化され、読み取る時に復号化されます。

クライアント側での暗号化は、AWS SDK を使って、S3 に送信される前にデータの暗号化が行われます。復号化は、クライアント側で暗号化されたデータのメタデータから、どのキーで復号化するのかが判断されます。

サーバ側での復号化は、バケットに対してとオブジェクトに対して行えます。

バケットに対しての暗号化
オブジェクトに対しての暗号化

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト

カテゴリー
2020年 AWS AWS Solutions Architect - Associate クラウド コンピューター 技術一般 認定資格

AWSを学ぶ(13)VPC、EC2、ELB、Route 53 を使ってみる

VPC、EC2、ELB、Route 53 と学んできましたので、これらを組み合わせて使って、動作確認をしてみます。

ドメイン名の取得

今回はドメイン名の取得に、「お名前.com」を使います。期間限定で無料のドメインが取得できたり、1円のドメインが取得できたりします。

以下のリンクから、ドメイン名の取得ができます。

ドメイン名取得の手順

お名前.comの管理画面にログインします。

「ドメインを登録する」をクリックします。

使いたいドメイン名を入力し、「検索」をクリックします。入力したドメイン名が実際に使用可能かのチェックを行います。

私の使おうとしているドメインですと、「.work」なら1円で使えますね。期間限定で0円というのもやっています。その時期を狙うのも手です。

今回は1円で進めます。「.work」をクリックして選択します。

「お申し込みへ進む」をクリックします。

内容を確認し、「次へ」をクリックします。

「申し込む」をクリックします。事前にクレジットカード等の登録が必要です。

処理が開始されます。

ドメインの取得は完了です。

ネームサーバーの登録

AWSの管理コンソールに移動し、検索テキストボックスに「Route 53」と入力します。Route 53 が表示されるので、それをクリックします。

Route 53 の管理コンソールが表示されます。

「DNS 管理」をクリックします。

ホストゾーンを作成していきます。

ドメイン名に、先ほど取得したドメイン名を入力します。

タイプは「パブリックホストゾーン」を選択します。

「ホストゾーンの作成」をクリックして、ホストゾーンを作成します。

ホストゾーンが作成されました。

NS(Name Server)のところに表示されているのが、AWSで使用できるネームサーバーです。これをメモします。

お名前.com管理画面のトップに戻り、「ネームサーバーを登録する」をクリックします。

先ほど取得したドメイン名が表示されますので、その名前のチェックボックスにチェックを入れます。

「ネームサーバーの選択」のところで、「その他」タブをクリックします。

「その他のネームサーバーを使う」のネームサーバーのテキストボックスに、先ほどのAWSのネームサーバーを入力していきます。

4つのネームサーバーの入力が完了し、「その他のネームサーバーを使う」が選択されていることを確認し、「確認」をクリックします。

再度、登録内容を確認し、「OK」をクリックします。

画面上部に「完了しました」が表示されれば、ネームサーバーの登録は完了です。これで、AWS側のネームサーバーを使用することになりなります。

レコードの作成

Route 53 の管理コンソールに戻ります。

「レコードの作成」をクリックします。

ルーティングポリシーの画面が表示されます。

今回は「シンプルルーティング」を使用します。「次へ」を押して進みます。

「シンプルなレコードを作成」をクリックします。

レコード名は空白のままにします。

今回はELBを使いますので、「値/トラフィックのルーティング先」で、ELBのインスタンス名を選択します。

「レコードタイプ」はAを選択します。

「シンプルなレコードを作成」をクリックします。

内容を確認し、「レコードを作成」をクリックします。

レコード一覧に、ELBにトラフィックを向けたAレコードが作成されました。これで、kk-test.work 向けに流れてくるトラフィックは、ELBに向かいます。

実際に確認してみましょう。

kk-test.work 向けにPingを打ってみます。返ってくるIPアドレスを確認してみて下さい。ELBのものになっています。

NSLOOKUPでも確認してみましょう。ドメイン名とIPアドレスが表示されますね。

DIGでも確認してみましょう。ドメイン名とIPアドレスが表示されますね。

ウェブサーバーの設定変更

ウェブサーバーにSSHでリモートログインし、HTMLディレクトリーに移動します。

cd /var/www/html

このディレクトリーに、「index.html」というファイルを作成します。

sudo vim index.html

ブラウジングした時に表示させる内容を記入します。

<html>
<body>
Hello World. This is Web-01.<br>
<?php echo 'hoge'; ?>
</body>
</html>

早速、ブラウザーで確認してみましょう。”http://kk-test.wok” にアクセスしてみます。

先ほど、index.html に記入した内容が見えますね。

Route 53 の管理コンソールに戻ります。

「レコードを作成」をクリックします。

シンプルルーティングを選択し、「次へ」をクリックします。

「シンプルなレコードを定義」をクリックします。

レコード名は「www」にします。

「値/トラフィックのルーティング先」は「レコードタイプに応じたIPアドレスまたは別の値」を選択し、テキストボックスにELBのDNS名を入力します。

「レコードタイプ」は「CNAME」を選択します。

「シンプルなレコードを定義」をクリックし、レコードを作成します。

CNAME レコードが作成されました。

レコード一覧にも追加されています。

またブラウザーで確認してみましょう。今度は、「http://www.kk-test.work/index.html」にアクセスします。

index.html の内容が表示されました。

この教材を使って勉強してます。

AWS認定資格試験テキスト AWS認定ソリューションアーキテクト-アソシエイト