AWS re:Invent 2021 ClassMethod Re:Growth を 見て

youtu.be

セキュリティ系アップデートまとめ

AWS Well-Architected フレームワークの柱が5本から6本に

  • サステナビリティの柱を追加
  • コスト最適化や、マネージドサービスを推進することで、エコ推進?

コンピュートサービスの進化を語る

新たなEC2ファミリの発表

1年ぶりにNitroに想いを馳せる

Nitroとはなんぞや

Nitroの発表内容

何が嬉しい?Amazon S3 Object ACL無効化

  • S3 Bucketに、Ownershipポリシー「BucketOwnerEnforced」を指定することで、これまで当該BucketにPushできなかったACL付与オブジェクトが、Push可能となる。(これまでは、一旦オブジェクトの所有者を、Bucketの所有者に切り替えてから入れる必要があった)
    f:id:camelrush:20211210020827p:plain

    ↓ なかなか秀逸な表現w
    f:id:camelrush:20211210015757p:plain

re:Inventのキーワードからみる将来

  • (未編集)

Amazon店舗体験記〜最新の「Just Walk Out」のここがすごかった〜

シアトルのAmazonショップ 照会

  • 店舗外観・内装
    f:id:camelrush:20211210021015p:plain f:id:camelrush:20211210020957p:plain
  • ショッピングカートに、コードスキャナと画面。 f:id:camelrush:20211210021216p:plain
  • 日本国内にも、これに近い感じのがある ↓ けど、↑ はスキャンが不要。どちらもバーコードをスキャンしているのは同じだけど、「スキャナに充てさせる」か、可能な限り「スキャナが拾いに行く」かの違い。やっていることは同じなんだけどね。
    gasket.bizright.co.jp
  • 以下の対比表を見て。
    f:id:camelrush:20211210022629p:plain
    DevIOカフェってなんだ?って思ってたら、ClassMethodさん、こんなことやってたのね…。しらんかった…。
    cafe.classmethod.jp

Amazon SageMaker周りのアップデート

Amazon DevOps Guru for RDSを5分でざっくり理解する

  • (未編集)

データ分析のトレンドと注目の新機能

  • (未編集)

Figma連携でReact UI Component自動生成!AWS Amplify Studio解説

  • (未編集)

AWS SDKAmazon CloudWatch関連アップデート

  • (未編集)

AWS Private 5Gについて今わかっていること

  • (未編集)

AWS re:Inventの10年を振り返る

  • (未編集)

クロージング

  • (未編集)

AWS EC2上でElasticSearch + Kibana環境を構築する

前置き

以前、Windows上で構築したElasticSearch+Kibana環境を、AWS EC2(Amazon Linux2)上に構築する。

本来、AWSには「Amazon OpenSearch」という、まさにこの2つのサーバ環境を備えたサービスが存在するのだけど、少し触った感じだと、構築した後にインスタンスの停止・再起動といったことができないようで、維持するのになかなの課金がかかるみたい。

近日、会社でIoTがらみの研修を開くことになったので、復習もかねて構築にトライすることにした。

今回の構築で分かったこと

安定的に動かすならば、EC2ファミリでは「t3.large」(メモリ8GB)以上がよい。

ElasticSearchサービスは、デフォルトで2GBのメモリを使用するらしく「t2.micro」(メモリ1GB)で起動すると、起動に失敗したり、途中からコマンドを受け付けなくなる。

ググると、jvmの設定変更を駆使して256MBで動かしている人もいたけど、あくまで検証作業なので、そこまでシビアに絞らんでもよいと判断しました。

事前準備

VPN / Subnet / EC2 作成

独立したVPN一つと、publicサブネットを一つ作成し、上にEC2を構築する。

種別 名前 IPアドレス
VPC biweb-dev-vpc 10.0.0.0/16
サブネット biweb-dev-pub-subnet1 10.0.32.0/20
EC2 biweb-dev-web 10.0.20.240/20
  • EC2を作成する前に、サブネットの「自動割当IP設定」を有効化する。
  • EC2作成時、セキュリティグループには、SSHアクセスだけを許可とする。Sourceは「マイIP」をクリックして自宅のIPからの要求だけ許可とする
  • EC2作成後、アクセス用のキーペアをダウンロードして保存しておく。
  • EC2作成後、パブリックIPv4アドレスが割当されていることを確認する。

自PCからのSSHアクセス

  • VPCメニューから、インターネットゲートウェイを作成(biweb-dev-igw)して、サブネット(biweb-dev-pub-subnet1)にアタッチする。
  • VPCメニューから、サブネットを選択し、作成したサブネットのルートテーブルに以下を加える。

    送信先 ターゲット
    0.0.0.0/0 (作成したIGW)
  • ローカルPCで「Tera Term」を起動して、「Host」に作成したEC2のパブリックIPv4アドレスを指定する。

    f:id:camelrush:20211020212657p:plain

  • OK押下後の認証画面で、以下の内容を設定してOKをクリック。

    • 「User name」に「ec2-user」(これは固定値)
    • 「Use RSA/~(略)~ key to log in [Private key file:]」に、ダウンロードしたキーを選択

    f:id:camelrush:20211020212903p:plain

  • 以下のとおり、ログインが成功すれば、準備OK。

    f:id:camelrush:20211020213315p:plain

必要ソフトのインストール

yumリポジトリ更新

$ sudo yum update -y

java8 OpenJDK

$ sudo yum install java-1.8.0-openjdk.x86_64

Elastic Searchインストール

以下を参照しつつ、RPMからのインストールを行う。

www.elastic.co

GPG-KEYをローカルリポジトリにインポートする

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

※【補足】GPGの説明はこちらを参照

ElasticSearch RPMのrepoを所定フォルダに生成する

エディタはなんでもいいですが、今回は nano を使いました。

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

elasticsearch.repo への記載内容は以下の通り。

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

インストールコマンドを実行する

$ sudo yum install --enablerepo=elasticsearch elasticsearch
:
:
Installed:
  elasticsearch.x86_64 0:7.15.1-1

Complete!

外部アドレスからのアクセスを可能にする

以下のコマンドで設定ファイル「elasticsearch.yml」を開く。

$ sudo nano /etc/elasticsearch/elasticsearch.yml

以下の箇所に追記を行って、ファイルを保存。

# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
network.host: 0.0.0.0   # ←ここを追記
discovery.type: single-node # ←ここを追記

また、同じファイルに対して最後の行に次の内容を設定しておく。

xpack.security.enabled: false

意図としては「セキュリティ機能を使用しない」というもの。本来はtrueとし、パスワード等を設定するのだが、今回はあえて使用しない。この設定を明示的にしないと、Kibana操作時に画面でやいのやいの言われる。

↓ やいのやいの の例

f:id:camelrush:20211104225632p:plain

システム起動時にElasticSearchを起動するようにする(systemd)

$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable elasticsearch.service

$ # (ちなみに、システムを 起動をやめさせたい場合は次のとおり)
$ sudo /bin/systemctl disable elasticsearch.service

動作確認

PCを再起動。

$ sudo shutdown -r now

再起動後、起動状態をチェックする

$ sudo systemctl | grep elastic
elasticsearch.service         loaded active running   Elasticsearch

以下のコマンドでサービス自体の起動を確認(デフォルトポートは 9200)

$ sudo curl http://localhost:9200
{
  "name" : "ip-10-0-23-98.ap-northeast-1.compute.internal",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "9RtovLuBTuyvlNjuMLLekg",
  "version" : {
    "number" : "7.15.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "83c34f456ae29d60e94d886e455e6a3409bba9ed",
    "build_date" : "2021-10-07T21:56:19.031608185Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

同様に外部からのアクセスを確認。ブラウザで「http://[ip address]:9200/」にアクセスし、上と同じ表示がされればOK。

Kibanaインストール

以下を参照しつつ、RPMからのインストールを行う。

www.elastic.co

GPG-KEYをローカルリポジトリにインポートする

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

↑ ここはElasticSearchと同じレポジトリなので実施不要

Kibana RPMのrepoを所定フォルダに生成する

$ sudo nano /etc/yum.repos.d/kibana.repo

kibana.repo への記載内容は以下の通り。

[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

インストールコマンドを実行する

$ sudo yum install kibana 
:
:
Installed:
  kibana.x86_64 0:7.15.1-1

Complete!

外部アドレスからのアクセスを可能にする

以下のコマンドで設定ファイル「kibana.yml」を開く。

$ sudo nano /etc/kibana/kibana.yml

以下の箇所に追記を行って、ファイルを保存。

# To allow connections from remote users, set this parameter to a non-loopback $
# server.host: "localhost"
server.host: "0.0.0.0"   # ← ここを追記

システム起動時にKibanaを起動するようにする(systemd)

$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable kibana.service

動作確認

PCを再起動。

$ sudo shutdown -r now

再起動後、起動状態をチェックする

$ sudo systemctl | grep kibana
kibana.service         loaded active running   Kibana

以下のコマンドでサービス自体の起動を確認(デフォルトポートは 5601)

$ sudo curl http://localhost:5601

↑ 特にエラーなど、何もでなければ、おそらく(笑) 問題なし。 ブラウザで「http://[ip address]:5601/」にアクセスし、下の画面が表示がされればOK。

f:id:camelrush:20211027000040p:plain

あとがき

なんとか構築にはこぎつけました。所要、14時間程度。冒頭で書いたメモリ不足に気づくまで、4~5時間かかってしまったが、まずまずの進捗。次回は、Raspberry PiからのMQTTデータを流し込んで、Kibanaでのグラフ表示を実現します。

HDD、分解してみた

「HDDは、20世紀末から存在するコンピュータ向けのストレージであり、円盤状の磁気ディスクに、スライド式のヘッドを当てることにより、情報の記録、読み取りを行っている」

今回はそんなHDDを、実際に分解して内部構造を調べてみたので、その内容について書いてみたいと思います。

分解の儀

必要な工具

今回のHDDでは、精密ドライバ(トルクスドライバ)のT5、T6を使用しました。

犠牲

生贄の羊は、TOSHIBA製 MK6465GSX(640GB)。

f:id:camelrush:20211016190213j:plain f:id:camelrush:20211016184708j:plain

ジャンクPCから取り外したもので、ノートPCに取り付けたところ不良があるのか、BIOS起動時にディスクエラーが表示されます。使っていても微妙な異音がするので、継続使用を諦め、今回犠牲になってもらいました。

外装の撤去

まずは外装を取り外します。トルクスドライバで表と裏を取り外したところ。

f:id:camelrush:20211016190744j:plain f:id:camelrush:20211016190730j:plain

読み出しヘッド部分

円盤横についている、5cm弱の小さな部品が読み出しヘッドのようですね。薄い鉄が3層重ねられており、うまくスライドするように、プラスチック(白)のガイドもあるようです。

f:id:camelrush:20211016190841j:plain

取り出すとこんな感じ。

f:id:camelrush:20211017005234j:plain

ディスク部分

読み出しヘッドを取り出すと、2枚の円盤が見えました。何枚が入っているのかが、以前から不思議だったんですが、2枚だけなんですね。てっきり、超薄型で10枚程度入っているのかと思ってたので、ちょっと拍子抜けしました。

f:id:camelrush:20211017005305j:plain

2枚のディスクを、中央の突起部分(モータ)で回すようになっています。残念ながら、このモーター部分の解体まではできませんでした。

f:id:camelrush:20211017005336j:plain

全バラ結果

最終的には、以下の部品に分類されます。細かいネジが結構ありますね。

f:id:camelrush:20211017013322j:plain

後で見たら

以下に全部書いてありました。Wikipediaってすごいね、ってオチでしたw

ja.wikipedia.org

初めてのHDD

HDDに初めて触れたのは、1988年(中学2年)頃だったと思う。田舎町で電器屋を営んでいた父が、20MBのHDDを家に持ち込んできた。当時の価格は20万円。今では信じられないが、当時は1万円/1MBという価格設定だった(1GBじゃなくて1MBだよ。)インターフェイスもUSBではなくて、SCSI-1という幅20cm弱ある大き目のコネクタだったのを覚えてます。 今から30年以上前の話なので、内部の作りもここまでコンパクトにはなってなかったんだろうなぁと…、今では想像しかできませんが…。

Raspberry Pi 4 Model B(8G RAM) 購入…でも遅い?

動機

最近、顔認識系の工作を始めているのですが、所有しているRaspberry Pi 3 だとOpenCVの応答速度が非常に遅かったため、この期に以前から気になっていたRaspberry Pi 4 を購入しました。

注意点

・Raspberry Pi4 には、メモリの大小でバリエーションがあります。2G、4G、8G。
・画面への出力には、MicroHDMIケーブルが必要です。通常のHDMIでは接続できないので、変換アダプタが必要となります。
・電源はUSB-TypeCで供給します(Pi3では、TypeAでした)

買ったもの

今回はAmazonさんで普通に購入しました。
せっかくなので、現時点で最高スペックの、メモリ8Gのバージョンを購入。

スタートアップキットもありましたが、いろいろついて割高っぽく、手持ちの部品もあるので、付属品は別購入としました。 ケースは、以下を購入。

開封の儀

f:id:camelrush:20210915230103j:plain

f:id:camelrush:20210915230123j:plain

f:id:camelrush:20210915230137j:plain

f:id:camelrush:20210915230147j:plain

速度比較…いまいち遅くないか…?

Pi3に比べてメモリ量が桁違いなので、ノートPCのような応答を想像していたのですが、実際に動かしてみるとPi3とそれほど変わりなく、Chromeブラウザの起動・タブ追加も、もっさり感が…。
少し調べたところではMicroSDカードのアプリケーションクラスによって応答速度が結構違うという話があり、急いでA2のカードを購入しました。

ただ、これでも大きな差は感じられず…。期待しすぎなのかな…。

ベンチマーク

体感だけだとわからないので、ベンチマークで値比較をすることにしました。 使用したのは、byte-UnixBench です。

導入・実行方法

ターミナル画面で以下のコマンドを実行し、ソースのダウンロードとビルドを実行します。

# git clone https://github.com/kdlucas/byte-unixbench.git
# cd byte-unixbench
# cd UnixBench
# make

終了後、以下のコマンドでベンチマークを実行します。

./Run

実行結果

以下のとおりでした(左が、右が)

f:id:camelrush:20210915083020p:plain

各指標は、上からの順で、以下の通りです。

  1. Dhrystone 2 using register variables
    2つのレジスタを使ってシステム(整数)プログラミングの性能
  2. Double-Precision Whetstone
    浮動小数点演算性能
  3. Execl Throughput
    関数の呼び出し性能
  4. File Copy 1024 bufsize 2000 maxblocks
    ファイルのコピー(バッファサイズ1024バイト)
  5. File Copy 256 bufsize 500 maxblocks
    ファイルのコピー(バッファサイズ256バイト)
  6. File Copy 4096 bufsize 8000 maxblocks
    ファイルのコピー(バッファサイズ4096バイト)
  7. Pipe Throughput
    パイプ処理のスループット
  8. Pipe-based Context Switching
    パイプベースのコンテキストのスイッチング処理
  9. Process Creation
    プロセス作成
  10. System Call Overhead
    システムコールでのオーバーヘッド
  11. Shell Scripts (1 concurrent)
    1つだけシェルスクリプトの実行
  12. Shell Scripts (8 concurrent)
    8つ同時にシェルスクリプトの実行

伸び幅が低いのはともかく、Pi3よりも低いところがある原因がわからない…。
メモリ量 1G->8Gで、CPU性能も向上しているはずなのに、下がることなんてあるんだっけ…。

今回は以上となります。

Raspberry Pi # 距離測定(time-of-flight)

今回のお題

前回作成した有機ELディスプレイをもう少し活かしたく、センサーからの距離情報を画面に表示させるギミックを作ってみることにしました。

使用したパーツ

VKLSVAN製のVL53L0Xという距離センサーになります。
距離センサーにはいくつかの種類がありますが、今回は time-of-flight 方式を使います。
仕様上、最大距離は2.0m。

(前回同様ですが)購入すると、以下の通りPINと基盤が別々になっていますので、ハンダで足留めする必要があります。さすがにこのぐらいはできるようになりました(^^

f:id:camelrush:20210907144809p:plain f:id:camelrush:20210907144855p:plain

Raspberry Pi接続

接続は下図のとおりです。

f:id:camelrush:20210907152719p:plain

今回はインターフェイスとして、I2Cを使用します。
センサーから連続して距離を取得して、3回分の平均を取り、その値を画面に表示します。

できあがり

カメラ自体が障壁になっているので、近づくことで距離が縮まっていきます。
f:id:camelrush:20210907152852g:plain

ソースは以下のGitにアップロードしています。
github.com

所感

やっぱり有機EL「SSD1306」の画面表示があると、できあがりが映えますね^^
次回は、これによる距離と顔画像認識、サーモセンサーを使った非接触体温計を作ってみたいと思います。

Raspberry Pi # 有機ELで文字・アニメーション表示

久々のRaspberry Pi 工作

しばらくジャンク修理やら試験勉強においやられていたので、気分転換にRaspberry Piの電子工作を再開しました。

今回のお題

今回は小型のディスプレイに、文字を表示します。
  f:id:camelrush:20210906132422g:plain
  f:id:camelrush:20210906124335p:plain ← ドット操作で、普通に画像も作れます

以前使用した、温湿度センサー「DHT11」を使い、温度・湿度をリアルタイムに表示してみたいと思います。
camelrush.hatenablog.com

使用したパーツ

Aideepen製のSSD1306という有機LEディスプレイになります。 解像度は128×64、サイズ感としては 3cm×3cm程度の小さなディスプレイです。

購入すると、以下の通りPINと基盤が別々になっていますので、ハンダで足留めする必要があります(さすがにこのぐらいはできるようになりました(^^
f:id:camelrush:20210906144242p:plain f:id:camelrush:20210906144334p:plain

Raspberry Pi接続

接続は下図のとおりです。
f:id:camelrush:20210906134232p:plain

今回はインターフェイスとして、I2Cを使用します。
1秒周期でDTH11から温湿度を取得して、この周期でディスプレイに文字表示します。

できあがり

以前実装したDHT11を使用した温湿度計を使い、その内容をディスプレイに表示しました。

f:id:camelrush:20210906130105g:plain

ソースは以下のGitにアップロードしています。
GitHub - camelrush/dispThermoHygroMeter

所感

IoT工作の最初に、これ、やっとけばよかったと、本当に思いました。 今まで外部出力はターミナルに出るからいいや、とか思ってましたが、こうやって簡単に見えることって、非常にわかりやすいし、作った感が出ますよね。

AWSソリューションアーキテクト アソシエイト(SAA-C02)受験記

AWS SAPへの道の途中で

SAP取得に向けた記事を書きましたが、それ依頼、更新が止まっていました。
日々、ジャンクPCを買い足したり、分解したり、ニコイチにしてにんまりしたり、そんな日々を送っていたわけで…。 そうこうしているうちに、SAPへの対策もできないまま、SAAの期限切れが近づいてきてしまいました。 有効期限は、2021/10/24.このまま、資格失効してしまうのも嫌だし、SAPを受けるうえでSAAレベルの知識も思い出す必要がありそうだったので、復習もかねて一度SAAを更新することに方向転換しました。

3年ぶりのSAA

久しぶりにAWSの世界に戻ってきましたが、資格の有効期間3年ってのは伊達ではなく、前回学んだ知識が結構変わっていることに驚きました。

サービスのいくつかが廃止

古い資材、淘汰されたサービスは、非推奨としてどんどん廃止されていく。

  • EBS マグネティクスストレージ
  • EC2 スケジュールドリザーブインスタンス
  • AutoScaling 簡易スケーリングポリシー
S3、NoSQLDB 結果整合性の改善

このあたりって、3年前は結果整合性しか取れていないため、更新・削除操作をしても即座に反映されないってのが常識だったはずなのに、現在は解消されてRDBと同等の参照整合性が担保されるようになったみたい。

対策講座が豊富

当時は勉強方法がなにもなくて、Webの有料問題集サイトや公式模試を何度もやり直す程度しかできませんでした。解説も十分ではなく、BlackBeltを聞いていてもいまいち腹落ちしないことは多々ありました。
現在は、(特にSAAが人気があることもあって)参考書や問題集が豊富にあり、対策を打ちやすくなっています。今回はUdemyという学習サイトを活用しましたが、ポイントを抑えた動画での講義は、非常にわかりやすくなっていました。

無事、合格しました。

去る 8/28(土)、札幌駅前の試験会場で受験し、無事合格することができました。

f:id:camelrush:20210901231224p:plain

受験中は65%ぐらいしか確信が持てず、不安のまま終了しました。後日届いたスコアレポートによれば、758点(合格ラインは720点)とあったので、結構ギリギリでしたね…。

後日談

合格特典として閲覧できる、AWSグッズの公式ストア。最近財布が暖かいので、公式Tシャツでも買ってみようかとアクセスしたところ、現在日本への発送は受付けていないとのこと。ざんねーん(T-T

f:id:camelrush:20210901232405p:plain

以下、対策メモ

  • 定期的な使用に関するEC2インスタンス
  • Amazon Data Lifecycle Management(DLM)
    • EBSの定期的なバックアップ(スナップショット作成)や、削除を実施
  • S3の暗号化には「SSE-S3」と「SSE-KMS」の2つが選択可能であること
    • SSE-S3の利点は追加料金が発生しないこと。これによりAPIコールの制限を設けなくてよいこと。
    • SSE-KMSの利点ははCloudTrailによって証跡ログの取得が可能であること
  • Amazon KMSでのキー作成
    • データを暗号化するためのデータキーと、データキーを暗号化するマスターキーが存在する。
    • キーの作成にかかるコストは、1USD/月。
    • 対称鍵と非対称鍵が選択可能で、非対称鍵ではRSA鍵2048、3072、4096が選択できる。さらにデジタル署名用としてはECCも可能。
  • ELB接続状態のEC2をトラフィック処理中に切断しても処理を継続する(しかし新しいトラフィックは送信しない)ことを Connection Drainingと呼ぶ。1〜3,600秒設定が可能。
  • ELB接続で発信元に応じてトラフィック送信先を制御することをスティッキーセッションと呼ぶ。
  • Route53 レコード・タイプ

    タイプ 概要
    A Address IPv4 IPアドレス
    AAAA ? IPv6 IPアドレス
    CNAME Canonical Name ドメイン名の別名
    NS Name Server ドメイン名の移譲先の権威DNSサーバのドメイン
    MX Mail Exchange ドメインへのメール配送先サーバのドメイン
    TXT TeXT コメント行。Sender Policy Frameworkにも使える
    PTR PoinTeR IPアドレスに対応するドメイン
    SOA Start Of Authority プライマリネームサーバ、ドメイン管理者の電子メール、ドメインのシリアル番号、ゾーンのリフレッシュなど
  • AWS OrganizationsのOUアクセス設定とSEPは両方がAllowである場合に使用可能となること。

不明点・理解不足

  • インスタンスストア
    • EC2に使用されるブロックストレージの一種
    • 揮発性であり、EC2をStopすると内容が消える。再起動では保持されたままである。
  • Amazon Kinesis Data Stream と Fire Hose の違い

    サービス アイコン レイテンシ
    データロード
    ユースケース アウトプット セキュリティ
    Kinesis DataStream 小川 1秒以下 リアルタイム性 Lambda
    ダッシュボード
    -
    Kinesis FireHose 消火栓 60秒以下 分析、BI、ETL S3、RedShift GZIP、SNAPPY
    KMS
  • Route53のフェイルオーバールーティングと構成(アクティブ/パッシブ)

  • Web AppSync(GraphQL)
  • S3 Transfer Acceleration
    • S3へのファイルアップロード高速化
    • ワークロードは海外リージョンのS3へ日本からアップロードする場合など。
    • CloudFrontのエッジロケーションの仕組みを使って転送最適化するらしい
    • 料金は 0.04USD/GB 程度。
  • SAML ID フェデレーション、STS
  • AWS SAM(ローカルでのサーバレス開発環境?)
  • インスタンスタイプ・ファミリの覚え方 https://zenn.dev/matsu7089/articles/meaning-of-ec2-instance-types
ファミリー 種別 覚え方 特徴
T 汎用 Trubo CPUバースト可能
M 汎用 Most Scenarios 様々な場面で活用
A 汎用 Arm Arm Processor搭載
Mac 汎用 Mac Apple Mac mini搭載
C コンピューティング最適化 Compute 計算パフォーマンスが高い
R メモリ最適化 RAM メモリ最適化
X メモリ最適化 EXtra Large memory 最大メモリ量が大きい
z メモリ最適化 周波数(Hz) 高周波なコア搭載
P 高速コンピューティング General Purpose 汎用GPU搭載
G 高速コンピューティング Graphics グラフィックスに最適化
F 高速コンピューティング FPGA FPGAカスタマイズ可能
Inf 高速コンピューティング Inference 機械学習推論に最適化
I ストレージ最適化 I/O performance NVMe搭載 IO性能が高い
D ストレージ最適化 Dense storage 最大48TBのHDD搭載
H ストレージ最適化 High disk throughput 高ディスクスループット
  • EC2 Dedicated Host と ハードウェア占有インスタンスの違い

  • Auto Scaling ブラックベルト

    • EC2AutoScalingと、Application AutoScalingを合わせてAWS AutoScalingと呼ぶ。
      • Application AutoSaclingとは、EC2以外のリソースに対するAutoScalingを指す。DynamoDBやAurora、ECSクラスタ、EMRクラスタなどが含まれる
    • ウォームアップ期間:新しいインスタンスが使用可能になるまでの秒数を設定。これにより、重複でスケールアウトされる問題を回避。スケールアウト期間中も、スケールアウトされるが決定された増分数から進行中の数は差し引かれる。デフォルト時間は300秒(5分)
    • スケーリングポリシー
      • 簡易スケーリング:非推奨で使われない。スケーリング基準が単一しか指定できない(負荷率40%以上の場合、2 Instanceなど)
      • ステップスケーリング:複数のスケーリング基準を指定、(負荷率30%以上は2個、40%以上は3個など)
      • ターゲット追跡スケーリング:指定した値(負荷率40%など)を「目指して」自動でスケールアウト・スケールインされる
      • 予測スケーリング(EC2のみ):2週間分のメトリクスを分析し、次の2日の今後の需要予測
      • スケジュールスケーリング:Min、Man、Desired Capacity を指定する
    • ベストプラクティス
      • EC2 AutoScaling:予測スケーリング+ターゲット追跡スケーリング
      • Appliaction AutoScaling: ステップスケーリング+スケジュールスケーリング
  • SecurityGroupIngressってなに?
  • CloudFront の OAI設定制限
    • CloudFrontにOAI(Origin Access Identity)を付与することで、S3への閲覧を特定ユーザに限定させることができる。
  • Lambdaエッジ、Lambda Layer、Invocation
  • DAXってなに?
    • Amazon DynamoDB Acceleratorのこと。
    • インメモリ型キャッシュクラスタであり、2回目以降のデータ取得が高速化される
  • ユーザクォータって?それがあるファイルシステムは?
  • SQSクォータ
    • メッセージサイズ1byte~256KBytes
    • 可視性タイムアウト0秒~12時間。デフォルト30秒
    • メッセージタイマ0秒~15分
    • メッセージ保持期間60秒~14日間。デフォルトは4日間
    • キュー当たりのメッセージ数 無制限
    • ロングポーリングの待ち時間 20秒
  • RDSオートスケーリング
    • データベースサイズを自動でスケールする
  • Auroraサーバレス
  • Route53ルーティング
    • マルチバリュー(複数値回答)ルーティング?
  • SWFは使わずに、現在はStepFunctionsが推奨されている?
  • CloudFormationスタックセット:作成したテンプレートを複数のアカウントやリージョンにリソースを展開できる機能を指す。
  • インメモリDB memcached と radis の違い
    • memcached が マルチスレッド対応。並列処理用途等。radisはセッション保持等で使用される。
  • AWS Organizations と SCP(Black Belt)
  • AD Connector