ようへいの日々精進XP

よかろうもん

2020 年 02 月 05 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 引き続き, お休み
  • 急いで会社を後にしたけど, 病院がお休みだった...orz

ギョーム

  • 引き続き, CloudFront での CORS 設定の調査やら
  • 引き続き, カスタマーサポートのお手伝いやら
  • RDS を操作するツールがほぼほぼ完成, 合わせて, 負荷検証を一気通貫で実行出来る仕組みが出来たので pgbench で負荷試験

色々と学びの多い一日だった. 以下のツイートで振り返る.

夕飯

  • 豚の角煮, 奥さんは失敗作と謙遜するが, 相変わらず美味しかったと思う

つかれた

2020 年 02 月 04 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 引き続き, お休み
  • 仕事帰りに病院にて電気治療等

ギョーム

  • カスタマーサポートのお手伝いやら
  • CloudFront での CORS 設定の調査やら
  • 今期の目標等を考えたり
  • RDS を操作するツールがもうすぐ完成しそう

夕飯

  • 手羽中のソテー
  • 女将のお品書きもだいぶん上手くなってきている感じ

別大マラソン 2020 を 30 キロでリタイヤしたけど振り返る 〜 これが今の俺の実力, なんだかんだ言ってもやっぱり悔しい 〜

tl;dr

ゴール出来るか怪しいですが、とりあえず走ってきます❗奥さんをはじめ、支えてくださった皆さん、今までありがとう。

結局, ゴール出来なかったけど別大マラソン 2020 を振り返りたいと思います.

レース KPT

Keep

  • なんだかんだ言って 30 キロまでは走ることが出来た

Problem

  • 背中が痛くて呼吸がし辛かった
  • そもそもスタートするべきではなかったのかもしれない

Try

  • とりあえず, 今は背中を治す
  • 暫くは走れないので, その間に足も治す

言い訳 (でしかない)

スタート前からケガの連続でした.

  • 12 月 中旬に右足太腿裏側の軽い肉離れ
  • 忘れもしない 1 月 26 日から, 突然の背中の痛み

右足太腿の肉離れを抱えたまま鹿児島 30K を走り, その後, まともに走れるまで三週間くらい. 年が明けてからやっと走れるようになったと思ったら突然の背筋痛. 今日, 整形外科に行ったら背骨と肋骨の間の関節を痛めているとのことで満身創痍感に包まれています.

とりあえずスタートしてみよう

走り始めたら奇跡が起きて背中や足の痛みから開放されて, さらに自己ベストで走れるんじゃないかという, なんの根拠もない期待を胸に走り出すことにしました. 父と母, これまでそばで支えてくれた奥さんの為にも頑張りたい.

スタートして最初の 5 キロは予定よりも速いペース 19 分 40 秒くらい. でも, やっぱり背中の痛みは消えない. 解っていたことだけど, 背中が痛いと呼吸がし辛い.

f:id:inokara:20200203185048p:plain

最初の 5 キロが思ったよりも速かったので次の 5 キロはペースを少し落としつつ 10 キロ通過, 10 キロ過ぎたあたりから背中の痛みや給水時にむせたりすると更に背中の痛みが. 耐えられなくなって一旦停止. ストレッチとか色々とごまかしながら歩くくらいのペースで前に進みますが, どんどん後続のランナーに抜かれていきます.

どこで止めるか

他のランナーさんはどうかわかりませんが, 自分は一旦止まってしまうと後は滑り台を滑り落ちるようにモチベーションも下がって後はどこで止めるか, 止め時を探るためだけに走り続けることになります.

沿道の声援がとても有り難いのですが, この状態の自分にとっては苦痛になってしまい泣きそうでした. どこで止めるか, どこで止めるか, そんなことだけを考えながら 25 キロまできました.

奥さんや両親とは弁天大橋の手前で出会う予定だったのでそこまでは走るつもりで, 背中の痛みを和らげる為, 道路の真ん中で跪いてストレッチをしたりしながら走りました.

弁天大橋を超えて, 500 メートル程走ったところで...

リタイヤ

フルマラソン 9 回目にして初めてリタイヤしました. あっけないものでした.

ナンバーカードについているチップを外して役員のおじさんに手渡すだけ. 去年から一年, 色々と頑張ってきたことがあっさりとこんな風に終わってしまうのかという切なさと, 弁天大橋手前で応援してくれた奥さんや両親への申し訳無さで涙が出ましたが, 同時によくここまで走れたと自分で自分を褒めました.

背中の痛みに耐えながら, 徒歩でゴールとなる大分市陸上競技場に徒歩で戻りました.

忍び込むように陸上競技場に戻り, 既にゴールしているランナーたちの間を隠れるように歩き荷物を受け取り着替え. まだ, 2 時間 30 分前後くらいでゴールした選手しか更衣室にはいないので人はまばら. 自分はリタイヤ, この人達は完走, なんだろうこの格差は. 一瞬ですが, もう走ることを止めたいと思った瞬間でした.

さて

今回のマラソンは振り返る以前に, スタートすべきではなかったという思いがあります. 今朝, 病院に行ったら, 背骨と肋骨の関節を痛めている可能性があるとのことでリハビリが必要な状況です. とりあえず, 真面目にリハビリに通って出来るだけ早く完治するように努力したいと思います. そして, また, スタートライン立って必ず笑顔でゴールテープが切れるように走り続けたいと思います.

ただ, 今, 唯一言えるのは, 足が痛かった, 背中が痛かったとか結局言い訳で, 「これが今の俺の実力」ってことです.

最後に

別大マラソンに関わる全てのスタッフの皆さん, マネージャーの奥さん, 鹿児島からわざわざ応援にきてくれた両親には感謝しかありません. 本当にありがとうございました.

2020 年 02 月 03 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • お休み
  • 病院に行って背中を診てもらう, レントゲンには異常はなかったが, 触診で背骨と肋骨の関節を痛めているとのこと

両親帰る

  • 朝食後, お茶を一杯飲んで両親が鹿児島に帰っていった

ギョーム

  • 午前は通院したりしつつリモート作業
  • 午後も引き続きリモート作業
  • 背中が痛すぎて創造的な作業は出来ず, 対処療法的な作業ばかりを淡々とこなす感じだった

夕飯

  • 佐世保のアジフライ, 美味しかった!

2020 年 02 月 02 日 (日)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 別大マラソン 30キロ 棄権
  • 背中やら足やら辛い状態で 30 キロまで走れてよかった

ギョーム

  • お休み

夕飯

2020 年 02 月 01 日 (土)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 山王公園を 20min くらい
  • 明日は別大なのに背中の痛みが酷すぎて辛い

ギョーム

  • お休み

別府移動

  • 別府に移動
  • とりあえず, 別府に行ったら背中の痛みが治まるんじゃないかと思って

明日は別大マラソン

  • 先述の通り, 言い訳がましいかもしれないけど, 背中に痛みがあって走れるが微妙
  • 出来る限り頑張る

夕食

別府駅前の居酒屋. 申し訳ないけど美味しくなかったけど, 明日の為にお腹いっぱい食べた. 夕食後, 再度お風呂に入って体をほぐす. お風呂上がりにお水とポカリと 2Run を飲んだ.

2020 年 01 月 31 日 (金)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 山王公園を 60min で 12 キロ
  • 背中の痛みに耐えながら, マジで痛い
  • 右足太ももについては, 背中の痛みがあるからか気にならない... でも張りは強い

ギョーム

  • 社内全体会議
  • ウィークリーレポート
  • RDS の検証引き続き, インスタンスパラメータを操作するツールを引き続き

夕飯

  • 今日も鍋
  • やっぱり, 食べ過ぎた

2020 年 01 月 30 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 引き続き, お休み
  • 徒歩通勤往復
  • 鎮痛剤を飲んで背中や足の痛みを抑えている
  • 明日は軽く走ろうと思う

ギョーム

  • PostgreSQL と pgrouting (PostGIS) が動く Docker 環境を作ったり
  • PostgreSQLSSL 接続を有効にしたり (ちなみに, psql はデフォルトで SSL 接続する)
  • 本番環境でうっかり事故らないように検証して実装した

inokara.hateblo.jp

夕飯

  • 鍋, 今日のお品書きも秀逸だったけど, 鍋を作るのは自分
  • 食べ過ぎた

1 つの AWS アカウントで出来るだけうっかりミスを抑えつつ本番環境を運用する為にやったこと

tl;dr

先日, 完全に自分のうっかりで AWS リソースをオペミスで壊してしまいサービス障害を発生させてしまいました. 原因は, 何を隠そう自分の「うっかり」であり, 完全に人為的なミスです. 今後, このような事故を出来るだけ起こさないように対応策を施したので書ける範囲で共有させて頂きます.

原因

AWS アカウントを利用して検証中の事故でしたが, 以下のような幾つかの状況が重なった事故だったと考えています.

  • 検証環境のリソースと本番環境のリソースが混在している状況だった
  • 検証環境のリソースと本番環境のリソースで見分けがつけ辛い状況だった
  • 利用している IAM ユーザーについて, 全てのリソースを無条件で操作出来る権限が付与されているアカウントだった
  • オペレーター (自分) がボーッとしてしまい, 特になんの疑いも持たずに操作してしまった, しかも, 一人で操作していた

これらの原因を受けて, 以下のような対策を実装しました.

実装

2 つの実装

  1. IAM ユーザーの分割: 通常, 検証等で使う IAM ユーザーと本番環境を操作出来る IAM ユーザーを分ける (通常使うアカウントでは本番環境のリソースは操作出来ないようにする)
  2. Chrome Extension による IAM ユーザーの判別: 本番環境が操作可能な IAM ユーザーで操作する場合, 自身のアカウントが本番環境を操作可能な IAM ユーザーであることを意識付けるようにする

実装 (1) IAM ユーザーの分割 〜 本番環境のリソース操作を拒否する 〜

従来は個人用として 1 つの IAM ユーザーを作成し, これを利用していました. この IAM ユーザーには管理者権限 (IAM ロールの AdministratorAccess 相当) がアタッチされていましたが, 今後は, この IAM ユーザーについては, 本番環境のリソースについて, 再起動や停止, 編集等の権限については無効するようなポリシーを追加しました.

具体的には, 以下のような IAM ポリシーを付与しました. 以下は, Environment タグ名に Production という値が設定されている EC2 インスタンスの再起動をはじめタグ操作を Deny しています.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:RebootInstances",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:CreateTags",
        "ec2:DeleteTags",
        "ec2:Terminate*"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Environment": "Production"
        }
      }
    }
  ]
}

また, 今回の事故は具体的に申し上げると, 本番環境の RDS をフェイルオーバーさせてしまいました. ということで, RDS についても同様に Environment タグ名に Production という値が設定されている RDS クラスタインスタンスについても構成変更等が行えないように設定しました.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "rds:Modify*",
                "rds:Start*",
                "rds:Stop*",
                "rds:Reboot*",
                "rds:AddTagsToResource",
                "rds:RemoveTagsFromResource",
                "rds:FailoverDBCluster"
            ],
            "Resource": "arn:*:rds:*:*:cluster:*",
            "Condition": {
                "StringEquals": {
                    "rds:cluster-tag/Environment": "Production"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "rds:Modify*",
                "rds:Start*",
                "rds:Stop*",
                "rds:Reboot*",
                "rds:AddTagsToResource",
                "rds:RemoveTagsFromResource",
                "rds:FailoverDBCluster"
            ],
            "Resource": "arn:*:rds:*:*:db:*",
            "Condition": {
                "StringEquals": {
                    "rds:db-tag/Environment": "Production"
                }
            }
        }
    ]
}

これらの拒否ポリシーは, 先述の Administrator Access 相当のロールが付与されていても, それを上書きするように作用する為, 当該 IAM ユーザーアカウントについては, 従来どおり検証用で作成したリソースを自由に操作しつつ, うっかり本番環境 (Environment:Production が付与された) リソースを操作してしまうようなことを防ぐことが可能になります.

ただ, 立場上, 本番環境を操作する必要がある為, これに対応する為に本当に全てのリソースを操作可能な IAM ユーザーアカウントを作成しました. 本番環境を操作するような場合にはアカウントを切り替えて (もしくは, ブラウザを切り替えて) 操作することになります. 多少の運用負担にはなってしまいますが, うっかり操作で障害を発生させてしまった際の影響と比較すると大したことではないと考えています.

実際に拒否ポリシーが適用された IAM ユーザーで EC2 を停止しようとすると, 下図のようにエラーとなります.

f:id:inokara:20200131002140p:plain

以下, IAM ポリシーで利用可能な, アクションやリソース, 条件コンテキストキーのリンクです. これらの条件を利用することで, タグ以外の条件でもリソース操作を制限することが可能かと思われます.

実装 (2) Chrome Extension による IAM ユーザーの判別

先述の通り, 立場上, 全てのリソースに対する権限が付与された IAM ユーザーアカウントも運用することになりますが, この IAM ユーザーアカウントでマネジメントコンソールにログインした際には, 下図のようにヘッダ付近に現在のユーザーが管理者ユーザーである旨のメッセージが出力されるようにしました.

f:id:inokara:20200130234935p:plain

これは, 以下の記事を参考にさせて頂き, オレオレ Chrome Extension を作りました.

qiita.com

コード自体は以下のように数行レベルのものです.

$(function() {
    console.log($(".nav-elt-label").text());
    var sp = /super|administrator|admin/;
    if($(".nav-elt-label").text().match(sp)) {
        $("#h").after('<div style="background-color:#FF0000;text-align:center;"><h3>全てのリソースを操作出来る IAM ユーザーでアクセスしています.  Production 環境のリソースの取り扱いに注意しましょう.</h3></div>');
    }
});

マネジメントコンソールのヘッダ部分を解析して, 特定の文字列が含まれていたらヘッダ部分に HTML を差し込みます. 上記の例だと, IAM ユーザーに superAdministrator という文字列が含まれている状態を想定しています. 当初は, リソース名に production という文字列が含まれていたら, 何か警告を出すような仕込みを入れてみようと頑張ってみましたが, マネジメントコンソールの処理を解析出来る程の能力があるわけもなく, 上記のような対応にしました.

まずは, この対応で頑張ってみたいと思います.

最後に

このような場合, そもそも検証環境と本番環境で AWS アカウントを分けるというのが常套手段なのかもしれませんが, こういう対応も可能ということを共有させて頂ければ思います.また, この対応で完全にミスが防げるというわけではありません. あくまでも, ミスによる障害を抑制する為の保険の一つでしかありません.

以上, 事故の起きないインフラ環境を目指して精進したいと思います.

2020 年 01 月 29 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 引き続き, お休み
  • 徒歩通勤往復
  • もう色々と諦めた, 足よりも背中が非常に辛い

ギョーム

  • Elasticsearch で壊れたインデックスが原因でデータインスタンスのディスク使用量に偏りが出来ていてアラートが発生, 壊れたインデックスを削除したら復旧, ガラクタを溜め込んではいけないなと思った次第
  • RDS メンテの検証, ツール書いたりしてた...ら, プロダクション環境を操作してしまってサービスに障害を発生させてしまった...めちゃくちゃ恥ずかしい...大変申し訳ございません
  • 障害をうけてエンジニアリングで解決出来ないか試行錯誤してた

夕飯

  • 手羽中のソテー, お刺身, 今日もお品書きが良かった