継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

サーバーレスシングルページアプリケーション 8章

タダです。

今回はサーバーレスシングルページアプリケーション8章で勉強したことをまとめていきます。 www.oreilly.co.jp

章立ては以下のようになっています。

  • 1章 シンプルにはじめる
  • 2章 ハッシュイベントによるビューのルーティング
  • 3章 シングルページアプリケーションに必要なもの
  • 4章 Amazon CognitoによるIdentity as a Service
  • 5章 DynamoDBにデータを格納する
  • 6章 Lambdaを使って(マイクロ)サービスを作る
  • 7章 サーバーレスのセキュリティ
  • 8章 スケールアップする

8章のまとめ

  • Webサービスの監視は別のサービスを使えるが、AWSの監視はCloudWatchを使う
    • CloudWatchのアラート送信先には2つの選択肢があり、SNSとAutoScalingポリシーがある
    • CloudWatchのアラームは請求情報のアラートも通知可能
  • S3のログについて
    • S3のログ機能は、バッチで配信されるため、リクエストのログが数時間かかることもあるし、AWSはログが完全であることを保証していない(ベストエフォート)
    • S3のログを解析する方法の一つにローカルにダウンロードする方法がある
  • キャッシュによってコストとロード時間を削減し、ユーザーの直帰率を低減させる
  • クラウドのコスト
    • 今回のSPAの場合
      • S3のロードにかかるコスト
      • DynamoDBのスループット、データ転送コスト、ストレージコス
      • Lambdaのコスト
      • Coginitoは50,000ユーザーまで無料

振り返り

  • AWSのサーバーレスサービスを使ってSPAを構成して、普段触らない領域を経験できた
    • 合わせて普段考えない、テスト駆動の片鱗は味わえた
  • 趣味の一つとして自分のサービスを作ってみて、そこでサーバーレスのサービスを組み合わせたアーキテクチャにして、サービスの使い込みをしていきたい
  • 次回からはPythonのプログラミングを学ぶような習慣をつけていきます
    • 特に書籍は使わず次のサービスを使っていく予定です(まずは一ヶ月で文法を学習しきっていきたいです。Python検定を受けてみようかなと思っています。)
    • ドットインストール
    • Progate
    • 100本ノック
    • Aidemy
      • ML系に興味があって勉強したいので副教材でPythonの本やML系の本を入れて勉強していきます

サーバーレスシングルページアプリケーション 7章

タダです。

今回はサーバーレスシングルページアプリケーション7章で勉強したことをまとめていきます。 www.oreilly.co.jp

章立ては以下のようになっています。

  • 1章 シンプルにはじめる
  • 2章 ハッシュイベントによるビューのルーティング
  • 3章 シングルページアプリケーションに必要なもの
  • 4章 Amazon CognitoによるIdentity as a Service
  • 5章 DynamoDBにデータを格納する
  • 6章 Lambdaを使って(マイクロ)サービスを作る
  • 7章 サーバーレスのセキュリティ
  • 8章 スケールアップする

7章のまとめ

  • AWSアカウントのセキュリティの基本
    • すべてのルートアクセスキーを無効にする
    • プロファイルを使ってユーザーを管理する
    • AWS認証情報をセキュアにする
    • 多要素認証をセットアップする
  • サーバーレスSPAが受ける攻撃タイプ
  • TLSSSL標準とともに、セキュアで暗号化されたチャンネルをネゴシエートする方法を提供する
  • DoS攻撃に対しての方法として、CloudFrontとS3での静的コンテンツを提供すること
    • Cognito、DynamoDB、Lambdaはどんなタイプの攻撃が行われそうかを述べるのは困難
      • GoogleなどのIDPで使い捨てユーザーをつかってDynamoDBに書き込む攻撃はありそう
    • 攻撃を検出するためにCloudWatchサービスを利用して異常な使用パターンを知らせるアラームを設定が可能
    • 攻撃検出後は、AWSサービスへアクセスか許可を与えるIAMポリシーのCondition条項を変更すること
  • サーバーレスの一般的な攻撃について見たので、他のトピックとして署名付きURLを使うことやDDoSの防御についても合わせて確認する

次は8章でスケールアップについて学びます。

【9日目】毎日勉強や

タダです。

水曜日から体調崩していて、回復を優先してきて日記が滞りました。。

振り返りのフレームワーク

自分の振り返りのフレームワークを決めといたほうがやりやすいと思って次の資料を見て、エッセンスをまとめます。

参考資料

speakerdeck.com

フレームワーク

  • KPT
  • YWS(やったこと、わかったこと、次にやること)

頻度

  • 月次:計画通りに進んでいるかどうか、目標と乖離がないか
  • 週次:一週間で特に印象に残ったこと、できたこと・やりたいこと
  • 日次:打ち合わせ、できごとなど

ということでまずはやってみよう!

Python3でのjson扱い

Python3の環境でjsonでーたから特定のデータを抽出するコードを書いたので、まとめます。

tl;dr

tl;dr is 何?

import json

json_file=open('対象のjsonファイルへのパス')

output=json.load(json_file)

for resource in output["抽出したい値の対象のセクション名"]:
    print(resource)
    if "対象の値を取りたいキー名" in resource:
        print(resource["対象の値を取りたいキー名"])
    else:
        print("nai")

やりたかったこと

  • jsonファイルの中から特定の文字列のみを取得したい
    • jsonの構造は読み込むファイルごとに異なるため、固定値を取るようなコーディングではなくいろんなjson情報を取得できる構造にする
  • jsonは、{}が一つのデータなので、その分for文を回して、その中からif文で対象の値のキー名を検索する

体調戻ってきたし、また書いていくぞ!

7/17~7/21 AWSブログ

タダです。

今週のAWSブログアップデートをまとめていきます。

1、Amazon Kinesis Video Streams に、HLS 出力ストリームのサポートを追加

  • KVSのHTTP Live Strems(HLS)出力機能がサポートされ、デモの記事になります

2、新 – Amazon EBS スナップショットのライフサイクル管理

  • EBSスナップショットを自動で取得するData Lifecycle Managerがリリースされました
    • 何時に取得するか、何世代保管するかを指定して実行します

3、Amazon SageMaker BlazingText を使用して強化されたテキスト分類と単語ベクトル

  • SagaMakerのBlazingText機能でテキスト分類または Word2Vec (サブワードあり/なし) モデルを自動的に識別し、リクエストのサービスが提供されました

4、Amazon SageMaker で、物体検出アルゴリズムが利用可能に

  • SageMakerに物体検出アルゴリズムの提供が開始されました
    • 画像分類を行うために使う機能です

5、Amazon SageMaker 線形学習者でマルチクラス分類器を構築する

  • SageMaker 線形学習アルゴリズムの新しいマルチクラス分類機能の紹介記事です

6、AWS Storage Gateway Recap &#8211、SMB サポート、RefreshCache イベント、その他

7、Amazon SageMaker DeepAR は欠損値、カテゴリ機能と時系列機能、および一般化した頻度をサポートします。

  • SageMakerのDeepARの新機能についての紹介記事です

8、Amazon SageMaker は k近傍 (kNN) 分類および回帰のサポートを開始しました

  • SageMakerのkNN推論と、ホストする方法の紹介記事です

9、AWS ヒーロー – 新しいカテゴリを追加

  • AWSヒーローの紹介記事です

10、Amazon SageMaker ハンズオン開催報告とシナリオ公開のお知らせ

  • 表題の開催レポートとシナリオ公開記事です

11、Amazon Translate が、日本語、ロシア語、イタリア語、繁体字中国語、トルコ語、およびチェコ語のサポートを追加しました。

12、新機能 – AWS Snowball Edge 用 EC2 コンピューティングインスタンス

13、Amazon EC2 インスタンスの最新情報 – より高速なプロセッサーとより多くのメモリ

14、Amazon SageMaker を使用して、整形外科的病理を予測するためのモデルを作成する

  • SageMakerを使ってUCI ML Datasetで整形外科における ML の使用について説明し、脊椎の病状予測を自動化する方法の紹介記事です

以上で今週のアップデートまとめです。

【8日目】毎日勉強や

タダです。

Kubernetes

Dockerのオーケストレーションツールが、Kubernetes(クーベネティス) Docker Composeも同様のツールだが、Kubernetesはローカルもリモートに対してもオーケストレーションできるのが特徴

概念

  • Pod : コンテナの筐体を指す
  • Service : 複数または単一のPodにアクセスするためのロードバランサのような存在で、Pod同様にIPを保持してPodに対してトラフィックを投げる
  • Deployment : Podを何個起動するか、コンテナのアップデート方法などを定義する
  • Volume : コンテナで生成されたファイルで永続化させたいものはVolumeを使う必要がある
  • ConfigMap : コンテナで利用したい環境変数を保管するための仕組み
  • Secret : 秘密情報をPodで利用できるようにするための仕組み
  • Ingress : インターネットからServiceへの通信を橋渡しする役割をもつ、SSLターミネーションや負荷分散機能を持つ
  • Namespace : 利用目的やシステムに応じて、Pod、Serviceなどを管理できる

minikubeのセットアップ

Macにminikubeをセットアップします

1.minikubeのインストール

» brew cask install minikube
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/cask, homebrew/core).
==> New Formulae
xcodegen
==> Updated Formulae
arangodb              exercism              gnuradio              hadolint              mypy                  quicktype             squid                 zimg
binutils              exploitdb             gnutls                httpd                 ntl                   radare2               sysdig
clblast               flintrock             gr-osmosdr            jenkins               pandoc                roll                  teleport
credstash             futhark               gradle                jenkins-job-builder   pgcli                 s3cmd                 terragrunt
darksky-weather       gauche                groovy                linkerd               phpunit               singular              vapoursynth
dartsim               gnu-prolog            groovysdk             mikutter              pulseaudio            skaffold              whois

==> Satisfying dependencies
All Formula dependencies satisfied.
==> Downloading https://storage.googleapis.com/minikube/releases/v0.28.0/minikube-darwin-amd64
######################################################################## 100.0%
==> Verifying checksum for Cask minikube
==> Installing Cask minikube
==> Purging files for version 0.28.0 of Cask minikube

2.バージョン確認と最新版へのセットアップ

インストールできたのが、v0.23だったのでこの時の最新のv0.28へ更新します コマンドは、githubの情報をそのままコピペ

Release v0.28.0 · kubernetes/minikube · GitHub

» minikube version
minikube version: v0.23.0

» curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.28.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 40.6M  100 40.6M    0     0  3936k      0  0:00:10  0:00:10 --:--:-- 2710k
Password:
» minikube version
minikube version: v0.28.0
» kubectl version --client
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.1", GitCommit:"d4ab47518836c750f9949b9e0d387f20fb92260b", GitTreeState:"clean", BuildDate:"2018-04-12T14:26:04Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}

まずは、セットアップだけで、明日から起動させたりします。

また明日