Tocyukiのブログ

ギターと柔術とプログラミングが好き!

【Rails】MinitestでのテストをGuardで自動化して表示結果に色をつける

テストに関するGemを以下のようにGemfileへ記述する

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest',                 '5.10.3'
  gem 'minitest-reporters',       '1.1.14'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
end

bundle install実行後、bundle exec guard initを実行する

テスト結果に色付けするのはtest/test_helper.rbを以下のように編集するだけ

ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
+ require "minitest/reporters"
+ Minitest::Reporters.use!

class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  fixtures :all

  # Add more helper methods to be used by all tests here...
end

【Linux】リソース状況を確認するときによく使うコマンドたち

以下のリソース状況を確認するときによく使うコマンドたち。

CPU

システム全体のCPU使用率

  • top (htop)
  • vmstat
  • iostat
  • mpstat
  • sar -u|-P
  • dstat

プロセス毎のCPU使用率

  • top (htop)
  • ps u[ax]

LoadAverage(負荷平均)

  • top (htop)
  • uptime
  • w
  • dstat

メモリ

システム全体のメモリ使用量

  • top (htop)
  • vmstat
  • sar -r
  • dstat

プロセス毎のメモリ使用量

  • top (htop)
  • ps u[ax]

スワップ

スワップ領域の使用状況

  • top (htop)
  • free
  • vmstat
  • sar -S
  • swapon -s
  • dstat

スワップイン・スワップアウトの状況

  • vmstat
  • dstat

ディスク I/O

  • iostat
  • iotop
  • vmstat
  • sar -b
  • dstat

ネットワーク I/O

  • iptraf
  • netstat -i | -s
  • sar -n DEV | EDEV
  • ss
  • dstat

dstat最強!!!

Go言語の勉強方法

最近ISUCONの利用言語でもほとんどGo言語になっていて、CLIツールやインフラ周りでかなりの存在感を出してきているGo言語。

直近のISUCONでは最も利用されている言語のようですね〜。
これはインフラエンジニアとしてGo言語知らんとは言えない状況です。

直近のISUCONでのGo言語利用率

大会名 Go言語利用率(全体) Go言語利用率(本戦出場組)
ISUCON9 49.4% 73.3%
ISUCON8 40.0% 63.3%
ISUCON7 28.4% 53.3%
ISUCON6 19.2% 42.3%
ISUCON5 14.2% 22.2%
ISUCON4 16.1% -
ISUCON3 4.23% 8.00%

というわけで、mattn_jpさんの教えに従いGoに入りてはGoに従ってみましょう!

目次

1. Go Tour をやる (1日)

go-tour-jp.appspot.com

2. Effective Go を読む (1~2日)

go.shibu.jp

3. GitHub から興味のあるソースを読む

github.com

4. 標準ライブラリを読む

golang.org

golang.org

golang.org

golang.org

golang.org

golang.org

golang.org

番外編

Gopher道場 自習室なるものがあってこれに参加するのもかなり良さそう!

課題が用意されていて、Slackで質問や課題のレビュー(ベストエフォートですが)をしてもらえるようなので気になる方はぜひ!

gopherdojo.org

参考

future-architect.github.io

speakerdeck.com

【iTerm2】tmuxでマウス操作を有効にしているときにマウスでコピペできないときにやること

これ、いつも忘れてしまうので書いておこう。

というのも自分はtmuxを使っていてマウス操作も有効にしているのだけど、Mac上のターミナルであれば特に気にならない(tmuxのコピペがMacのクリップボードに保存されるため)けど、踏み台で使っているtmuxのコピペがMacのクリップボードに保存されないので、マウスで範囲選択しようとするにもtmuxのモードで動いてしまい、Macのクリップボードに保存されず「あれ?」となることが何度もあり、その度にこの設定について検索していたというしょーもない過去があったのであった。

設定方法

iTerm2のPreferencesで[Enable mouse reporting]をOFFにするだけ

f:id:tocguitar1:20200203113340p:plain
iterm preferences

もうこれで忘れないはず!!

MySQLで時間のかかっているクエリを強制終了させる

DB触ってない勢なのでDB周りの運用を覚えていかないとやばい〜、というわけで最近ちょくちょく発生しているMySQLで時間のかかっているSELECT文を強制終了させるというオペレーションの備忘録として残しておきます。

この対応が最高にイケていないというのは重々承知の上ですが、ちょっと特殊な環境のサーバー&アプリで移行も控えているということで人力で頑張っている感じです!

MySQLでクエリの一覧を表示させる

まずは現在実行されているクエリの一覧をSHOW PROCESSLISTコマンドで表示させる

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+------------+--------------------+
| Id | User | Host      | db   | Command | Time | State      | Info               |
+----+------+-----------+------+---------+------+------------+--------------------+
| 88 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 89 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 90 | root | localhost | NULL | Query   |   96 | User sleep | select sleep (100) |
| 91 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 92 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 93 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 94 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 95 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 96 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 97 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 98 | root | localhost | NULL | Query   |    0 | starting   | SHOW PROCESSLIST   |
+----+------+-----------+------+---------+------+------------+--------------------+
11 rows in set (0.00 sec)

通常、Info 列に表示されるクエリは100文字を越えると省略されますが、FULL オプションを指定すると、省略せずクエリの全文が表示される その際、表示が崩れるようであれば\Gオプションでクエリ結果を垂直表示すると見やすくなる

mysql> SHOW FULL PROCESSLIST \G;

対象のクエリを強制終了させる

KILL CONNECTION <processlist id>コマンドで対象のクエリを強制終了させる

mysql> KILL CONNECTION 90;
Query OK, 0 rows affected (0.00 sec)

再度クエリの一覧を確認する

id 90のクエリが消えているのが確認できました!

mysql> SHOW PROCESSLIST;
+----+------+-----------+------+---------+------+------------+--------------------+
| Id | User | Host      | db   | Command | Time | State      | Info               |
+----+------+-----------+------+---------+------+------------+--------------------+
| 88 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 89 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 91 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 92 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 93 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 94 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 95 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 96 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 97 | root | localhost | NULL | Query   |    6 | User sleep | select sleep (100) |
| 98 | root | localhost | NULL | Query   |    0 | starting   | SHOW PROCESSLIST   |
+----+------+-----------+------+---------+------+------------+--------------------+
10 rows in set (0.00 sec)

複数のクエリを一発でKILLしたい場合

以下のクエリでプロセスIDを抽出可能(60秒以上かかっている処理を抜き出したい場合)

mysql> SELECT GROUP_CONCAT(ID) FROM information_schema.PROCESSLIST WHERE TIME > 59;
+------------------+
| group_concat(ID) |
+------------------+
| 1,2,3,4,5        |
+------------------+

GROUP_CONTACT関数を使うことで複数レコードをカンマ区切りで1行にまとめられるが、MySQL内のkillコマンドでは複数IDを受け付けてくれてくれないため、 一旦MySQLから抜けてmysqladminコマンドで実行する必要がある

mysqladmin kill 1,2,3,4,5 -h localhost -u foo

KILL QUERYKILL CONNECTIONの違い

MySQLでクエリを強制終了させる場合、KILL QUERYKILL CONNECTIONのコマンドがるのですが、基本的にはKILL CONNECTIONコマンドを実行するのが今回の運用では適切っぽいですね。

その理由としてはKILL QUERYコマンドではステートメントは終了されるが、トランザクションは終了されないので、接続自体が残ってしまうからのようです。

そんなわけで

DBに強くなりたいと心から願っている今日このごろです。。。

参考情報

dev.mysql.com

VScodeのVimプラグインでh,j,k,lキー押しっぱなしで移動できない問題

最近のVScodeちゃんの出来が良すぎてVimを使い続けていく気持ちを維持できなくなってきている今日このごろでございます・・・><

いやー、この問題なんだけども職場ではMacbook Pro使ってて家ではMacbook Air使ってるんですが、自体のMacのVScodeでしか起きなくて放置してたんですが、ちょっと調べて見るかーと思ったら普通にマーケットプレイスのVimプラグインのページに丁寧に記載があったのですぐ解決できたって話\(^o^)/

marketplace.visualstudio.com

のページの以下の部分

To enable key-repeating execute the following in your Terminal and restart VS Code:

というわけで以下のコマンド打ったら無事解決したのでありました。

$ defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false 
$ defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false
$ defaults delete -g ApplePressAndHoldEnabled

【参加レポ】SRE Next 2020に参加してきた!

ブログに書くまでがSRE Nextというわけで参加レポ書いていくよ!
というか今年は週一ぐらいで頑張ってブログ書きたいと思っていたのに今年初ブログですわ・・・^^

まぁ、そんなわけでSRE Next2020に同僚と参加してきましたよ!

sre-next.dev

もちろん早期来場者特典のヨガから参加しましたよ!

実際に見た基調講演たち

speakerdeck.com

speakerdeck.com

speakerdeck.com

speakerdeck.com

speakerdeck.com

docs.google.com

speakerdeck.com

感想

まず基調講演を聞いていて感じたのはSREとして抱える課題が今の会社で抱えている課題と結構同じだったことにびっくりしたというか、スキルセット的な難しさもあるけど、どうSREチームとして成果を上げていくのかというのは程度の差はあれどこも課題があるんだなぁというのを知れたのは良かったというか安心したし、今自分が課題に対してやろうとしていることもずれていないというのも確認できたので一番の収穫だった!

そしてそういった課題感からなのか組織論というかチームリーディングなどの話などもたくさんあったのが印象的で、とくにそのっつさんの基調講演はとても共感でき、単純にかっこいいなぁと思ったし、こんなリーダーがいるチームは幸せなんだろうなといろいろと妄想してしまったw

やっぱり、背中で見せるのは大事だよなぁと思いつつも背中で語れるスキルが身に付いていないので頑張ろうと思いました\(^o^)/

さすがにメルカリやカヤックの基調講演は圧巻というかすごいなぁという感じでSREチームとして理想的だなぁと思える取り組みや施策、改善をきちんと進められているのがさすがという感じでした。

とにかく今の自分にとってとても有意義な時間となり、モチベーションが上がりまくった一日でした!

あと個人的に会いたかった方に会えたり、SREの知り合いが増えたのもとっても嬉しかったー!

あとメルカリブースでSREクイズ行っていて献本頂いてしまったり

ノベルティたくさんもらいまくったり

とにかく内容盛り沢山で全部おもしろくて本当に参加してよかった!

また次回開催されたら必ず参加します!

おわりに

さっそく基調講演資料をまとめてくれている方がいらっしゃるので気になる方は是非見てみてください! qiita.com

つぎはMerPey Tech Festいくぞー!

events.merpay.com

2019年の振り返りと2020年の目標

なんだかあっという間の2019年でした〜。
でもなかなか濃厚な一年でもあったような気もする。

  • 3人目の子供が産まれる(2018年末だけども)
  • 虫歯を11本治療(あとは親不知の抜歯のみ)
  • AWS触り始めてとりあえずSAA取得
  • セブ島に一ヶ月語学留学
  • 転職し、名ばかりのSREになる
  • フットサル再開
  • 柔術紫帯ストライプ2本もらうも転職に伴い道場を退会
  • ゴールドジムに入会しボディメイクに本気出すことを誓う

今年はそんな感じでした!
それでは来年の抱負をつらつらと述べようかと!

勉強

  • TOEIC700点以上
  • AWS資格5冠達成(残りSysOps/Developer/SAP/DevOpsの4つを取得)
  • 今積まれている技術書やUdemyを消化する(主にPython系を)

仕事

  • 監視基盤の再構築
  • CI/CDパイプライン構築&運用にのせる
  • GitHub、Slackの導入
  • 定期的な勉強会の実施

健康

  • 6月までの間最低週2回は追い込む
  • 体脂肪率15%を切る
  • 7月から柔術再開し最低週2回稽古を行う

その他

  • ブログを週に一度は書く

そんなわけで

2020年は一番上の子供も小学校に入ったり、生活面での変化も色々予定されているので、確固たる決意を持って2020年も頑張りたいなと思います!

今年もお世話になりました!来年もよろしくおねがいします!

【厳選】AWSアソシエイト試験を突破するための公式ドキュメントおよびチュートリアル

以下に挙げたAWS公式ドキュメントを読んでチュートリアルを実施していればAWSをいじった経験がなくてもアソシエイト試験は軽々突破できるぜよ!!

そう信じて頑張っていこうぜよ!!

コンピューティング

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

ストレージ

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

データベース

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

開発者ツール

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

セキュリティ、アイデンティティ、コンプライアンス

docs.aws.amazon.com

暗号化と PKI

docs.aws.amazon.com

docs.aws.amazon.com

マネジメントとガバナンス

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

ネットワーキングとコンテンツ配信

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

アプリケーション統合

docs.aws.amazon.com

docs.aws.amazon.com

docs.aws.amazon.com

【Python】リストの要素を頻出順でソートする

やりたいこと

例えば以下のようなリストを

[5, 4, 3, 5, 5, 5, 4, 4, 3, 2]

こうしたい場合のTipsです

[5, 5, 5, 5, 4, 4, 4, 3, 3, 2]

できあがったコード

from collections import Counter

a = [5, 4, 3, 5, 5, 5, 4, 4, 3, 2]
counter = Counter(a)
result = [k for k, v in counter.most_common() for _ in range(v)]
print(result)
# [5, 5, 5, 5, 4, 4, 4, 3, 3, 2]

色々やりかたはあると思うけど、とりあえずリストを手っ取り早く要素毎に辞書形式でカウントアップしてくれるCounterと要素数毎に返してくれるmost_common()を使って実装してみた。

まず、対象のリストをCounter()メソッドを使って要素: 要素数の辞書型で返すようにする

a = [5, 4, 3, 5, 5, 5, 4, 4, 3, 2]
counter = Counter(a)

print(counter)
# Counter({5: 4, 4: 3, 3: 2, 2: 1})

ちなみにtype関数で型を見るとcollection型になっている

>>> type(counter)
<class 'collections.Counter'>

これをさらにmost_common()を使って値の昇順で返すようにして、

>>> counter.most_common()
[(5, 4), (4, 3), (3, 2), (2, 1)]

あとは以下のようなイメージのforループを内包表記で記載すればリストの要素を頻出順でソートすることができた!

このforループを

reuslt = []
for k, v in counter.most_common():
    for _ in range(v):
        result.append(k)

こんな感じで内包表記!

result = [k for k, v in counter.most_common() for _ in range(v)]

もっと良い方法等あれば教えてつかーさい^^

GitLab CI + GitLab Pages + Sphinx で最強のドキュメントビルド環境を構築する

最近、仕事で運用しているサービスのドキュメントをもうWordで作りたくないという思いがすごくてSphinxがよさそうなのでいろいろいじってたらGitLab CI + GitLab Pages + Sphinxが最強のドキュメントビルド環境すぎたのでやり方を説明します。

前提条件

  • GitLab.comでアカウント作成済み
  • Sphinxで初回ビルドできる環境を構築済み

やること

  • リポジトリの作成とクローン
  • リポジトリのクローン
  • Sphinxでプロジェクトの作成
  • .gitlab.ymlを作成し、GitLabへPush後、CI結果を確認
  • GitLab Pagesへアクセス

リポジトリの作成とクローン

なんか適当にREADMEだけあるようなリポジトリを作成してクローンしておく

Sphinxでプロジェクトの作成

$ sphinx-quickstart -q -p sphinx-handson -a Tocyuki -v 1.0 sphinx-handson

状態の確認

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        Makefile
        conf.py
        index.rst
        make.bat

GitLabへPushしておく

$ git add .
$ git commit -m 'Create sphinx-handson project'
$ git push

.gitlab.ymlを作成し、GitLabへPush後、CI結果を確認

以下のページを参考にして.gitlab.ymlを作成する

gitlab.com

image: alpine

pages:
  script:
  - apk --no-cache add py2-pip python-dev
  - pip install sphinx
  - apk --no-cache add make
  - make html
  - mv _build/html/ public/
  artifacts:
    paths:
    - public
  only:
  - master

GitLabへPush

$ git add .
$ git commit -m 'Create .gitlab-ci.yml'
$ git push

CI結果がパスしていることを確認 f:id:tocguitar1:20190129014622p:plain

GitLab Pagesへアクセス

以下のページからGitLab PagesのURLを確認する

f:id:tocguitar1:20190129014728p:plain

画面が正常に表示されることを確認

f:id:tocguitar1:20190129014902p:plain

おわりに

GitLabでCI環境作ってしまえばGitLab Pagesへテスト後自動でデプロイされるしめちゃ便利!
GitHubはデファクトスタンダードだけど、GitLabですべて完結できるのは大きいなぁと感じました!

今後はGitLabを中心に使っていこうかなー。

参考情報

今回使用したリポジトリです。 gitlab.com

Sphinxユーザーの会 sphinx-users.jp

Amazon S3で処理速度(パフォーマンス)を上げる方法

タイムスタンプやアルファベット順などの連続するプレフィックスを使用すると、Amazon S3 の特定のパーティションに大量のキーが集中し、そのパーティションの I/O 容量がひっ迫する場合があります。

上記が原因で以下のような問題が発生することがある。

Amazon Simple Storage Service (Amazon S3) のワークロードが急増する (「リクエスト率およびリクエストパフォーマンスに関する留意事項」で説明されているリクエスト率を超える) と、ワークロードに応じて Amazon S3 のパフォーマンスがスケールされません。これに伴って、HTTP 500 や 503 エラーが発生する場合があります。

上記問題に対応するにはどうするか?

ランダムなキー名にすると、I/O の負荷は複数のインデックスパーティションに分散されます。

各オブジェクト名にランダム文字列をプレフィックスとして付加すればよいってことですねー!

aws.amazon.com

【決定版】AWS 認定ソリューションアーキテクト – アソシエイト取得までの道のり

タイトルは釣りですが、業務でちょこちょこAWSいじるようになった(仕向けた)ので、とりあえず資格も取得するぞと意気込んでおりまして、すでに合格したという体でお送りいたします!!

というのも、実はすでに有料のバウチャー付きトレーニングを受けているので取らなければならないのです/(^o^)\

追記

とりあえず以下の流れで大丈夫かな?

試験ガイドの確認

aws.amazon.com

試験ガイドを確認し、どんな試験なのかなぁ〜、というのをなんとなく把握しておく。

分野 試験における比重
分野 1: 回復性の高いアーキテクチャを設計する 34%
分野 2: パフォーマンスに優れたアーキテクチャを定義する 24%
分野 3: セキュアなアプリケーションおよびアーキテクチャを規定する 26%
分野 4: コスト最適化アーキテクチャを設計する 10%
分野 5: オペレーショナルエクセレンスを備えたアーキテクチャを定義する 6%
合計 100%


分野 1: 回復性の高いアーキテクチャを設計する

  • 1.1 信頼性と回復性の高いストレージを選択する。
  • 1.2 AWS サービスを使用した分離機構を設計する方法を定義する。
  • 1.3 多層アーキテクチャソリューションを設計する方法を定義する。
  • 1.4 可用性またはフォルトトレラント性 (あるいはその両方) が高いアーキテクチャを設計する方法を定義する。

分野 2: パフォーマンスに優れたアーキテクチャを定義する

  • 2.1 パフォーマンスの高いストレージとデータベースを選択する。
  • 2.2 キャッシュを使用してパフォーマンスを向上させる。
  • 2.3 伸縮性と拡張性を備えたソリューションを設計する。

分野 3: セキュアなアプリケーションおよびアーキテクチャを規定する

  • 3.1 アプリケーション層をセキュリティ保護する方法を定義する。
  • 3.2 データをセキュリティ保護する方法を定義する。
  • 3.3 単一の VPC アプリケーション用のネットワークインフラストラクチャーを定義する。

分野 4: コスト最適化アーキテクチャを設計する

  • 4.1 コスト最適化ストレージを設計する方法を定義する。
  • 4.2 コスト最適化コンピューティングを設計する方法を定義する。

分野 5: オペレーショナルエクセレンスを備えたアーキテクチャを定義する

  • 5.1 オペレーショナルエクセレンスを実現するソリューションの設計特性を選択する。

AWS Well-Architected フレームワークのホワイトペーパーを確認

aws.amazon.com

AWS Well-Architected フレームワークのホワイトペーパーを確認し、特定のアーキテクチャがクラウドのベストプラクティスに沿っているかどうかの指標を理解する。

AWS クラウドサービス活用資料集を確認

aws.amazon.com

いわゆるブラックベルトですね!主要サービスのものは一通り確認しておくべし!

併せてホワイトペーパーガイドと API リファレンスも見ておくとなおよし!

AWSのサービスを実際にいじってみる

aws.amazon.com

aws.amazon.com

aws.amazon.com

AWSではさまざまなチュートリアルが用意されているので、チュートリアルに沿って実際に手を動かしてみると理解もめちゃくちゃ深まります!というかサービスをまったく使ってなくて試験受けるとなるとほんと暗記だけで終わってしまうので実際のサービスは一通りいじっておくことをオススメします。

サンプル問題と模擬試験の問題内容解析

サンプル問題が公開されているので問題内容の確認と分析を行う。

aws.amazon.com

一通りのインプットが完了したら、模擬試験を受験し、現在の実力の確認と、問題内容のスクリーンショット取得を行い、問題の分析を行いましょう!

おすすめの参考書

あと年末更新されたこの参考書もおすすめです!

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

  • 作者: ??部昭寛,宮?光平,菖蒲淳司,株式会社ソキウス・ジャパン
  • 出版社/メーカー: インプレス
  • 発売日: 2019/01/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

だいたいこのぐらいやれば、きっと大丈夫でしょう!

AWSで見積もりを行う方法

AWSってすごく便利だけど、従量課金で結局いくらぐらいかかるのかがわからないから見積もりを行う方法を調べてみたよ。

公式サイト

aws.amazon.com

AWS Simple Monthly Calculator(簡易見積ツール)

calculator.s3.amazonaws.com

このツールで基本的な要件は満たせそう!

AWS Total Cost of Ownership (TCO) Calculator

https://awstcocalculator.com/

これは主にオンプレミス環境との比較で使うツールかな?

提案とかには使えそう。

というわけで

AWS Simple Monthly Calculator(簡易見積ツール)を使えばやりたいことやれそうな感じなのでした!