【タグの落とし穴】ゼロ幅文字に気をつけよう

記事タイトルとURLをコピーする

AWSには多くのリソースにタグを付与出来ます。タグはキー・バリューの組み合わせでリソース内では一意です(同じ名前のキーのタグは設定できない)。

ところが、以下の画像に設定されているタグは同じ内容のものが重複して設定できているように見えますね?ハイライトさせていますが、半角スペース・全角スペースが設定されているわけではありません。 何が起きているのでしょうか。

表示上見た目には分かりませんが、実は、上のタグにはゼロ幅スペースというデータが隠れています。 Chromeのデベロッパーツールで当該箇所を確認すると ZeroWidthSpace; というデータがあることが分かります。つまり、2つのタグは表示上は同じように見えていますが、データ上は異なるキーが登録されているということになります。

通常、このようなデータが入ることは無いと思いますが(本記事の執筆にあたってはプログラムからわざと設定しました)、同様の事象に遭遇したケースをネットで調べてみるとExcelから何らかの操作でデータをコピーしたりした時等に発生することがあるようです。

これが何に影響するかというと、例えばタグを使ってリソースを操作するプログラムを開発する場合に、意図せずAWS側のリソースにゼロ幅文字が含まれていて、プログラム側ではゼロ幅文字が含まれない文字列でリソースをマッチングしようとした場合にリソースが見つからない、という事態が発生します。

当社でご提供しているCloud AutomatorのようなAWSのオペレーションツールを利用する場合にも、タグでリソースを指定していて、AWSリソース側とツール側のどちらかにゼロ幅文字が含まれていたりすると意図した通りに実行できなくなるケースが想定されます。

タグを設定しているはずなのに意図したように動かない、と悩んだ際、一つの可能性として覚えておいて頂くと役に立つかもしれません。

参考

ja.wikipedia.org

くればやし (記事一覧)