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

AWS を学ぶ(24)3つのメッセージングサービス


にほんブログ村

AWS には、SNS(Simple Notification Service)、SQS(Simple Queue Service)、SES(Simple Email Service)といった 3 つのサービスがあります。

これらの違いは以下のようになります。

  • Amazon SNS:プッシュ型の通知が得意。メール通知、SMS、モバイルプッシュが可能。要領制限があり、長文メッセージには向いていない。
  • Amazon SES:Eメールでの配信が得意。コンテンツ配信に向いているが、メール以外での配信はできない。
  • Amazon SQS:プル型のメッセージ処理が得意。非同期型のメッセージをキューイングする。

Amazon SNSとは

Amazon SNS(以下、SNS)は、わざわざそのためだけにサーバーを用意しなくても、SNS サービスを利用することで、アプリケーションからの通知を可能にします。ユーザーが何かを行ったタイミングを起点としてで通知するメッセージングを手軽に実現できます。

具体的な通知の例としては、商品が発送されたタイミンングでの発送完了通知や、フリーマーケットで商品が売れた時の通知などがあります。

またこれだけでなく、登録ユーザー全員に一斉告知のメッセージを送るという使い方もできます。

SNSの特徴
  • イベントをトリガーとしてのメッセージ

商品の購入、アカウント情報の変更、コンテンツの更新などの利用できます。

  • モバイル端末へのプッシュ機能

iOS、Android などのスマートフォンに対してプッシュ通知が行えます。

  • セキュリティーを確保

HTTPS API による通信のセキュアな状態を保つことが可能です。

  • サービスとしての利用

前払いや最低料金などはなし。完全な従量課金制で使った分しか支払う必要がありません。

Amazon SES とは

Amazon SES (以下、SES)は、AWS が提供するメールサービスです。メールサーバーをわざわざ用意しなくても、SES サービスを利用すれば、メール配信が可能になります。

具合的な使い方としては、マーケティングメールの配信メールマガジンの配信などがあります。

SES は、導入コストが安いことや、固定費用が掛からず従量課金という点で、企業レベルでの利用だけでなく、個人レベルでの利用にも向いています。

SES の特徴
  • 安い導入コスト

AWS のアカウントとメールアドレス、利用可能なドメインがあれば利用できます。

  • 低価格な料金

固定費用や最低料金はなし、従量課金で利用できます。

EC2 でホストされているアプリケーションからの配信の場合、毎月最初の 62,000 通は無料です。その後でも、1,000 通毎に、0.1 USDしかかかりません。

  • 高い信頼性

SES には、送信したメールが確実に届く様に、信頼性を高める機能があります。送信頻度のコントロールやアドレス偽装対策などです。

Amazon SQS とは

Amazon SQS(以下、SQS)は AWS が提供するキューイングサービスです。アプリケーションの切り離し(疎結合)とスケジューリングといった処理を、AWS のサービスで行えます。

キューとは、メッセージを管理するための入れ物のようなものです。

エンドポイントと呼ばれるURLを介して、キューに入ったメッセージを利用します。

SQS の利用パターン例

  • 一回の処理で許容する処理時間を超過しそうな場合
  • 一度に大量のデータ件数を処理する場合
キューの種類

キューの種類には、以下の 2種類があります。

処理数が優先なら標準キュー、順序が重要なら FIFO キューといった使い方になります。

  • 標準キュー(Stanadrdキュー)

ほぼ無制限のトランザクション数(TPS)を処理します。

ただし、メッセージを受け取った時とは異なる順序で配信されることもあります。また、複数の同じメッセージのコピーが配信されることもあります。

  • FIFO キュー

バッチ処理なしで毎秒最大 300 件、バッチ処理ありで最大3,000件のトランザクション (TPS)をサポートします。また、メッセージが送信または受信された順序が厳密に保持されます (先入れ先出し)。

トランザクション処理は、標準キューより下がります。

SQS 向けの機能
  • 可視性タイムアウト

設定した期間、重複したメッセージ配信が行われないようにする機能

メッセージは、受信しただけでは削除されず、クライアント側からの明示的な削除指示を受けた際に削除されます。そのため、メッセージの受信中に、たのクライアントが取得してしまう可能性もあります。それを防ぐ機能となります。

デフォルトは30秒で、最大12時間まで設定できます。

  • ショートポーリングとロングポーリング

キューからのメッセージ取得の際で、対象のキューがない場合、キューに新規登録されるのを一定時間待つ機能。

待機する(メッセージがある場合にレスポンスを返す)のをロングポーリング、待機しない(リクエストを受け取ると、メッセージがあるなしに関わらず、即レスポンスを返す)のをショートポーリングと呼びます。

デフォルトはショートポーリングになります。

  • デットレターキュー

正常に処理できないデータを別のキュー(デッドレターキュー)に格納する機能

問題のあるメッセージ(処理失敗を1ー1,000回で設定)を分離して、処理が成功しない理由を調べることができるため、デッドレターキューは、アプリケーションやメッセージングシステムのデバッグに役立ちます。

  • 遅延キュー

キューに送られたメッセージを、一定時間見えなくする機能

  • メッセージタイマー

個々のメッセージを一定間隔見えなくする機能

メッセージサイズ

キューに格納できるメッセージサイズの最大は256KBとなります。

大きなサイズのデータを扱う際には、S3やDunamoDBに一旦格納し、そこへのパスやキーといったポインターとなる情報を渡すことで対応できます。

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

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

AWSに関連する記事:

関連する記事:

最近の記事:

カテゴリー
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件)