awsに接続してssh_configを生成するec2sshというツールがあるのだけど、awsやazコマンドで得たjsonをjqで加工して似たようなことができそうだなと思ったのでやってみた。 awsの場合は、以下のようにaws-cliでec2の情報を取得してjqに渡してやればいい。ユーザ名は取得できないので、必要であればjqの処理のとこに(決め打ちになってしまうが)追記してやればいい。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|(.Tags[]|select(.Key == "Name")|.Value...

先日にLambdaで外形監視を行ってDatadogでアラートを出させるという内容を書いたけど、それとは別でSSLの証明書についても監視をさせたいということがあった。 で、同じようにLambdaで証明書の残日数を取得してDatadogに連携させ、Datadog側で残日数以下の場合にはアラートを出させる事で対応できそうだったので、やってみることにした。

以下のようなNode.jsのコードをLambdaで定期実行(1日1回くらいでいいと思う)させ、Datadogにメトリクスとして証明書の残日数を通知させる。 (※サンプルコードってことでタイムアウト等の際は何もしてないけど、本当にちゃんとやるならタイムアウト時にもDatadogへのポストで関数作って呼び出したほうが良いと思う)


Lambdaで外形監視をしてサービスダウンしたらDatadogでアラートを出させる

Datadogで監視をしているシステムで外形監視をしたいということがあったのだけど、Datadogで用意されている外形監視の方法というのがDatadogエージェントが必要になってしまう。 それだと監視用のホストで余分にお金がかかってしまうので、Lambdaから1分間隔で監視をして、連続してアクセスできなかった回数をメトリクスとしてDatadogに転送させることで外形監視をさせることにした(3回連続で失敗したらアラートを出させる)。

Lambdaの環境変数を使っているので、「ERR_COUNT」でデフォルト値0で定義しておくのを忘れずに行うこと。 httpステータスが200以外の場合はア...


AWSのELBで、IAMを使って証明書を管理している場合に、WEBコンソール上からだと証明書のアップロードをして変更する際にエラーが出たり、証明書の削除ができなかったりといったことがある。 で、じゃあどうすればいいのかというと、基本はaws-cliを使って対応するのがセオリーのようだ。以下、備忘でコマンドを残しておく。

まず、事前確認として以下のコマンドでIAM管理している証明書の一覧を取得する。

aws iam list-server-certificates | jq -r '.ServerCertificateMetadataList[].ServerCertificateNam...

AWSの昨日までの各サービスの利用料金をSlackに通知させる

AWSで、昨日までの各サービス、アカウント全体での利用料金についてSlackでポストさせるようにしたかったので、とりあえずPythonで簡単なスクリプトを作ってみた。
Lambdaでやってもよかったのだが、手元にあるジョブサーバを使わないといかんという使命感の元普通にサーバ上で動くようにした。認証情報についても事前にexportしとけばいけるはずなのだが、とりあえずスクリプト内で記述するようにしてる。
利用料金についてCloudWatchに連携されている必要があるので、事前にCloudWatchへの連携をしておくこと。
ライブラリとしてboto3とSlackWebを使っている。


仕事で、S3のバケットごとの利用容量取得を行う必要があったので、その備忘。
スクリプトをわざわざ作るのは面倒だったので、とりあえず以下のコマンドで取得した。

aws s3 ls | awk '{print $3}' | xargs -I{} sh -c 'echo {}:$(aws s3 ls s3://{} --recursive --human-readable --summarize | awk -F: "/Size:/{print \$2}")'

AWSでElastiCacheにRedisを使っているのだが、その死活監視について調べていたところ、どうもパフォーマンスなんかはDatadogで取得出来そうなんだけど、死活監視って形では用意されていないようだった。
で、redis-cliでなら簡易的なヘルスチェックが出来そうなので、それで当面は対応しようかと思ったので、その備忘。

やることは単純で、redis-cliでping実行して、それでredisが上がってる(PONGが返ってくる)ようなら正常終了(exitコードが0になる)するので、それで判断する。

redis-cli -h Redisサーバのホスト ping

...

転職先ではAWSとAzureを使用しているのだけど、結構VM(仮想マシン)とPublicIP(グローバルIP)、PrivateIPの紐付けを忘れてしまう事が多い。
で、いちいちWEBでアクセスして・・・とかやりたくないし、将来的には定期的にCSVとかで一覧を生成させて整形、あとはそれ見ればいいようにしたいので、Macからawsコマンドでその辺りの情報を取得させるようにした。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | {InstanceName: (.Tags[] | select(.Key=="Na...