terraformのバージョンを上げようとしたらハマったのでメモしておく
terraform 0.9.11を使っていたが、あるとき0.10系がリリースされたのでバージョンアップを試みたところ、かなりハマってしまったのでメモ。
tl;dr
terraform init -backend-config=/path/to/config -reconfigure
続きを読むAWSのコストを取得するgemを調べた
AWSは料金表を提供していますが、JSONを取得してごにょごにょ…と自分でやるのは何か違う気がします。どうせgemくらい誰か作ってるだろう、ということで少し調べてみました。
tl;dr
今のところamazon-pricingを使うか、やっぱり自前で書くのがいいのではないか。
調べたもの
(amazon|aws).*(pric|cost)
みたいなものを探すと見付かったのは以下の4つ
- aws-pricing (0.7.0)
- awsprice (0.0.5)
- amazon-pricing (0.1.97)
- awscosts (0.0.12)
aws-pricing
EC2、RDS、ElastiCache、CloudFront、EMRに対応している。最終更新が2012年でメンテされている様子がない。
awsprice
EC2しかなさそう。Homepageに設定されているのがGithubでなく、飛んでもDNSが引けなくて何も情報がない。
amazon-pricing
EC2、RDS、ElastiCacheあたりのデータが取れる。メモリの情報などもついでに取れるようにベタ書きしてあるが、ElastiCacheのm4など、更新が追い付かず抜けているものがある(PR済み)。メモリが1GBを切っていると0GBになってしまう(PR済み)。
awscosts
RDSがない。S3、EMRがある。東京リージョンのデータが取れるかどうかテストされておらず、EBSのデータが取れない(PR済み)
RDS logをRubyでダウンロード
AuroraのAudit log検証をしていて、「これ定期的にS3にアップロードしないと消えるよね?」って話になったので、まずはRDSから取ってくるとこからだね…ってことでやってみることにしました。
候補手段
方法はいくつかあるんですが、
1. rds-cliを使う
もうdeprecatedだそうで、今後メンテされないものを今から使い始めるというのはいかにもセンスがないので却下。
The Amazon RDS Command Line Interface (RDS CLI) has been deprecated. Instead, use the AWS CLI for RDS.
2. aws-cliを使う
アリなんですが、aws-cliだとrds download-db-log-file-portionというコマンドになり、最大1MB単位でしかダウンロードできず、何度も呼び出して連結して…という処理を書くのがめんどくさいので避けたいところです。
download-db-log-file-portion — AWS CLI 1.11.118 Command Reference
3. SDKを使う
2の方法だとshell scriptで繰り返し処理を書くのがめんどくさいということで、RubyなりPythonなりで書くのが現実的でしょう。SDKでダウンロードするAPIもあります。
Rubyだと Aws::RDS::Client#download_db_log_file_portion が用意されています。ただ、2とほぼ同様にmarkerをリクエストに入れて何度も呼び出す仕組みであり、めんどくさい…
4. DownloadCompleteDBLogFileを使う
[Tips] Amazon RDSのログファイルから全てのメッセージを取得する方法 | Developers.IO でも紹介されている方法です。ここではPythonでやっていますが、今回Rubyで書きたいなと思ったのでRubyでやってみました。
ということで以下は実装
続きを読むterraformのprovider aliasを使うときのtips
最近よくterraformで構成管理とか構築をやってて、ハマったのでメモ。
やろうとしたこと
AWS ap-northeast-1で主な構成を組んでいて、CloudFrontでの静的コンテンツ配信をhttpsで行いたい。このときACMを利用するが、証明書はus-east-1に配置する必要がある。
証明書の発行はWeb画面でやったので、terraformにはdata aws_acm_certificateとして利用することにした。
このときリソースの場所は普段ap-northeast-1のため、明示的にus-east-1を指定してやらないと意図した証明書が得られない(あたりまえ)。
このためには以下のサイトのように、provider aliasを使ってregionを指定し、data resourceでproviderを指定する。
これで全てはうまくいく、はずだった。
続きを読むはてなブログに移行しました
ふと思い立ったのではてなダイアリーからはてなブログへと移行を行いました。
既存記事は移行ツールにより全てリダイレクトされているはず…
一番人気の Server::Starterに対応するとはどういうことか - limitusus’s diary も正常に移行されています。