Slide 1

Slide 1 text

©iCARE Co.,Ltd
 Trusted Advisor の対応推奨項目の diff をとる あいさか (@mist_dev)

Slide 2

Slide 2 text

©iCARE Co.,Ltd
 自己紹介 ● あいさか (@mist_dev) ● iCARE SRE 2年生 ● Ruby💎とビール🍺が好き ○ 日本のクラフトビールが好き ● 好きなクラフトビール ○ 熊本の天草ソナービール🍺 ○ フルーツスムージーなビールがおいしい

Slide 3

Slide 3 text

©iCARE Co.,Ltd
 きょうの話 ● Trusted Advisor つかってますか? ○ AWS 的な構成最適解をチェックして教えてくれる ■ S3 のブロックパブリックアクセスちゃんと有効にしてる?とか ■ RDS のバックアップちゃんと取ってる?とか ● うちのチームでは週一で項目のチェックをしています ○ AWS SDK for Ruby v3 で取得し diff を取っています

Slide 4

Slide 4 text

©iCARE Co.,Ltd
 きょうの話

Slide 5

Slide 5 text

©iCARE Co.,Ltd
 ● region は us-east-1 に設定する 準備 require "aws-sdk" aws_profile_name = ARGV[0] client = Aws::TrustedAdvisor::Client.new( region: 'us-east-1', profile: aws_profile_name )

Slide 6

Slide 6 text

©iCARE Co.,Ltd
 ● チェックが必要な項目をレベル関係なく全件取得する list_checks で対応を要する項目を取得 checks = [] checks_next_token = nil loop do options = { language: "ja", max_results: 200, next_token: checks_next_token }.compact results = client. list_checks(options) checks_next_token = results.next_token checks << results.check_summaries break if checks_next_token.nil? end

Slide 7

Slide 7 text

©iCARE Co.,Ltd
 list_recommendations で対応を要する項目を取得 ● マネジメントコンソールの赤い(error)実施推奨項目を取得する recommends = [] recommends_next_token = nil loop do options = { status: "error", next_token: recommends_next_token }.compact results = client. list_recommendations(options) recommends_next_token = results.next_token recommends << results.recommendation_summaries break if recommends_next_token.nil? end

Slide 8

Slide 8 text

©iCARE Co.,Ltd
 取得した結果をマージ ● 取得した結果をマージし、error項目のタイトルだけをresultとして抽出する ○ 結果は arn で突き合わせる result = recommends.flatten.filter_map do |recommend| check = checks.flatten.find { |check| recommend.check_arn == "arn:aws:trustedadvisor:::check/#{check.id}" } check if check && recommend.resources_aggregates.error_count > 0 end

Slide 9

Slide 9 text

©iCARE Co.,Ltd
 ● 先週分と比較した diff が確認できる ○ こんなかんじで確認できる。便利 できた

Slide 10

Slide 10 text

©iCARE Co.,Ltd
 ある日の diff ● \突然の日本語化/ ○ スルーしたよ

Slide 11

Slide 11 text

©iCARE Co.,Ltd
 ©iCARE Co.,Ltd
 Thank you.