データベース技術調査ブログ

LinuxやPostgreSQL、Oracleデータベース、AWSの知識をアウトプットしていきます

【AWS/EC2/SSM】Patch Managerを使う際のEC2のメタデータのオプションに注意

EC2のタグをDescribeInstanceやDescribeTagを使用しなくても取得できる2022年1月に追加されたEC2の便利な機能ですが、SSM Patch Managerと相性が悪いので有効化しない方がいい場合があるという話。(デフォルトで無効なのでそのままにしていることが多いとは思いますが…)

インスタンスメタデータでタグを参照可能になる機能の紹介記事を貼っておきます。
aws.amazon.com

dev.classmethod.jp



個人的にはこのオプション使わない方がいいかもしれないと思っています。将来的に制限がなくなればいいのですが、現状はどうしても使わないといけないという場合以外は有効化しないでおこうと思います。
(有効化しないといけない場合もPatch Managerを使うならこれまで通りEC2にIAMロールをつけてAPIをコールする実装にしないといけないなと思います。)

なぜ有効化しない方がいいのか

現状この機能を有効にした際にタグに使える文字に大きな制限が加わるからです。
情報のアップデートがあるかもしれないので最新情報はドキュメントを参照ください。
docs.aws.amazon.com


タグのキーにこんな制限(赤字)が加わります。(2022/08/11時点)

インスタンスメタデータインスタンスタグを有効にすると、インスタンスタグキーは文字 (a-z、A-Z)、数字 (0-9)、および次の文字のみを使用できます: + - = . , _ : @。インスタンスタグキーは、スペースまたは / を含めることはできず、. (1 つのピリオド)、.. (2 つのピリオド)、または _index のみを含めることはできません


この中のスペースが使えなくなるというのが結構大きなポイントです。



Patch Managerとの相性が悪い点

「スペースをキーに使えないなら、使わなければいいじゃない」と思う人もいるかと思いますが、他のサービスの仕様として使わないといけないとしたらどうでしょう。困ったことになります。

そう、まさにSystems ManagerのPatch Managerはスペースを含むキーを使ってパッチグループを管理する機能があるので、もろに影響を受けるサービスです。

Patch Mangerの使い方のイメージは以下も参照していただければと思います。(便利なサービスで広く使えるものなので、基本的な使い方はいろいろブログにされていてありがたい限りです。)
www.softek.co.jp
dev.classmethod.jp


肝心かなめのパッチグループの設定に関するドキュメントも貼っておきます。
docs.aws.amazon.com

パッチ適用の仕組みを整理するため、タグを使用してマネージドノードをパッチグループに追加することをお勧めします。パッチグループでは、タグキーとして Patch Group を使用する必要があります。任意のタグ値を指定できますが、タグキーは Patch Group とする必要があります。

そう、Patch Groupの間にスペースが必要なのです。
これは仕様なのでどうしようもなく守らねばならないルールなのです。

つまり、上述のようにインスタンスメタデータインスタンスタグを有効にすると、スペースをキーに使えなくなるので、パッチマネージャーでパッチグループを利用して細やかにベースラインを設定できなくなるというわけです。




まとめ

  • インスタンスメタデータインスタンスタグを参照できるようにする設定を有効化すると、EC2のIAMロールに権限を付与せずともタグの情報にアクセスできるようになり、いろいろ便利。
  • ただし、タグキーにスペースを利用できなくなるという制約がつくことになり、SSM Patch Managerのパッチグループの機能を使えなくなる。
  • 現状はインスタンスメタデータインスタンスタグを参照できる設定はどうしようもなく必要な場合を除いて有効化しない方がよいと思う。