AWSで特定のroleからmanaged policyをawscliで外す方法

awscliの以下の公式ドキュメントを見れば済む話なんですが、今日調べて使ってみたので覚え書きとして残しておくための記事です。

detach-role-policy — AWS CLI 1.15.77 Command Reference

あるEC2に付いているroleにmanaged policyがattachされていて、それを一時的に外したいという状況が出てきたので使ってみました。

各種値は変えていますが、こんな感じで使いました。

aws --profile dev iam detach-role-policy --role-name dev-frontend --policy-arn arn:aws:iam::<num>:policy/frontend

普段仕事ではterraformでAWSのリソースを管理しているのですが、今回扱おうと思ったリソースの実際の値とterraform.tfstateで管理している値にズレがあるのか、terraform planで差分を確認すると結構差分が出てきてしまい、どちらが正しいのかすぐに判断できなかったのと、managed policyを外して確認したいことがあったので、一時的な処置として aws detach-role-policy を使用することにしたというのがいきさつです。

正直IAM roleとかpolicyのことをしっかり理解できてはいないので、おっかなびっくりやっています。というか運用のことを考えるとAWS IAMってすごく難しくないですかね?と思う毎日です。

ansibleコマンドを使って各ホストにコマンドを流すやり方

ちょっとしたTipsでしかないけれど、ansibleのinventory fileに登録されているホストにコマンド流したいときが割とあり、多用しているのでメモとして残しておく。

ansible -m shell -a "<command>" -i <inventory file> <host-pattern> [options]

より具体的にすると、たとえばこんな感じになる。(ファイル名などは変更している)

ansible -m shell -a "ls -l /etc/td-agent/conf.d/" -i development.ini api* -u taku -b -v

これは、td-agentの設定ファイルが各ホストで違う場合、何が違うのか知りたくなったりしたときに使った。

inventory file内で適切にグループやホストが書かれてさえすれば、host-patternの箇所を変更すれば自分の望みのホストの状況調査ができるし、commandの箇所を変更すれば知りたい情報を望みの形で出せるようになる。

シェル芸みたいなことを駆使できる人なら -a “<command>” のcommandの箇所をいじくり回して自由自在に活用できるのではないだろうかと思ったりしている。

だいたい Ctl + R をしてシェルの履歴から引っ張ってくるのだが、たまに ansible -m fetch などして中々履歴が出なかったりすることがあり、コマンドの詳細を忘れがちだったので一旦ここにメモしておきたくて書いた。

terraform initしようとしたらInvalidClientTokenIdというエラーが出たけど理由が下らなかった話

仕事ではガッツリterraformを使っていて、今やっている作業でちょっとしたエラーに引っかかったので、記録を残しておく意味でブログ執筆。

terraformのバージョンはv0.11.7(のはず)。

$ terraform --version
Terraform v0.11.7

タイトルに書いたとおり下らない話なのですが、terraform initしようとしたらInvalidClientTokenIdとエラーが出ました。こんな感じです。

$ terraform init
...
...

Initializing the backend...

Error configuring the backend "s3": InvalidClientTokenId: The security token included in the request is invalid.
    status code: 403, request id: <masked>

Please update the configuration in your Terraform files to fix this error
then run this command again.

で、ここで少し迷路にはまってしまったのですが、業務でterraformなりawscliなどを扱っている時はIAM roleやassume role, switch roleが*1駆使された設定を使用するようになっているので、自分に与えられた権限だといじれないのかなと思ってしまい、自分の設定を調べ直して時間を少し浪費してしまいました。

根本的な原因はs3 backendのコード内のprofileが間違った値になっていたため、正常に読み出せなかったということが分かりました。

terraform {
  backend "s3" {
    profile = "old" # 本当はnewというprofileにしないといけない
    region = "ap-northeast-1"
    bucket = "terraform-tfstate-bucket"
    key    = "test.tfstate"
  }
}

www.terraform.io

自分の設定を最初に疑って時間を使ってしまいましたが、エラーログにも Please update the configuration in your Terraform files to fix this error と出ていたのだから、まずterraformのコードを確認しておけばよかったですね。

だいたいの答えは(エラー)ログに出ている、そんなことを再度確認したというお話でした。

*1:正直assume roleとかswitch roleとか理解してない

『Webデザイン良質見本帳』を読んでWebデザインの基本的なスタイルを学んでいる

「ペース的に間に合わないのではないか?」と思いつつ、2018年の抱負の一つに「[UI|UX|Web]デザインを勉強して、自分でプロトタイプを作れるようにする」というものがあるので、思い出しては少しずつWebデザイン関係のことを調べたり、Adobe XDなどツールの使い方を勉強しています。

ただ、Webデザインやデザイン一般のことを勉強していると、「(どの場合でも大切だけど)『じゃあ具体的にこういうサイトを作りたいときはどうすればいいの?』と思ってしまうくらいに抽象度が高い事柄」か「『これってデザインの勉強というよりか、デザインツールの使い方を覚えてるだけでは?』と思うくらいにツールの使い方に寄りすぎている事柄」がよく目について、Webサイトを構築する際に情報設計を含めて抽象的過ぎず、かといって細々とした実装寄り過ぎないやり方や実例を提示してくれる所がほぼ見つからなくて難儀しています。

プログラミングでたとえると「各デザインパターンとそれを適用している具体的で短めな実装例」が欲しいのですが、書籍やサイトを色々探していても自分にぴったり合うものがないという状態です。

そんな中見つけた本が(100%ではないにしろ)割と自分の要望にあっていたので紹介します。

Webデザイン良質見本帳 目的別に探せて、すぐに使えるアイデア集

Webデザイン良質見本帳 目的別に探せて、すぐに使えるアイデア集

この本はタイトルの通り、良質なWebデザインのサイトをカタログ化した本です。

私がこの本を読んでいてためになったのは、「配色から考えるデザイン」「業種・ジャンル別から考えるデザイン」など、ある一定の切り口から考えたデザインの実例を提示してくれているところと、提示されている多くの実例で 配色の種類をRGB値を含めて提示してくれているところです。

たとえば医療・病院サイトの場合とアートフェスなどのイベントサイトの場合ではサイトの作り方の違いが出てくると思いますが、この本はそういった違いを一覧化してそれぞれのサイトの場合の特色をわかりやすく提示してくれてるところが私にとってはって有用なポイントでした。

加えて、提示されている各実例に使われている色の種類がRGB値で提示されているので、配色のベースカラー、メインカラー、アクセントカラーの組み合わせ方の参考にもなるところが嬉しいポイントでした。

配色の理論的なこともおさえつつ(Web)デザインのことを学んでいくのは素人には結構骨が折れる作業だと思いながらやっていますが、少しずつ進めていくよう、やっていきたいと思います。

Terraformを適用するときの差分を事前確認するときに楽できるライブラリを使ってみた

仕事でterraformを使っているのですが、いつもterraform plan時に差分が分かりづらくて難儀していたところ、職場のslackでこんなソフトウェアが紹介されて使ってみたら便利だったのでブログに書いてみます。

github.com

正直READMEを見てみれば一目瞭然なんですが、terraform plan時に何が変更・追加されるのか色分けされるようになり分かりやすくできるというソフトウェアです。

Ruby製のソフトウェアなので、gemでinstallしたあとは、こんな感じで私用するとterraform planの差分が分かりやすく表示されます。

terraform plan -target=aws_security_group.test | landscape

terraformをある程度以上本格的に使ったことがある人なら同意してくれると思いますが、terraform planで表示される差分は色分けされてないことに加えて、変更されていない箇所も含めて表示されるので一生懸命読まないと差分が理解できないという面倒くささがあります。

この面倒くささをかなり軽減してくれそうなので、しばらく使ってみることにします。

RWO 2nd editionの9章を雑に学習した

最近OCamlの学習も止まっていたので、ゴールデンウィーク最終日に少しでもいいから手をつけてみようと学習再開してみた。

Real World OCaml

9章はFunctorを学ぶ章。最後の項目の"Extending Modules"はまだ手をつけられていないが、それ以外はutopを使い実際のコードを打ち込んでみて手を動かしてみた。

何となくしか理解ができていないので自分で活用するところまではいかなそうだと思ったので、時間を空けて復習したい。

面白そうな本を見つけたので買って読み始めた

誰が音楽をタダにした? 巨大産業をぶっ潰した男たち (早川書房)

誰が音楽をタダにした? 巨大産業をぶっ潰した男たち (早川書房)

たまたま寄った本屋で見つけてパラパラと目次を立ち読みしたら面白そうだったので購入して今読んでいる。

漫画村の騒動やそれに付随したブロッキングの話題が最近あるので、マンガ、アニメの海賊版の先行事例とも言える音楽業界の事例はどうだったのだろうと思って読んでいる。

読み終わったら書評を書きたいところ。