ようへいの日々精進XP

よかろうもん

2018 年 09 月 04 日 (火)

ジョギング

  • 香椎浜 x 2 周
  • 右腰, 臀部周りに強い張り

日課

  • (腕立て x 50) x 3
  • 腹筋はまだ腰が痛くなりそうなので止めてる

今日の AWS ~ 色々メモ ~

SNS

通知サービス

  • マルチプロトコルに対応したフルマネージド通知サービス

コスト

  • 無料枠
    • モバイルプッシュ通知: 100 万件
    • Email/Email-JSON: 1,000 件
    • HTTP/HTTPS: 100,000 件
    • SQS: 無料
  • リクエスト単価 (64KB チャンク毎に 1 リクエストとして課金)
    • モバイルプッシュ通知: 100 万件あたり 0.5 USD
    • Email/Email-JSON: 100,000 件あたり 2 USD
    • HTTP/HTTPS: 1,000,000 件あたり 0.6 USD
    • SQS: 無料

はじめ方

  1. Topic 作成
  2. Topic を Subscribe
  3. Topic に向けてメッセージを Publish

Elastic Beanstalk

デプロイ方式まとめ

aws-black-belt-online-seminar-2017-aws-elastic-beanstalk-49-638.jpg?cb=1484129991

デプロイポリシー

  • All at once
  • Rolling
  • Rolling with additional batch
  • Immutable

環境の切り替え

  • URL Swap
  • Route 53

VPC

DHCP オプションセット

  • オンプレミスの DNS サーバーを参照させたい時等にオプションセットを追加する
  • デフォルトでは AWS が提供している DNS サーバーがセットされている

フムフム.

2018 年 09 月 03 日 (月)

ジョギング

  • 香椎浜 x 2 周
  • かなりシューズがすり減ってきたので変え時かなー
  • 引き続き, 右足が全体的にアレ
  • 熱中症気味

日課

  • (腕立て x 50) x 3
  • 腹筋はまだ腰が痛くなりそうなので止めてる

今日の AWS ~ 色々メモ ~

DynamoDB

可用性

  • DynamoDB では, 同じ AWS リージョン内の 3 つの施設間でデータが同期的にレプリケートされる為, 可用性とデータ耐久性も高まる

整合性モデル

  • 結果的に整合性のある読み込み (デフォルト)
    • 結果整合性のあるオプションを選択すると, 読み込みスループットが最大限に向上する
    • 場合によっては, 最新の書き込み結果が反映されない可能性がる
  • 強い整合性の読み込み
    • GetItem, Query, Scan においてオプションとして指定可能
    • キャパシティユニットを 2 倍消費する
    • Read リクエストを受け取る前までの Write が全て反映されたレスポンスを保証

料金体系

  • プロビジョンドスループット
  • ストレージ利用量
    • 無料枠 (25GB)
    • 0.25$/GB
  • キャパシティユニット
    • 書き込み
      • 1 ユニット: 最大 1KB のデータを 1 秒に 1 回書き込み可能
    • 読み込み
      • 1 ユニット: 最大 4KB のデータを 1 秒に 1 回書き込み可能 (強い一貫性を持たない読み込みであれば, 1 秒辺り 2 回)

テーブル設計

  • プライマリキー
    • Partation key
    • Partation Key と Sort Key

Scaling

  • スループット
  • サイズ
    • 1 つのアイテムの合計サイズは 400KB
    • local secondary index は異なるハッシュキー毎に最大 10GB のデータを格納

Local Secondary Index

  • Sort Key 以外に絞り込み検索を行う Key を持つことが出来る
  • Partition Key が同一で, 他のアイテムからの検索の為に利用

Global Secondary Index

  • Partition Key 属性の代わりとなる
  • Partition Key をまたいで検索を行うインデックス

高度なテーブル操作

  • 強い一貫性を持った Read オペレーション
    • GetItem, Query, Scan には Consistent Read オプションを指定可能
    • Read Capacity Unit を 2 倍消費する
  • Conditionl Write
    • 条件付き書き込み, 更新
  • Filter 式による結果の絞り込み
    • Query と Scan で利用可能
  • UpdateItem における Attribute への操作
  • Atomic Counter

Beanstalk 構成, 対応プラットフォーム等

SQS

識別子

  • Queue URL
  • Message ID
  • Receipt Handle
    • メッセージ削除, Visibility の変更に必要
    • メッセージ受信毎に受信する
    • 同一メッセージでも受信毎に異なる

コスト

  • 100 万キューイングリクエストまでは無料
  • SQS リクエスト 100 万件につき 0.476 USD/GB
  • データ転送
    • 送信にコスト発生
    • 同一リージョン内の SQS と EC2 インスタンスのデータ転送は無料

効率化

  • Visibility Timeout (Default: 30 秒, 最大 12 時間)
    • 複数の受信者がある場合, 受信者 1 が受信後, 他の受信者が受信出来ない (見せない) 状態にする (in Flight)
  • スポットインスタンスを使おう
  • メッセージの送受信は最大 10 件
    • SQS へのリクエストが少なければ少ない程コスト効率が良い
    • 送信: send-message-batch, 受信: receive-message の --max-number-of-messages オプションを利用する (デフォルト 1, 最大 10)
  • Long Polling
    • Recieve Message Wait Time
    • メッセージが取得出来るまで 待つ時間を設定出来る (0 秒から 20 秒)

上限

  • メッセージの保持期間
    • デフォルトでは 4 日間保持
    • 60 秒から 14 日間で変更可能
  • In Flight されたメッセージ
    • 1 キュー毎に 120,000 In Flight メッセージ
    • 超過すると OverLimit エラー
  • メッセージの最大サイズ
    • 64KB から 256KB に拡張された (2013/06)

その他の機能

  • Delay Queue
    • キューに送られた新しいメッセージを一定期間見えなくする
    • 0 〜 900 秒
    • 全てのメッセージに適用される
  • Message Timer
    • 個々のメッセージに対して, 送信されてから見えるようになるまでの時間を設定
    • 0 〜 900 秒
    • Delay Queue の遅延時間設定を上書きする
  • Dead Letter Queue
    • Worker 側の不具合等でキュー内に削除されず残ってしまったメッセージについて, 指定回数受信したら Dead Letter Queue に移動する

フムフム.

2018 年 09 月 02 日 (日)

ジョギング

  • 香椎浜 x 2 周
  • なんか走っていて両足のバランスが悪い感じがしている
  • 特に右足の張りが強い感じが続いている

日課

  • お休み

真吾さん

が福岡に立ち寄るとのことで, 博多で一緒にランチ. そしてごちそうになった. 沖縄での仕事の話やら色々と面白い話を聞けて楽しかった. 次回は糸島につれていくと約束したので遵守するぞ.

家具選び

新居の家具やらを天神の家具タワー (仮称) で色々と物色する. なかなか条件に合うような家具には出会えない.

今日の AWS ~ 色々メモ ~

Auto Scaling クールダウン

トリガー関連の規模の拡大や縮小が以後のスケーリングイベントに影響を及ぼすことができる期限であり, 規模の拡大や縮小の終了から経過した時間 (秒) です

ドキュメントより. ↑ なんのこっちゃ全くわからん.

簡単に言うと, 新しいインスタンスが追加されるまでの時間.ドキュメントよりも 【AWS】Auto Scalingまとめ この資料の方が超わかりやすい.

クールダウンが無い場合...

  • AutoScaling グループ内の EC2 の CPU 負荷をトリガーとしている場合, 追加のインスタンスの起動に時間を要してしまうと, 次々にインスタンス爆誕してしまう

クールダウンがある場合...

  • 指定された期間 (クールダウン期間) は EC2 の追加は行われない

Auto Scaling のトリガーに CloudWatch のカスタムメトリクスは利用出来るか

  • 出来る
  • ELB のレスポンスタイムとかで EC2 の台数を増やすことが出来る

CloudWatch のカスタムメトリクスで取得する必要がある監視対象

CLoudWatch で取得出来る EC2 の各種メトリクス

  • CPUUtilization
  • DiskReadOps, Bytes (全てのインスタンスストアボリュームでの, 完了した読み取り操作の回数, バイト)
  • DiskWriteOps, Bytes (全てのインスタンスストアボリュームへの, 完了した書き込み操作の回数, バイト)
  • NetworkIn
  • NetworkOut
  • NetworkPacketsIn
  • NetworkPacketsOut

ごっちゃになっていたのは, DiskReadOps とかのディスク系のメトリクス. てっきり, EBS のメトリクスも含まれると思っていた. EBS は EBS で別のメトリクスがある. インスタンスストアボリュームが無いインスタンスにおいては, これらのメトリクスは 0 又は出力されない.

Route53 を使った, リージョンを越えたサービスの展開

  • ELB はリージョンをまたげない
  • このような場合には Route53 のレイテンシーベースルーティング + (各リージョンに配置した ELB + EC2) で対応するのが正解かなー
  • Route53 その他のレコード設定
    • 加重ラウンドロビン (各レコードに重み付け, あるレコードに対するクエリに指定された比率で異なる値を応答する)
    • レイテンシーベースルーティング (クライアントとのレイテンシが小さいレコードが返される)
    • 位置情報ルーティング (クライアントの IP アドレス)
    • ヘルスチェックとフェイルオーバー

インターネット VPN と DirectConnect

aws-black-belt-tech-aws-direct-connect-11-638.jpg?cb=1504585130

aws-black-belt-tech-aws-direct-connect-12-638.jpg?cb=1504585130

インターネット VPN において, SPOF の排除

DynamoDB キャパシティユニット

  • 書き込み
    • 1 ユニット: 最大 1 KBのデータを 1 秒に 1 回書き込み可能
  • 読み込み
    • 1 ユニット: 最大 4 KBのデータを 1 秒に 1 回読み込み可能 (強い一貫性を持たない読み込みであれば, 1 秒辺り 2 回)

CloudFormation テンプレート

  • Format Version
  • Description
  • Metadata
  • Parameters
  • Mappings
  • Conditions
  • Transform
  • Resources
  • Outputs

Simple Workflow Service

以下, SWF の用語.

  • ワークフロースターター
  • ワークフローエグゼキューション
  • ドメイン
  • タスクリスト
  • デザイダー
  • アクティビティ

細かいことは追えていない...

S3 オブジェクトの暗号化オプション

  • サーバー (Amazon S3) 側とクライアント側で暗号化を行うことが出来る
  • サーバー側 (S3 に保管する際に暗号化する)
    • S3 で管理されたキーによる暗号化 (SSE-S3)
    • KMS で管理されたキーによる暗号化 (SSE-KMS)
    • ユーザが用意したキーによる暗号化 (SSE-C)
  • クライアント側で S3 に書き込む前に暗号化する

フムフム.

2018 年 09 月 01 日 (土)

ジョギング

  • お休み

日課

  • お休み

AWS Certified SysOps Administrator - Associate と AWS Certified Developer - Associate

ダブルヘッダーはキツかったけど, なんとか 2 つとも合格出来た. やっとスタートラインに立てた感.

インターネット回線

次の家で利用するインターネット回線を契約してきた.

博多で大人の寄り道

ほろ酔い横丁で一杯. たまたま隣に座ったおっちゃん (モリタさん) と意気投合して色々と話しをさせて頂きつつ呑んだ.

今日の AWS ~ Trusted Advisor についてざっくりメモ ~

Trusted Adivisor とは

  • 環境を最適化するベストプラクティスを提供する
  • ベストプラクティスは以下のようなカテゴリに分類される
    • コスト最適化
    • パフォーマンス
    • セキュリティ
    • フォールトトレランス
    • サービス制限

参考資料は 20180711 AWS Black Belt Online Seminar AWS Trusted Advisor を利用.

コスト最適化

使われていないリソースを検出する, 利用状況を分析してコスト削減が期待出来る割引プランをおすすめする. 例えば, 以下のような感じ.

パフォーマンス

パフォーマンス低下につながる使い方をしているかどうかをチェックする. もっと効率の良い AWS の機能を使う余地がある場合にお知らせ.

  • EC2 EBS のスループット最適化
  • EC2 インスタンスセキュリティグループルールの増大
    • 1 つの EC2 インスタンスに 50 以上のセキュリティグループルールが紐付いている場合に警告 (黄) を表示
  • 使用率の高い EC2 インスタンス
    • 以下の条件を満たすインスタンスが 14 日間稼働している場合に警告 (黄) を表示
      • 1 日の CPU 使用率が 90% 以上が 4 日以上ある
  • 利用率が高すぎる EBS マグネティックボリューム

セキュリティ

セキュリティリスクのある設定になっていないかどうかをチェックする. 現在よりもセキュリティが高められる推奨構成があれば, それをおすすめする.

  • セキュリティグループ
    • 0.0.0.0/0 を検出
    • 25, 80, 443, 465 は除外
    • FTP 等がオープンになっているとエラー (赤), SSH 等は警告 (黄)
  • CloudTrail ロギング
  • EBS パブリックスナップショット
  • IAM アクセスキーローテーション
    • 一定期間毎にキーをローテーションするように推奨されている
    • 90 日以上ローテーションされていない場合には警告 (黄)
    • 2 年以上ローテーションされていない場合にはエラー (赤)
  • ルートアカウントの MFA
  • 公開されたアクセスキー
    • うっかり公開されてしまったアクセスキーの有無をチェック
    • 公開していたら警告 (黄)
    • 漏洩が疑われる場合にはエラー (赤)

フォールトトレランス

バックアップをちゃんとやっているか, AWS の機能を利用して冗長構成が取れているか等をチェックする.

  • Load Balancer の最適化
    • 単一 AZ でしかロードバランサが有効化されていない
    • ロードバランサが有効化されている AZ でインスタンスが起動していない
    • AZ 間でインスタンス数が均等になっていない
    • CLB のみ対応
  • RDS の Multi-AZ
    • 可用性を高める為に Multi-AZ になっているか
  • Route53 フェイルオーバーのリソースレコードセット
  • Directo Connect 接続の冗長性
  • EBS のスナップショット

サービス制限

AWS の各サービスにおいて, アカウント毎に利用可能なリソースに制限をかけている.

  • ほとんどの制限はリージョン毎に独立している
  • AWS 全体の可用性を担保する為
  • 新規顧客の意図しない課金を防ぐ為

サービス制限の一部 (39 項目) に対して, 現在の利用値と制限の差分をチェックする.

  • 制限の 80% になったら警告 (黄)
  • 制限の 100% になったらエラー (赤)

Trusted Adovisor 使ったことないなあ.

フムフム.

2018 年 08 月 31 日 (金)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 右足の股関節から太腿に強い張り
  • 一応, ストレッチ等で凌いでいて, なんとか走れているので様子を見る

日課

  • お休み

体調

  • 終日, 背中に強い張りがあって体調が良くなかった...
  • 明日は AWS の認定試験のダブルヘッダーなのに大丈夫かなと思ったり (言い訳)

Apple Wireless Keyboard が...

次のキーボードはどうしようか.

野菜の値段

ダイレックスでトマトがめっちゃ高かった. 他のお店もきっとそうなんだろうけど, 最近は野菜の値段が高止まりしている感がある.

今日の AWS ~ リザーブインスタンスについてざっくりメモ ~

RI はあくまでも権利の購入

EC2 リザーブインスタンスの条件

09121110-aws-black-belt-online-seminar-2017-aws-36-638.jpg?cb=1524214078

  • プラットフォーム (OS, ディストリビューションの指定)
  • スコープ (リージョン, AZ 単位)
    • リージョン指定 = 割引のみ, キャパシティの予約は無い
    • AZ 単位での指定 = 割引と指定した AZ のキャパシティ予約
    • リージョン指定の方がメリットがありそう
  • テナンシー (デフォルト, ハードウェア専有)
  • 提供クラス (RI の権利条件を柔軟に変更出来るかどうか)
    • スタンダード (基本的には出来ない)
    • コンバーティブル (柔軟な権利の変更が可能)
  • インスタンスタイプ
  • 期間
  • 支払い方法

RDS リザーブインスタンスの条件

以下の選択の可能.

  • DB エンジン
  • マルチ AZ 配置 (対応している DB エンジンのみ)

RedShift リザーブインスタンスの条件

以下の選択が可能.

  • ノードタイプ
  • 期間
  • 支払い方法

ElastiCache リザーブインスタンスの条件

以下の選択が可能.

  • Redis or memcached
  • 期間
  • 支払い方法は重度利用

フムフム.

2018 年 08 月 30 日 (木)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 右足の股関節から太腿に強い張り, 股関節にも違和感

日課

  • お休み

JAWS-UG 福岡もくもく会

毎度, オルターブースさんに場所を提供頂いてもくもく会. いつもありがとうございます. 参加者はコアメンバーを含めて 6 名. 多すぎず少なすぎず小回りの効くちょうど良い人数なのかなと思ったり. いろんな方の話を聞いて自分の勉強不足を痛感したり, 毎回良い刺激になるもくもく会.

今日は Trusted Advisor に関する資料を読んだりした.

今日の AWS ~ AWS 認定 SysOps アドミニストレーター – アソシエイトレベルサンプル試験を解く (2) ~

公開されているサンプル試験問題を解く. なぜ, その答えになるのかをちゃんと理解する必要がある.

Q7. Route53 による可用性の高い Web サイトの運用

設問

世界中の 5 つのリージョンにおける 10 個の EC2 インスタンス(1 リージョンにつき 2 つのインスタンス)でウェブストアサイトをホスティングしています. 5 つのうち 1 つのリージョンで長時間ネットワーク接続が切断された場合、ダウンタイムを最小限に抑えてサイトの可用性を維持できるようにするには、サイトをどのように設定しますか?

A. Elastic Load Balancing を作成して、EC2 インスタンスの前に配置する各 ELB で適切なヘルスチェックを設定する
B. 各リージョンのインスタンス間で VPN 接続を確立し、リージョン全体で広範囲の接続切断が発生した場合は、BGP のフェイルオーバー機能を利用する
C. 各リージョンの Elastic Load Balancing について Route 53 レイテンシーベースのルーティングレコードセットを設定し、各 ELB で適切なヘルスチェックを設定する
D. Route 53 に Evaluate Target Health フラグを True としたレイテンシーベースのルーティングレコードセットを作成し、それを各リージョンの Elastic Load Balancing に紐づける

解答

  1. Route 53 に Evaluate Target Health フラグを True としたレイテンシーベースのルーティングレコードセットを作成し、それを各リージョンの Elastic Load Balancing に紐づける

メモ

Q8. ELB と Auto Scaling

設問

Elastic Load Balancing(ELB), EC2 上の 3 台のウェブ/アプリケーションサーバープロビジョンド IOPS が 5000 に設定された 1 台の MySQL RDS データベースで構成される, ステートレスウェブアプリケーションを実行しています.ユーザーへの平均応答時間が増加しています.CloudWatch を調べたところ, CPU 使用率はそれぞれ, ウェブ/アプリケーションサーバーで 95%, データベースでは 20% です. データベースディスクの平均操作回数は、2000 ~ 2500 です.

応答時間を向上させることのできる方法は次のうちどれですか? 2 つ選択してください.

A. ウェブ/アプリケーションサーバーに、より適切な CPU/メモリの割合を持つ別の EC2 インスタンスタイプを選択する。
B. Auto Scaling を使用し、CPU 負荷のしきい値に基づいて追加のウェブ/アプリケーションサーバーを追加する。
C. ウェブ/アプリケーション EC2 インスタンスで許可するオープン TCP 接続の数を増やす。
D. Auto Scaling を使用し、メモリ使用率のしきい値に基づいて追加のウェブ/アプリケーションサーバーを追加する。

解答

  1. ウェブ/アプリケーションサーバーに、より適切な CPU/メモリの割合を持つ別の EC2 インスタンスタイプを選択する。
  2. Auto Scaling を使用し、CPU 負荷のしきい値に基づいて追加のウェブ/アプリケーションサーバーを追加する。

メモ

  • ウェブ/アプリケーション・サーバーの CPU 使用率は高すぎだと思う

Q9. S3 のアクセス制限

設問

S3 内のデータへのアクセスを制限するには, どの機能を使えばよいですか? 2 つ選択してください.

A. バケットに CloudFront ディストリビューションを作成する。
B. S3 バケットポリシーを設定する。
C. S3 仮想ホスティングを使用する。
D. S3 ACL をバケットまたはオブジェクトに設定する。
E. IAM Identity Federation を有効にする。

解答

  1. S3 バケットポリシーを設定する。
  2. S3 ACLバケットまたはオブジェクトに設定する。

メモ

以下, S3 のアクセスコントロール方法各種.

  • アクセスコントロールリスト (ACL)
    • バケットとオブジェクトそれぞれについて, 読み取り, 書き込み許可を他の AWS アカウントに与えることが出来る
    • 条件付きアクセス許可, アクセス拒否設定は出来ない
    • 自アカウント内の IAM ユーザー, グループのアクセス権を制限することも出来ない
  • バケットポリシー
    • 自アカウント内の IAM ユーザーやグループ, 他のアカウントのユーザーに対してアクセス許可を与えることが出来る
    • 条件付きアクセス許可やアクセス拒否を設定することも出来る
  • IAM ポリシー
    • S3 へのアクセス許可を設定した IAM ポリシーを自アカウント内の IAM ユーザーやグループ, ロールに割り当てることが出来る
    • 条件付きアクセス許可やアクセス拒否を設定することも出来る
    • 他アカウントを指定したアクセス権は設定出来ない

その他, アクセス期間を限定した署名 (期限) 付き URLも設定可能.

Q10. バックアップ, アーカイブ戦略

設問

AWS を使って, 会社のバックアップおよびアーカイブ戦略を確立する必要があります. コンプライアンス上の理由から, 書類は 3 か月間は即座のアクセスが可能な状態にし, 5 か月間は利用可能な状態にしておく必要があります. こうした要件を最もコスト効率の高い方法で達成する AWS サービスはどれですか?

A. StorageGateway を使用して S3 にデータを保存し、ライフサイクルポリシーを使用して Redshift にデータを移行し、長期間アーカイブする
B. DirectConnect を使用して S3 にデータをアップロードし、IAM ポリシーを使用して Glacier にデータを移行し、長期間アーカイブする
C. EBS でデータをアップロードし、ライフサイクルポリシーを使用して EBS スナップショットを S3 に移行し、後にGlacier に移行して長期間アーカイブする
D. S3 にデータをアップロードし、ライフサイクルポリシーを使用して Glacier にデータを移行し、長期間アーカイブする

解答

  1. S3 にデータをアップロードし、ライフサイクルポリシーを使用して Glacier にデータを移行し、長期間アーカイブする

メモ

フムフム.

2018 年 08 月 29 日 (水)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 右足の股関節から太腿に強い張り, ほんとに強い張り, 股関節にも違和感

日課

  • お休み

Fukuoka.rb

nagachika さんの LT で始まった. nagachika さんは, 8 年前から Ruby の trunk を追っかけるブロクを書かれているとのこと.

PB memo

このブログを読むと Ruby は日々進化していることを感じることが出来る. 素晴らしい. また, 何かを毎日続けることについて,

とおっしゃっていて, うんうん, まじそうだよなと共感しかなかった.

ということで, 自分は今回, JRuby で awspec を出来るだけ早く動かす方法を検討した.

ソケットってなんですか?という若者の質問に対して...

ほんと, ごめんなさい.

今日の AWS ~ AWS 認定 SysOps アドミニストレーター – アソシエイトレベルサンプル試験を解く (2) ~

公開されているサンプル試験問題を解く. なぜ, その答えになるのかをちゃんと理解する必要がある.

Q4. IAM ポリシー

設問

次の IAM ポリシーについて質問に答えてください.

{
  "Version":"2012‐10‐17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*", "s3:List*"
        ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action":"s3:PutObject",
      "Resource": "arn:aws:s3:::corporate_bucket/*"
    }
  ]
}

この IAM ポリシーでは何が許可されますか?(3 つの回答を選択してください)

A. アカウントが所有するすべての S3 バケットからオブジェクトを読み取ることができる。
B. 'corporate_bucket' というバケットにオブジェクトを書き込むことができる。
C. 'corporate_bucket' というバケットのアクセス権を変更できる。
D. 'corporate_bucket' というバケットのオブジェクトを読み取ることができるが、バケットのオブジェクトをリストすることはできない。
E. 'corporate_bucket' というバケットからオブジェクトを読み取ることができる。

解答

  1. アカウントが所有するすべての S3 バケットからオブジェクトを読み取ることができる。
  2. 'corporate_bucket' というバケットにオブジェクトを書き込むことができる。
  3. 'corporate_bucket' というバケットからオブジェクトを読み取ることができる。

メモ

    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*", "s3:List*"
        ],
      "Resource": "*"
    },

こやつで, アカウントが所有する全ての S3 バケットのオブジェクト読み取りを許可している.

    {
      "Effect": "Allow",
      "Action":"s3:PutObject",
      "Resource": "arn:aws:s3:::corporate_bucket/*"
    }

こやつで, corporate_bucket への書き込みを許可している.

Q5. ストレージ

設問

ブロックサイズが 4KB のデータを秒間 100,000 回 以上のランダムに読み取る必要がある NoSQL データベースに適切なストレージソリューションを選定する作業を任されました. この要件を満たす EC2 オプションはどれですか?

A. EBS プロビジョンド IOPS  
B. SSD インスタンスストア  
C. EBS 最適化インスタンス
D. RAID 1+0 で設定されたハイストレージインスタンス

解答

  1. SSD インスタンスストア

メモ

Q6. VPC サブネット間の疎通

設問

インスタンス A とインスタンス B は、VPC の 2 つの異なるサブネット A と B において実行されています。 インスタンス A からインスタンス B に ping を行っても応答がありません. この原因として考えられる 2 つの理由は何ですか? 2 つ選択してください.

A. サブネット A のルーティングテーブルに、サブネット B へのターゲットルートがない
B. インスタンス B にアタッチされたセキュリティグループは、インバウンド ICMP トラフィックを許可しない
C. インスタンス A の IAM ロールにリンクされたポリシーが正しく設定されていない
D. サブネット B の NACL は、アウトバウンド ICMP トラフィックを許可しない

解答

  1. インスタンス B にアタッチされたセキュリティグループは、インバウンド ICMP トラフィックを許可しない
  2. サブネット B の NACL は、アウトバウンド ICMP トラフィックを許可しない

メモ

以下, セキュリティグループと Network ACL の違い.

セキュリティグループ ネットワーク ACL
適用範囲 インスタンスレベルで動作する サブネットレベルで動作する
ルールの定義 許可のみを設定する 許可と拒否を設定する
適用トラフィック ステートフル (返りのトラフィックは自動的に許可) ステートレス (返りのトラフィックは明示的に許可が必要)
評価 トラフィックを許可するかどうかを決める前に,すべてのルールを評価する トラフィックを許可するかどうかを決めるときに, 順番にルールを処理する

http://blog.takuros.net/entry/20131217/1387356888 より引用させて頂いた. 有難うございます.

フムフム.

2018 年 08 月 28 日 (火)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 右足の股関節から太腿に強い張り, ほんとに強い張り

日課

  • (腕立て x 50) x 3

今日の AWS ~ AWS 認定 SysOps アドミニストレーター – アソシエイトレベルサンプル試験を解く (1) ~

公開されているサンプル試験問題を解く. なぜ, その答えになるのかをちゃんと理解する必要がある.

Q1. RDS の運用

設問

Amazon RDS の操作において, AWS が責任を持って実施する管理関連タスクは次のうちどれか? 2 つ選択する.

A. データのインポートとクエリの最適化。
B. データベースソフトウェアのインストールと定期的なパッチの適用。
C. 5 分以内での特定時点への復旧を含む、自動化データベースバックアップの作成と維持。
D. 規定の長期保存要件に準拠した、自動化データベースバックアップの作成と維持。

解答

  1. データベースソフトウェアのインストールと定期的なパッチの適用。
  2. 5 分以内での特定時点への復旧を含む、自動化データベースバックアップの作成と維持。

メモ

Q2. EC2 インスタンスのパフォーマンス問題

設問

デベロッパーに開発およびテストプラットフォームを提供するアプリケーションを AWS で管理している.現在, どちらの環境も m1.small EC2 インスタンスで構成されている. デベロッパーが, テスト環境でのネットワーク負荷の増加に伴ってパフォーマンスが低下していることに気付いた. テスト環境におけるこうしたパフォーマンス問題をどのように軽減するか?

A. m1.small をより大規模なインスタンスタイプにアップグレードする。
B. テストインスタンスに追加の ENI を追加する。
C. EBS 最適化オプションを使用して、EBS トラフィックの負荷を軽減する。
D. ネットワーク使用率が 80% を超えた場合は、追加のネットワーク帯域幅をプロビジョニングするよう、 Amazon CloudWatch を設定する。

解答

  1. m1.small をより大規模なインスタンスタイプにアップグレードする。

メモ

Q3. 侵入テストについて

設問

AWS 適正利用規約では, EC2 インスタンスの侵入テストについてどのように定められていますか?

A. お客様がご自分のインスタンスに対して実施できるが、EC2 インスタンスから行う場合に限る。
B. AWS が実施でき、定期的に行っている。
C. AWS が実施でき、お客様からのリクエストに応じて行う。
D. いかなる状況においても明示的に禁止されている。
E. お客様がご自分のインスタンスに対して実施できるが、AWS からの事前許可が必要である。

解答

  1. お客様がご自分のインスタンスに対して実施できるが、AWS からの事前許可が必要である。

メモ

フムフム.

2018 年 08 月 27 日 (月)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 右足の股関節から太腿に強い張り

日課

  • (腕立て x 50) x 3

寝ても疲れが...

コマーシャルで「寝ても疲れが...」って言っていて, 「そんなことあるかーい」って思っていたけど, 実際に今はそんな感じ.

やばいな.

2018 年 08 月 26 日 (日)

ジョギング

  • 香椎浜 x 2 周
  • 右足の股関節から太腿に強い張り
  • 引き続き, 暑さが堪える...

日課

  • (腕立て x 50) x 3

九州新喜劇

blogs.yahoo.co.jp

九州新喜劇を観てきた. テレビで見るのと違ってすごい熱が伝わってきて本当に心から笑えた. 奥さんも元気よく笑っていて, 芸人さん達に本当に感謝.

今日の AWS ~ AWS 認定デベロッパー – アソシエイトレベルサンプル試験を解く (6) ~

公開されているサンプル試験問題を解く. なぜ, その答えになるのかをちゃんと理解する必要がある. 尚, 今回は英語版のサンプル問題である為, 翻訳には Google 翻訳を利用している.

Q7. DynamoDB において, 別プロセスからの書き込みを保護する方法

設問

Your web application reads an item from your DynamoDB table, changes an attribute, and then writes the item back to the table. You need to ensure that one process doesn't overwrite a simultaneous change from another process.

Webアプリケーションは, DynamoDBテーブルから項目を読み取り, 属性を変更して, その項目をテーブルに書き戻. あるプロセスが別のプロセスからの同時変更を上書きしないようにする必要がある

How can you ensure concurrency?

A) Implement optimistic concurrency by using a conditional write.
B) Implement pessimistic concurrency by using a conditional write.
C) Implement optimistic concurrency by locking the item upon read.
D) Implement pessimistic concurrency by locking the item upon read.

どのようにして並行性を保つか.

A) 条件付き書込みを使用して楽観的な同時実行を実装する
B) 条件付き書込みを使用して悲観的な同時実行を実装する
C) 読み込み時に項目をロックすることにより, 楽観的同時実行を実装する
D) 読み取り時に項目をロックすることにより, 悲観的な並行性を実装する

解答

A) Implement optimistic concurrency by using a conditional write. (条件付き書込みを使用して楽観的な同時実行を実装する)

メモ

解答より引用.

Optimistic concurrency depends on checking a value upon save to ensure that it has not changed. Pessimistic concurrency prevents a value from changing by locking the item or row in the database. DynamoDB does not support item locking, and conditional writes are perfect for implementing optimistic concurrency.

  • 楽観的な並行性は, 保存時に値をチェックして変更されていないことを確認することに依存する
  • 悲観的な並行処理は, データベース内の項目または行をロックすることによって値が変更されることを防ぐ
  • DynamoDB はアイテムロックをサポートしておらず, 条件付き書き込みは楽観的同時実行の実装には最適である

楽観的ロックと悲観的ロックの違いについて.

  • https://qiita.com/NagaokaKenichi/items/73040df85b7bd4e9ecfc より引用させて頂いた
  • 楽観的ロック (楽観的排他制御)
    • データそのものはロックせず, 更新対象のデータがデータ取得時と同じ状態であることを確認してから更新することでデータの整合性を保証する方式
  • 悲観的ロック (悲観的排他制御)
    • 更新対象のデータを取得する際にロックをかけることで, 他のトランザクションから更新されないようにする方式
    • DynamoDB はアイテムロックをサポートしていない = 悲観的ロックは出来ない (ということで良いのかな??)

DynamoDB の条件付き書き込みについて.

Q8. SQS や SNS を利用したアプリケーションの実装

設問

Your application triggers events that must be delivered to all your partners. The exact partner list is constantly changing: some partners run a highly available endpoint, and other partners’ endpoints are online only a few hours each night. Your application is mission-critical, and communication with your partners must not introduce delay in its operation. A delay in delivering the event to one partner cannot delay delivery to other partners.

  • アプリケーションは, すべてのパートナーに配信する必要があるイベントをトリガーする
  • 正確なパートナーリストは絶えず変化している
  • 一部のパートナーは可用性の高いエンドポイントを実行し, 他のパートナーのエンドポイントは毎晩わずか数時間オンラインである
  • あなたのアプリケーションはミッションクリティカルであり, パートナーとのコミュニケーションが操作を遅らせてはならない
  • あるパートナーにイベントを配信するのが遅れても, 他のパートナーへの配信が遅れることはない

What is an appropriate way to code this?

A) Implement an Amazon SWF task to deliver the message to each partner. Initiate an Amazon SWF workflow execution.
B) Send the event as an Amazon SNS message. Instruct your partners to create an HTTP. Subscribe their HTTP endpoint to the Amazon SNS topic.
C) Create one SQS queue per partner. Iterate through the queues and write the event to each one. Partners retrieve messages from their queue.
D) Send the event as an Amazon SNS message. Create one SQS queue per partner that subscribes to the Amazon SNS topic. Partners retrieve messages from their queue.

これをコード化する適切な方法はどれか?

A) 各パートナーにメッセージを配信する Amazon SWF タスクを実装して, Amazon SWF ワークフローの実行を開始する
B) イベントを Amazon SNS メッセージとして送信する. パートナーに HTTP を作成するように指示する. HTTP エンドポイントを Amazon SNS トピックに登録する
C) パートナーごとに 1 つの SQS キューを作成する. キューを繰り返し, 各イベントにイベントを書き込む. パートナーはキューからメッセージを取得する
D) イベントを Amazon SNS メッセージとして送信する. Amazon SNS トピックにサブスクライブするパートナーごとに 1 つの SQS キューを作成する. パートナーはキューからメッセージを取得する

解答

D) Send the event as an Amazon SNS message. Create one SQS queue per partner that subscribes to the Amazon SNS topic. Partners retrieve messages from their queue. (イベントを Amazon SNS メッセージとして送信する. Amazon SNS トピックにサブスクライブするパートナーごとに 1 つの SQS キューを作成する. パートナーはキューからメッセージを取得する)

メモ

解説より引用.

There are two challenges here: the command must be “fanned out” to a variable pool of partners, and your app must be decoupled from the partners because they are not highly available. Sending the command as an SNS message achieves the fan-out via its publication/subscribe model, and using an SQS queue for each partner decouples your app from the partners. Writing the message to each queue directly would cause more latency for your app and would require your app to monitor which partners were active. It would be difficult to write an Amazon SWF workflow for a rapidly changing set of partners.

  • パートナーのさまざまなパートナーにコマンドを fanned out する必要がある
  • アプリケーションは高可用性ではない為, パートナーから切り離さなければならない
  • コマンドを SNS メッセージとして送信すると, そのパブリケーション/サブスクライブモデルによって fanned out が達成される
  • パートナーごとに SQS キューを使用することで, パートナーからアプリが切り離される
  • 仮に, 各キューにメッセージを直接書き込とアプリケーションは, どのパートナーがアクティブであるかをアプリケーションに監視させる必要がある
  • 急速に変化するパートナーのために Amazon SWF ワークフローを作成するのは難しい

Q9. CloudFormation のスタック数が上限に達したけど...どうする?

設問

You have reached your account limit for the number of CloudFormation stacks in a region

リージョンのCloudFormationスタック数のアカウント制限に達した.

How do you increase your limit?

A) Use the AWS Command Line Interface.
B) Send an email to limits@amazon.com with the subject “CloudFormation.”
C) Use the Support Center in the AWS Management Console.
D) All service limits are fixed and cannot be increased.

どのようにして制限を増加させるか.

A) AWS コマンドラインインターフェイスを使用 する
B) limits@amazon.com に件名「CloudFormation」で電子メールを送信する
C) AWS 管理コンソールでサポートセンターを使用する 
D) すべてのサービス制限は固定されており, 増額することはできない

解答

C) Use the Support Center in the AWS Management Console. (AWS 管理コンソールでサポートセンターを使用する)

メモ

解説より引用.

The Support Center in the AWS Management Console allows customers to request limit increases by creating a case.

AWS Management Console のサポートセンターでは, ケースを作成することによって制限の増加をリクエストすることが出来る.

CloudFormation の各種制限.

Q10. アプリケーション層とデータベース層で疎通が取れないのはなんでや?

設問

You have a three-tier web application (web, app, and data) in a single Amazon VPC. The web and app tiers each span two Availability Zones, are in separate subnets, and sit behind ELB Classic Load Balancers. The data tier is a Multi-AZ Amazon RDS MySQL database instance in database subnets. When you call the database tier from your app tier instances, you receive a timeout error.

  • 1 つの Amazon VPC に 3 層の Web アプリケーション (Web 層, アプリケーション層, データ層) がある
  • Web 層とアプリケーション層はそれぞれ 2 つの Availability Zone にまたがり, 別々のサブネットにあり, ELB Classic Load Balancerの背後に位置する
  • データ層は, データベースサブネット内の複数 AZ Amazon RDS MySQL データベースインスタンス
  • アプリケーション層インスタンスからデータベース層を呼び出すと, タイムアウトエラーが発生する

What could be causing this?

A) The IAM role associated with the app tier instances does not have rights to the MySQL database.
B) The security group for the Amazon RDS instance does not allow traffic on port 3306 from the app instances.
C) The Amazon RDS database instance does not have a public IP address.
D) There is no route defined between the app tier and the database tier in the Amazon VPC.

これを引き起こす原因は何か?

A) アプリケーション層インスタンスに関連付けられた IAM ロールには, MySQL データベースに対する権限がない
B) Amazon RDS インスタンスのセキュリティグループは, アプリケーションインスタンスからのポート 3306 のトラフィックを許可していない
C) Amazon RDS データベースインスタンスにパブリック IP アドレスがない
D) Amazon VPC のアプリケーション層とデータベース層の間に定義された経路がない

解答

B) The security group for the Amazon RDS instance does not allow traffic on port 3306 from the app instances. (Amazon RDS インスタンスのセキュリティグループは, アプリケーションインスタンスからのポート 3306 のトラフィックを許可していない)

メモ

解説より引用.

Security groups block all network traffic by default, so if a group is not correctly configured, it can lead to a timeout error. MySQL security, not IAM, controls MySQL security. All subnets in an Amazon VPC have routes to all other subnets. Internal traffic within an Amazon VPC does not require public IP addresses.

  • セキュリティグループは全てのトラフィックを既定でブロックする為, 正しく構成されていないと, タイムアウトエラーが発生する可能性がある
  • IAM ではなく MySQL のセキュリティが MySQL のセキュリティを制御する
  • Amazon VPC の全てのサブネットには, 他のすべてのサブネットへのルートがある
  • Amazon VPC 内の内部トラフィックにはパブリック IP アドレスは不要

フムフム.