もりはやメモφ(・ω・ )

インフラなエンジニアからSREへ

AWS WorkspacesのDirectryを削除しようとしたら "Cannot delete the directory because it still has authorized applications" が出る対策

検証で利用していたAWS Workspacesのお掃除をしていたところ、以下のエラーが発生して消せなくて焦りました。

An Error Has Occurred Cannot delete the directory because it still has authorized applications. Additional directory details can be viewed at the Directory Service console.

f:id:morihaya:20200403171821p:plain
エラー画面

対策: 利用中のアプリを先に削除する

原因は全てのアプリを削除していないためでした。エラーメッセージのリンク先に飛ぶと、ディレクトリの詳細ページが表示され、以下のように利用中のアプリケーションの一覧んを確認できます。

この図では Amazon WorkDocsEnabled になっているため、ディレクトリを削除できなかったのです。

f:id:morihaya:20200403172317p:plain
利用中のアプリ一覧

リンク先へ飛びWork Docsも削除します。WorkDocsの削除画面には親切なことに I also want to delete the user directory オプションが表示されましたので、チェックを入れて削除を行います。

f:id:morihaya:20200403172624p:plain
WorkDocs削除画面

念のため Workspacesのディレクトリ一覧に戻ると、 deleting ステータスを確認できました。こちらでお掃除が完了です。

f:id:morihaya:20200403172949p:plain
削除されつつあるディレクトリの図

まとめ。

GUIでサクサクと起動できるのはいいですが、裏で複数サービスが連携して作成されることで、一箇所で削除ができないのはよくある話ですが、直面すると少し焦りますね。

awsコマンドでEC2のGlobal IPとPrivate IPを取得する1行コマンド

開発者から「IPアドレスの一覧が欲しい」と言われて必要になったので作りました。メモとして残しておきます。

aws ec2 describe-instances | jq -c '.Reservations[].Instances[] | [ (.Tags[]? | select(.Key == "Name")).Value, .PrivateIpAddress, .PublicIpAddress]' | sed -E 's/\[|\]//g' | sed -E 's/,/\|/g' | tr -d '"' | sed -E 's/^/\|/g'| sed -E 's/$/\|/g' | sort

すると以下のような結果が取れます。(IPはサンプル)

|morihaya-test-01|192.168.1.13|203.0.113.1|
|morihaya-test-02|192.168.2.11|203.0.113.2|

ヘッダーをつけて、esaなどのMarkdown対応なドキュメントに載せます。

| Hostname | Private IP | Public IP |
| --- | --- | --- | 
|morihaya-test-01 |192.168.1.13|203.0.113.1 |
|morihaya-test-02|192.168.2.11|203.0.113.2 |

すると以下のように一覧になって良さ、という話でした。

Hostname Private IP Public IP
morihaya-test-01 192.168.1.13 203.0.113.1
morihaya-test-02 192.168.2.11 203.0.113.2

もちろんサーバは日々変動することがあり、現実とのデグレが発生する未来が見えるので必要なメンバにAWSコンソールを渡してしまうのも手なのですが、ささっと閲覧可能なドキュメントとして作る分には良し。

Prometheus Meetup Tokyo #3 に参加してきました

1/15に 行われた Prometheus Meetup Tokyo #3 にブログ枠で参加してきました。

prometheus.connpass.com

  • Prometheusと私
    • 昔ちょっとだけ触った
    • 今は全然触ってない...
    • 参加のモチベーション
  • Prometheus Meetup Tokyo #3の感想
    • 会場
    • 1 - Remote Write API と Thanos を活用したメトリクス永続化 (仮)
    • 2 - Victoria Metricsで作りあげる大規模・超負荷システムモニタリング基盤
    • 3 - 次世代のログ基盤 Grafana Lokiを始めよう!
    • LT
      • イベントネットワークのlog監視をlokiでやってみた - gen16k
      • レガシー環境でも Prometheus はイケるんです - Kazuhito_Omachi
      • Prometheus でデータの水平分割を試みる - watawuwu
      • Lokiでjurnal logを可視化する方法 - yosshi_
      • Grafana/Lokiの開発元にfluent-bitのプラグインを作成してフィードバックした話- Hiroshi Hatake
  • まとめ
続きを読む

ALBとTargetGroup一式をTerraformにimportしてみる

年の瀬に何やってんだという感じではありますが、ちょっとしたタスク整理でALB一式をTerraformに落としたくなる場面があったので作業メモを残します。*1 試行錯誤した結果をそのままメモとして残していきますので、上級者が良いやり方をまとめた記事ではないことにご注意ください。

  • importするリソース
  • 前提
  • 作業開始
    • Terraforming準備
    • Terraformingでimportしようとしたが...
      • ALB
      • TargetGroup....はTerraformingにはないっぽい
    • 仕切り直しでTerraformerを準備
    • TerraformerでALBをimport
    • TerraformerでRoute53を追加でimport
    • Terrafomerが生成したファイルを確認して、利用したいものだけ拾っていく
      • lb.tf
      • lb_listenere.tf
      • lb_listener_rule.tf
      • lb_target_group.tf
      • lb_target_group_attachment.tf
      • リファクタリング
      • 手動でterraform import
      • target_group_attachmentはimportできないので諦める
    • VPC周りをdataで用意
    • SecurityGroupも追加
    • cognitoのimport
    • 仕上げ
    • 今後やること
  • まとめ

importするリソース

Importしてコード管理したいのは、以下のリソースです

  • ALB
  • TargetGroup
  • Cognito --> 残念ながらCognitoのimportは対応してませんでした、現状は手書きしてimportしかなさそうです *2

*1:早速昨日の振り返りが生きてる

*2:本来はRoute53も管理したいところなんですが、諸事情で別アカウント管理になっているため割愛しています

続きを読む