Welcome to ny1030Note🙌

I am into software engineering, gadget, food, sleep

AWS CLI スニペット集

ユースケース別 Operation(運用) RDS_特定の認証局証明書を利用しているインスタンスの列挙 WIP RDS_利用可能な認証局証明書の確認(RDS for PostgreSQL) 結果が大量にあるため、下記例では --engine で RDS for PostgreSQL のみに絞っている aws rds describe-db-engine-versions --engine postgres | jq -r '.DBEngineVersions[] | [.Engine, .EngineVersion, .SupportedCACertificateIdentifiers] | @csv '

11月 20, 2023 · 1 分 · Y Nakajima

AWS運用_RDS,Aurora SSL,TLS certificate expiresの対応

概要 AWS RDS/Auroraを利用しており、クライアントがSSL/TLSを使って接続している場合、Amazon RDS 認証局証明書(rds-ca-2019)の更新が2024/08までに必要。 (AWS Document) SSL/TLS 証明書のローテーション 対象の調査 対象となるRDSの列挙 RDS_特定の認証局証明書を利用しているインスタンスの列挙 のコマンドで対象インスタンスを調べる 上記結果で、rds-ca-2019を利用しているものが更新が必要。また、更新可能な証明書は [RDS_利用可能な認証局証明書の確認(RDS for PostgreSQL)](../AWS%20CLI%20スニペット集/index.md#RDS_利用可能な認証局証明書の確認(RDS for PostgreSQL)) のように確認できる SSL/TLSを利用しているか調査 (AWS Document) PostgreSQL DB インスタンスで SSL を使用する まずはRDS側でSSL接続を利用しているかどうかは rds.force_ssl で確認可能 $ aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-postgresql13 | jq '.Parameters[] | select(.ParameterName == "rds.force_ssl")' 出力例: ParameterValueが0のため、SSLは必須ではない。SSL接続が確立できない場合はSSL接続が利用されない。 { "ParameterName": "rds.force_ssl", "ParameterValue": "0", "Description": "Force SSL connections.", "Source": "system", ... }

11月 20, 2023 · 1 分 · Y Nakajima

AWSリソースの移行をFormer2で実施

Background 本番環境だけ作っていたシステムがあり、DBMSなどの大幅なバージョンアップを計画しており、流石にテストが必要ということで、検証環境を別AWSアカウントに作ることになった。 EC2, RDSなどのリソースしかない簡単なスタックだが、SGの設定なども移行するとなると割と面倒なので、既存のリソースを使った方法で楽に作れないかを模索。 以下のFormer2という既存のリソースからCloudFormationやTerraformのコードを生成するツールがあることを発見。 https://github.com/iann0036/former2 Former2の使用 以下のWebサイトで自身のAWSアカウントのクレデンシャルなどを登録すると、SDK APIでリソースを解析してテンプレートを生成してくれる模様 https://former2.com/# ただ、流石に上記のサイトにクレデンシャルを登録するのは気が引けるので、Dockerを利用してスタンドアロンでFormer2を使う方法を試した。 Former2(スタンドアロン版)の使い方 以下リポジトリをクローンする https://github.com/iann0036/former2 rootディレクトリで docker compose up -d でビルドおよび起動をする 127.0.0.1 をブラウザで開くと、Former2が表示される 案内の通り、Chrome拡張機能をインストール https://chrome.google.com/webstore/detail/former2-helper/fhejmeojlbhfhjndnkkleooeejklmigi 解析対象のリソースがあるAWSのクレデンシャルを入力 Cloud Formation のパラメータを入力、とりあえずはここは未設定 最後にここの画面の緑色の Scan ボタンを押すとスキャンが始まる、不足している権限があると都度ポップアップで表示される。 また右上にリージョンの設定があり、デフォルトではバージニア北部になっているので要確認。 スキャンの途中でサイドバーからRDSを見てみると すげえ!!ちゃんと表示されてる。 Describeの内容を表示してるだけなんだけど、自分の手元でこうやって一覧を見れるのはテンションが上がる。 気になったところ スキャンする際に全てのリソースがスキャンされるのか? 全てをスキャンするのは便利であるものの、自身のM1 MacBookProだと、10分経過したあたりでブラウザが一度ハングした。全てスキャンした後の画面ではフィルタの機能などはあるのはわかるが、スキャンする前に特定のリソースをスキャンできないのか? 調べた&使ってみた結果、出来なさそう。なのでリソースが沢山ある場合はスキャンに数時間かかることと、キャッシュされてない状態で開いた際にリソース情報のロードに時間を要することは念頭に置いて使った方がいい。 スキャンした情報は永続化できる? Dockerプロセスを停止=>起動して試したが、スキャンした情報は残ってたので永続化はされてそう。ただし、Former2起動直後はリソース情報をロード中で、何も出てこないように見えるので注意。 テンプレート作成可能なリソースタイプ EC2やRDSなど基本的なサービスは対応しているが、以下のダッシュボードから確認した限りだとSecurity Groupなどは作成できない。 SecurityGroupに色んなルールを追加している場合は移行がめんどかったりするので、痒い所に手が届かない感じはする。 自分はChatGPTの力を借りて、SecurityGroupのルールを別アカウントに移行してくれるPythonスクリプトを作成した。 import boto3 from dotenv import load_dotenv import botocore import os # .envファイルから環境変数を読み込む load_dotenv() source_account_access_key = os.getenv("SOURCE_ACCESS_KEY") source_account_secret_key = os.getenv("SOURCE_SECRET_KEY") dest_account_access_key = os.getenv("DEST_ACCESS_KEY") dest_account_secret_key = os....

8月 3, 2023 · 1 分 · Y Nakajima

Microsoft SQL Serverのパフォーマンス解析

諸々の理由で業務システムのデータベース製品にSQL Serverを使っており、そこで問題が起きた際に解析できるようのメモ。 RDS for SQL Server を使ってる場合 AWSのRDSでSQL Serverを使っている場合は、AWSネイティブの以下モニタリング機能を使うのがベター。 拡張モニタリング CPU使用率の内訳が見れる(idleやsys, usrなど) Performance Insight 時系列でロングランしているSQLや何で待機しているか等の情報が見れる どちらもゼロダウンタイムで有効化ができる1。 GCPやAzureは調べてないが、Azureは少なくとも同様のモニタリング機能があるのではと想定。 調査用のSQL クラウド・オンプレ関わらず、SQL Serverにログインできるのであれば、以下クエリで各種調査を行う。 所要時間が大きいSQL、CPU時間など SQLの性能問題を解析する際は所要時間が大きいものから一般的には解析していくため、以下のSQLでトータルの所要時間を表す「TotalElapsedTime(sec)」をまず確認。 あわせて、CPU時間やIO回数などの情報も取得している。とりあえず所要時間だけ見たい際はコメントアウトするのが良い。 SELECT TOP 100 t1.total_worker_time / t1.execution_count / 1000 as "avg cputime(ms)", t1.max_worker_time /1000 as "max cputime(ms)", t1.total_worker_time / 1000 as "total cputime(ms)", t1.total_elapsed_time / 1000 as "TotalElapsedTime(sec)", t1.total_logical_reads / t1.execution_count as "avg read count", t1.max_logical_reads as "max read count", t1.total_logical_reads as "total read count", t1.execution_count as "exec count", t2....

3月 20, 2023 · 1 分 · Y Nakajima

M1 MacでOracle SQL Developerを使う場合

M1 MacBookProでOracle社のSQL Developer1というSQLクライアントを使っていると、上手く出来なかったり、頻繁に異常終了することがある。 対処法として、 arch コマンドを使って起動することで、安定して利用できることを確認。 arch -x86_64 /Applications/SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh SQL Developer ↩︎

2月 15, 2023 · 1 分 · Y Nakajima