Yuutsuna’s blog

日々の勉強のアウトプット

AWS DVA AWS開発 参考書読み7日目

今日やったこと

DynamoDBについてを読んだ

Amazon DynamoDB

優れたスケーラビリティ・拡張性を持つNoSQLデータベースを提供するサービス

エンドポイントを通じて、いずれかのアベイラビリティゾーンにあるノードにアクセスする

単一障害点がないことが特徴で、どこのノードからもアクセス可能

複数ノード間で整合性と取るために以下オプションを指定可能

DynamoDBの結果整合性のオプション

  • 読み込み
    • 結果生合成のある読み込み
      • 2/3の読み込みで結果が一致した場合正常応答
    • 強い読み込み整合性
      • 全てのReadRepairが完了している状態で結果を応答
    • トランザクション読み込み
      • 直列化可能分離レベルでデータを読み取るオプション
  • 書き込み
    • 結果整合性のある書き込み
      • 2/3以上の書き込みが成功した場合正常応答
    • トランザクション書き込み
      • 全ての書き込みが成功した場合正常応答

キャパシティユニット

DynamoDBの課金体系に2つのオプションがある

  • オンデマンドキャパシティモード
    • リクエストに応じて請求が発生する
  • プロビジョンドモード
    • 事前に必要と予想される読み込み・書き込みできるキャパシティユニットを指定する

キャパシティユニットの定義

読み込みキャパシティユニット

Read Capacity Unit: RCUs

  • 1秒あたりの読み込み項目数×項目のサイズ
    • 4KBまでを1ブロックとして計算
    • 例)3KBを読み込むリクエストが毎秒1000回→1000RCUs
  • 結果整合性がある読み込みの場合はスループットが2倍
  • トランザクション読み込みの場合はスループットが半分

書き込みキャパシティユニット

Write Capacity Unit: WCUs

  • 1秒あたりの書き込み項目数×項目のサイズ
    • 1KBまでを1ブロックとして計算
    • 例)3KBを書き込むリクエストが毎秒10回→30WCUs
  • トランザクション書き込みの場合はスループットが半分

TimeToLive(TTL)

項目に対して、有効期限(TTL)を設定可能

使用すると、指定された日時に、スループットを消費することなく、削除できる

DAX(DynamoDB Accelarator)

VPC内でキャッシュクラスタを構築し、DynamoDBのデータへ高速にアクセスできるキャッシュサービス

グローバルテーブル

複数のリージョンにまたがる共通のデータベース

通常は、リージョンごとにDBが分かれている

終わりに

結果整合性については、覚えるのもごちゃごちゃしそう

ユースケースと一緒にどういう使い方をするのが理想かと一緒に覚えていきたい。

AWS DVA AWS開発 参考書読み6日目

今日やったこと

API Gatewayの続きを読んだ

API Gatewayの機能

認証・認可

IAMアクセス権限

AWS署名バージョン4を利用した認証と認可を行う

クライアントはAWS署名バージョン4をHTTPリクエストヘッダに設定して、API Gatewayにリクエストを送信する

AWS署名バージョン4

IAMユーザのアクセスキー(アクセスキーIDとシークレットアクセスキー)を元に作成したハッシュ値

Lambdaオーソライザ

名前の通り、Lambda関数を利用した認証と認可を行う

クライアントは、Bearerトークンもしくは、HTTPリクエストヘッダのパラメータに認証情報を付与したリクエストを送信する

Bearerトーク

読み方:ベアラートーク

トークンを所有していることで、認証と認可がされる仕組み

Bearerトークンは、リクエストの送信元を確認しないため、第三者トークンが漏れたら第三者の認証と認可ができてしまうため、注意が必要

Cognitoオーソライザ

名前の通り、Amazon Cognitoを利用した認証と認可を行う

クライアントは、Cognitoのユーザープールで認証を行ってトークン(Json Web Token)を取得し、HTTPリクエストヘッダにセットしてリクエストを送信する

JWTオーソライザ

OpenID ConnectまたはOAuth2.0の一部として、JWTを利用した認証を行う

クライアントは、OpenID ConnectまたはOAuth2.0で認証を行なってトークン(JWT)を取得し、HTTPリクエストヘッダにセットしてリクエストを送信する

相互TLS認証

サーバがクライアントにクライアント証明書を要求して検証を行い、接続元クライアントの正しさを確認することにより、クライアントとサーバの双方向の認証をサポートする

ロットリング

トークバケットアルゴリズムに基づく流量制御の仕組み

トークバケットアルゴリズムでは、1リクエスト処理する度にバケット内に保持していたトークンを1つ消費する

トークンの補充速度を「定常レート」、バケット内に格納するトークンの最大サイズを「バースト」と呼ぶ

APIのキャッシュ

API Gatewayではステージごとにキャッシュを定義し、バックエンドのトラフィックを削減することができる

カナリアリリース

任意のステージに対して、「Canary」という特別なステージを定義できる

API Gatewayへのリクエストを、指定した比率でCanaryステージへ分配することができる

WAF連携

WAFのACLを指定することで、SQLインジェクションクロスサイトスクリプティングなどのセキュリティ攻撃を防ぐことができる

監視連携

CloudWatchやX-Rayとシームレスに連携でき、リクエストの処理パフォーマンス分析やデバッグが可能になる

終わりに

TLSって言葉が出て来るたびにググって「あ〜これだった」となるのでそろそろ覚えたい

API Gateway単体ではなく、他サービスと連携して何ができるかを意識していきたい

AWS DVA AWS開発 参考書読み5日目

今日やったこと

今日は、AWS DVAデベロッパーアソシエイト)の参考書で、API Gatewayについて途中まで読んだ。

Amazon API Gateway

オンラインサービスへのリクエストを受け付ける機能を提供するサービス

以下3種類のAPIを作成可能

REST API

RESTアーキテクチャスタイルに基づき、ステートレス通信を行うAPIを提供

クライアントからリクエストを受け付けるエンドポイントは3つ

エッジ最適化APIエンドポイント

Amazon CloudFrontのエッジロケーションを使用してクライアントの最寄りの接続ポイントにルーティング

リージョンAPIエンドポイント

指定したリージョンにAPIエンドポイントをデプロイし、同一リージョン内のクライアントにサービスを提供

プライベートAPIエンドポイント

パブリックなインターネットからは分離して、アクセス権限を持ったVPCエンドポイントからのアクセスに限定する

WebSocket API

WebSocketプロトコルを使用して双方向のステートフル通信を行うAPIを提供

WebSocket APIでは、リージョンAPIエンドポイントが利用可能

HTTP API

REST APIと同様に、HTTPリクエストの中継を行い、ステートレス通信を行うAPIを提供

エンドポイントタイプとして、リージョンAPIエンドポイントが利用可能

ステートレスとステートフル

ステートレス

入力の内容によってのみ出力が決定される方式

ステートフル

同じ入力に対する出力が常に同じとは限らない

内部で保持している状態次第で出力が変化する方式

終わりに

REST APIのRESTってそこまでよく分かっていない。

これも他サービスと同様に実際に構築とかしてみないと分からないのかも。

ひと通り読み終わったら、理解曖昧な箇所は料金と相談して実構築してみたい。

AWS DVA AWS開発 参考書読み4日目

今日やったこと

昨日は、勉強全くしないお休みにした。

今日は、AWS DVAデベロッパーアソシエイト)の参考書で、セキュリテ関連サービスの章を読んだ。

セキュリテイ関連サービス

WAF

AWSが提供するWebアプリケーションファイアウォール

Webアプリケーションの脆弱性を悪用した攻撃から守る仕組み

AWS Shield

L3(ネットワーク層)、L4(トランスポート層)、L7(アプリケーション層)レイヤーへのDistributed Denial-of-Service(分散型サービス妨害、DDoS)攻撃から、システムを保護する仕組み

AWS ShieldにはStandardとAdvancedがある

AWS Shield Standard

L3、L4を対象としたDDos攻撃から保護する機能

デフォルトで有効になっており、無料で使用可能

AWS Shield Advanced

L3、L4、L7を対象としたDDoS攻撃からの保護

攻撃の通知やレポーティング機能を提供

Amazon GuardDuty

ユーザーの動作や通信をモニタリング・分析し、脅威を識別する脅威検出サービス

AWSのセキュリティのベストプラクティスでは、有効化することが推奨されているらしい

Amazon Inspector

OSやミドルウェア脆弱性管理をサポートするサービス

EC2の脆弱性診断も可能

診断機能は、ホスト型診断と外部ネットワーク型診断がある

ホスト型診断

サーバ内部から脆弱性を確認する診断法

EC2にエージェントのインストールが必要

外部ネットワーク型診断

外部ネットワークからの脆弱性を確認する方法

エージェントのインストールは不要

AWS Systems Manager(Parameter Store)

AWSにおけるシステム運用をサポートするサービス

ソフトウェアイベントリの収集、OSパッチ適用、メンテナンス作業の自動化などを実行できる

Parameter Store

AWSのサービスやアプリケーションで利用するパラメータを管理する機能

KMSと統合されており、セキュリティに関するパラメータを暗号化してセキュアに管理可能

AWS Secrets Manager

データベースのパスワードやAPIキーなどデータ流出の危険性がある認証情報を集約し、管理するサービス

AWS Secrets ManagerとParameter Storeの違いとして、Secrets Managerは、シークレットの更新間隔を指定すると自動でパスワード変更を行う

Amazon Detective

各種AWSサービスから収集できるデータを分析、可視化し、インシデントの原因を特定するサービス

Amazon Macie

S3バケットとS3バケット内のオブジェクトを分析し、脅威の検出やデータ分類を行う

終わりに

軽く概要だけを整理して並べて書いてみたけど、覚えようとしたらごちゃごちゃになりそう

一度は試しに触るかハンズオンのサイト見るなりして、イメージ固めて覚えていきたい

AWS DVA AWS開発 参考書読み3日目

今日やったこと

AWS DVAデベロッパーアソシエイト)の参考書で、Elastic Beanstalkの続きを読んだ。

Elastic Beanstalkの続き

Blue/Greenデプロイ環境構築を実現できるその他デプロイ戦略

URL Swap

環境に割り当てているURLを交換する Elastic Beanstalkで作成された環境にはCNAMEによる名前が付与されており、 CNAMEを入れ替える(swap)することでBlue/Greenデプロイを実現できる。

URL Swapについては、こちらのサイトが理解しやすかったです。

Route53 Swap

Route53の機能の一つであるALIASレコードをElastic Beanstalkで作成した環境に設定することができる。

設定したALIASレコードを新旧で差し替えることによってBlue/Greenデプロイを実現する。

Route53 Swapについては、こちらのサイトが理解しやすかったです。

Amazon OpsWorks

ChefやPuppetといったオープンソースの基盤自動化ツールを使用するマネージドサービス

Chef、Puppet

一言で言えば…

システム設定やソフトウェアの導入などを自動化、効率化する構成管理ツール

(数分ググってみても具体的なイメージが湧かなかったので、とりあえずこの内容で覚えてしまう)

まとめ

Amazon OpsWorksは、ChefやPuppetを使ったことがないので、使ってみてイメージできるようにしたい。

Cloud Formation、Elastic Beanstalk、Amazon OpsWorksは区別がつけづらいようなので、整理しないと混乱しそう。

AWS DVA AWS開発 参考書読み2日目

今日やったこと

AWS DVAデベロッパーアソシエイト)の参考書で、Elastic Beanstalkの記載を読んだ。

全てを読みきれなかったが、AWS SAAで勉強したはずがかなり忘れていた。

Elastic Beanstalk

プレゼンテーション層/アプリケーション層/データ層からなる3層Webアプリケーションや、キューを用いたバッチ処理などの典型的なプラットフォームを構築するためのサービス

アプリケーションコードをアップロードするだけで、ALBやDBなどのミドルウェアを自動で組み合わせてくれる

デプロイ戦略

アプリケーションのデプロイポリシーとして、5種類のオプションがある

  • All at once
    • 現在実行しているアプリケーションインスタンスを同時に全て更新する方式
    • 一度に同時更新のため、時間が短い
    • 同時更新のため、サービス停止時間が発生する
    • エラーが発生した場合
  • Rolling
    • 実行中のアプリケーションをバッチと呼ばれる単位で順次更新する方式
    • 順次更新のため、サービス停止時間がない
    • 順次更新によりサービス起動に使用するインスタンス台数が減り、スループットが低下する
    • エラーが発生した場合
  • Rolling with additional batch

  • Immutable

    • Rolling with additional batchデプロイの代替手段
    • エラーが発生した場合
  • Traffic splitting
    • エラーが発生した場合
      • Immutableと同様

まとめ

Elastic BeanstalkとCloudFormationの違いが怪しい。(なんとなくの理解はしているが説明求められると困る。)

5種類のデプロイポリシーはユースケースも一緒にして覚えていきたい。

デプロイ戦略は、5種類以外にBlue/Greenデプロイを実現するデプロイポリシーもあるようなので、後日確認する。

ブログ記載内容が勉強時間によっては半端になるが、体裁は考えずにとにかく継続を優先していきたい。

AWS DVA AWS開発 参考書読み1日目

今日やったこと

AWS DVAデベロッパーアソシエイト)の参考書で、1章:基本となるサービスを読んだ。
基礎内容のため、復習として登場単語をまとめた。


AWS開発で基本となるサービス

インターネットゲートウェイ(Internet GW)

VPCとインターネットで通信するために設置するネットワークゲートウェイ

使用条件として、通信元のリソースがパブリックIPアドレスグローバルIP)を持っている必要がある

AWSで付与できるパブリックIPアドレス

  • 動的付与
  • 固定付与(Elastic IP address)

の2つがある

NATゲートウェイ(NAT Gateway

NATはNetwork Address Translationの略

プライベートサブネット内でインターネット通信を行う場合に、パブリックサブネットへ設置する中継用ゲートウェイ

NATゲートウェイは単方向通信

仮想プライベートゲートウェイVPN GW)

VPCとオンプレミス環境を接続するために、AWS内に設置するゲートウェイ VPCとオンプレミス環境を接続するには、

  • 専用線を利用したDirect Connect
  • インターネット回線を利用したVPN接続

がある

カスタマーゲートウェイ(Customer GW)

VPCとオンプレミス環境を接続するために、オンプレミス環境に設置するゲートウェイ

VPCピアリング接続(VPC Peering)

独立した2つのVPCで接続し、プライベートアドレスを使って接続

VPCエンドポイント

VPCの中からAWSのマネージドサービスにアクセスするためのサービス AWSのマネージドサービスには、

  • VPC、サブネット内に構築されるリソース
  • リージョン単位で提供されるリソース

の2種類がある

リージョン単位で提供されるサービスへアクセスするためには、VPCの外に出る必要があるため、インターネットゲートウェイやNATゲートウェイの設定が必要

ゲートウェイ

インターネットGWとNATゲートウェイと同様にルートテーブルに設定が必要 ゲートウェイ型で提供されているサービスは

  • S3
  • DynamoDB

の2つ

インターフェース型

AWS PrivateLinkを利用したエンドポイント

インターフェース型で提供されているサービスはS3とDynamo以外が対象

セキュリティグループで制御

エンドポイントサービスとインターフェースエンドポイントを繋ぐこと

トランジットゲートウェイ

VPC間接続を統合するネットワーク管理サービス メリットとして

  • 接続設定を一元管理
  • オンプレミス環境との接続では、仮想プライベートゲートウェイの構築が不要
  • VPCピアリングとオンプレミス環境どちらの接続でも、クロスアカウントアクセスが可能
    • マルチアカウントや多数の拠点間接続で効果が高い

クロスアカウントアクセス

あるアカウントのAWSリソースに別のアカウントからのアクセスを許可する設定のこと

Amazon EC2(Elastic Compute Cloud)

仮想的にサーバ環境を提供するサービス

インスタンス

配置する仮想サーバのこと

インスタンスタイプ

インスタンスのCPUやメモリ、ストレージといったリソースキャパシティを定義したもの

AMI (Amazon Machine Image)

EC2上で仮想サーバとして動かすゲストOSのこと

Amazon LinuxWindows Server、CentOSUbuntuなどが用意されている

インスタンスの起動フロー

①AMIの選択

インスタンスタイプの選択

インスタンス詳細設定

④ストレージ詳細設定

⑤タグ設定

⑥セキュリティグループ設定

⑦キーペア設定


まとめ

言葉や意味は理解しているが、各サービスがVPC内で使用されるものか、サブネット内で使用されるものか等、設置場所がまだ怪しい。

またの機会に改めて、図にして把握しておきたい。