sorta kinda...

主にAWS関連ですが、これに限らずいろいろ勉強したことや思ったことを書いていきます。

Run Command で Windows Update ができなくなった話

かもしれない運用は大事です、那須です。

皆さんちゃんと Windows Update を定期的にやっていますか? どんな方法で悪意ある何かがやってくるかわかりませんよ? 普段から何かあるかもしれない、と思って対策するのはとても大切なのでやっておきましょう。 ただ、今年に入ってから Windows Update にはほんとに振り回されっぱなしです… 今回はそのお話を書き残しておこうと思います。

 

いつものように Windows Update しようとした

Systems Manager を使って Windows Update を毎月実施している環境があるんですが、今月も同じようにスケジュールしていました。 で、実施翌日にログ確認したらこんなエラーが出ていました。

Install-WindowsUpdates : オブジェクト参照がオブジェクト インスタンスに設定されていません。
発生場所 行:1 文字:1
+ Install-WindowsUpdates -UpdateLevel Important
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (PatchNow.Implem...UpdateOperation:InstallWindowsUpdateOperation) [Install-WindowsUpdates], NullReferenceException
    + FullyQualifiedErrorId : Exception Level 1:
    Error Message: オブジェクト参照がオブジェクト インスタンスに設定されていません。
        Stack Trace:    場所 PatchNow.Implementations.InstallWindowsUpdateOperation.DoWindowsUpdateOperation()
           場所 PatchNow.Implementations.WindowsUpdateOperation.DoBeginProcessing() ,PatchNow.Cmdlets.InstallWindowsUpdates
 
failed to run commands: exit status 4294967295

 

???

今までこんなエラーは当然出てないですし、構成も何も変わってないのでおかしいなと思ったんですよね。 しかも Windows Update の Run Command 実行直後にエラーになっているので、これは Systems Manager かそれをトリガーしているスケジューラで何か変更があったのかな?と最初は思いました。

 

スケジューラ側は何も変わってなかった

スケジューラの問い合わせ窓口に問い合わせたんですが、特に何も変更されていないと回答がありました。 他の環境はうまく実行できていたので、まあそうだろうなと思いつつ、次に進みます。

 

AWS に問い合わせた

当然、AWS が管理する Run Command ドキュメントは何も変わってなかったんですが、問い合わせた回答の中にこんな返答がありました。

%PROGRAMDATA%\Amazon\PatchNow\State\ の中に空のState(json)ファイルがある場合にこのようなエラーがでて失敗する事例がありますよ。 もしあったら削除して Run Command を再実行してみてください。

当該フォルダを確認してみると、

f:id:nasrinjp1:20190213123637p:plain

確かに 0 バイトの json ファイルがあったので、これを削除して再実行するとうまく Windows Update できました。 本当にサポートの存在ってありがたいですよね!

 

そういえば先月こんなことがあった

空の json ファイルの更新日時を見ると、前回の Windows Update を実施した時間帯でした。 さらに思い返してみると、前回の Windows Update は 8 時間経っても終わらずにエラーで Run Command が終了していたんですよね。 手で Windows Update 実行しても、95% のまま動かずタイムアウトになる有様… 4 回リトライしてようやく適用された、なんてことがあったんです。

なので、

  • Run Command から Windows Update を実行してタイムアウト等で処理が完了しなかったら空の State(json) ファイルが残る
  • 空の json ファイルがあると Run Command は処理を実行できない

という知見を得たので、他にも空の json ファイルが残るパターンがあることを想定してこのフォルダに Run Command 実行時以外に json ファイルがあれば通知するよう仕込みました。 これで Windows Update 当日にエラーになる可能性をまた一つつぶしました。

 

まとめ

サポートは正しく活用しましょう。解決までのスピードが全然違います。
同じエラーを発生させない仕組みをどんどん準備しましょう。
Linux でも同じものが作れるなら Linux に変えましょう。Windows Update はいろいろとツライです…

TLS 証明書発行で企業名を入力する際は細部まで確認しましょう

証明書関連のタスクって簡単そうでややこしいです、那須です。

EV や OV の TLS 証明書が必要な場合、グローバルサイン等の認証局に企業名などの情報を送って認証してもらうと思いますが、今回はそこで躓いたポイントを書きます。

 

企業名は細部まで確認しよう!

本当にこの一言に尽きます。 登記事項証明書に記載されている「商号」をそのまま記入しましょう。 Web で公開されている企業名=登記事項証明書に記載の企業名とは限りません。

今回、私がちゃんと確認もせずに企業名を登録してしまったがために、認証局の方から下記のようにご連絡いただきました。

三者機関の企業データで法人名を確認させていただきましたところ、『〇〇テツク』のようにお見受けいたします。 『ッ』部分は大文字で登記もされております。

 

めったにしないからこそご注意ください

更新は毎年しますが新規発行申請なんてほとんどしないので、自分の備忘録もかねて書きました。 このせいでスケジュールが 1 週間ほど遅れてしまったので、とてもつらい…