こんにちは!開発エンジニアのクリスです。
最近、初めてOCI (Oracle Cloud Infrastructure) を触る機会がありました。他のクラウドプラットフォームの知識があったので、「まあ、リソース作成や環境構築はサクッといけるだろう」と高を括っていたんです。
大枠は問題なかったのですが、リソースを管理するための「タグ」を設定しようとしたところで、ちょっとした違和感に気づきました。
「あれ? タグの付け方がなんか2種類ない……?」
今回は、私のようにOCIを初めて触る人が(たぶん)少し戸惑う、OCIの2種類のタグ機能について共有します!
OCIのタグは「2種類」ある!
クラウドインフラストラクチャなどを触ったことがあると、「タグ」といえば基本的にKey-Valueペア(例: Environment: Production)を自由に設定するものを想像しますよね。
もちろんOCIにもその機能はあるのですが、それとは別にもう一つ、より強力でガバナンスに特化したタグ機能が用意されていました。
それが「フリーフォーム・タグ」と「定義済タグ」です。
1. フリーフォーム・タグ (Free-form Tags)
こちらは私たちがお馴染みの、いわゆる「普通の」タグです。
- Key (キー) と Value (値) を自由に設定できます。
- 例:
Environment:DevelopmentやOwner:Chrisといった具合です。 - 事前準備は不要で、リソース作成時や作成後にすぐに追加できます。
ただ、OCIを触っていて気づいたのは、このフリーフォーム・タグは特定の「タグ・ネームスペース」という管理体系に属していない点です。手軽な反面、管理は利用者に完全に委ねられています。
便利な点:
手軽さ。個人での検証や、一時的な目印としては最適です。
注意点:
「手軽さ」は「統制の欠如」と表裏一体です。Environmentと入力するつもりがEnviroment(nが足りない!)とタイプミスしたり、ある人はDev、別の人はDevelopmentと入力したり、「表記ゆれ」が発生しやすくなります。
2. 定義済タグ (Defined Tags)
こちらがOCIのタグ機能の「本命」とも言える、高機能なタグです。
フリーフォーム・タグと違い、利用するには事前の準備(定義)が必要になります。
利用するまでのステップは以下の通りです。
- 「タグ・ネームスペース」を作成するまず、タグを管理するための「箱」のようなもの(ネームスペース)を作成します。(例:
CompanyInternal)このネームスペース自体に、IAMポリシー(権限管理)を設定できます。参考: タグ・ネームスペースの管理 (公式ドキュメント) - ネームスペース内に「タグ・キー」を定義する次に、ネームスペースの中に「キー」を定義します。(例:
Environment) - キーの値のタイプを指定するここが強力なポイントです。この
Environmentキーに対して、値を「単なる文字列(自由入力)」にするか、「事前定義した値のリスト(選択式)」にするかを選べます。
例えば、Environmentキーに ["Production", "Staging", "Development"] という選択リストを設定しておけば、リソース作成者はこの3つから選ぶことしかできなくなります。タイプミスや「Dev」のような表記ゆれを完全に防ぐことができます。

「定義済タグ」が重要な理由 (メリット)
「わざわざ事前定義するなんて面倒だ」と思うかもしれませんが、OCIを本格的に利用する上では、この定義済タグが非常に重要になります。
メリット1:正確なコスト管理
「フリーフォーム・タグはコスト管理に使えない」という声が色々なフォーラムにありましたが、調べてみると少しニュアンスが異なりました。
正しくは、「フリーフォーム・タグもコスト分析のフィルタとしては利用可能」です。しかし、前述の通り表記ゆれのリスクがあるため、DevとDevelopmentのコストが別々に集計されてしまう可能性があります。
一方、「定義済タグ」はOCIの「コスト・トラッキング・タグ」として正式に指定できます。
これにより、表記ゆれのない正確なデータでコスト分析や予算アラートを設定できるようになります。公式ドキュメントでも、コスト・トラッキングには定義済タグの使用が強く推奨されています。
参考: コスト・トラッキング・タグの使用 (公式ドキュメント)
メリット2:ガバナンスとアクセス制御
定義済タグは、OCIのIAMポリシーと強力に連携します。
例えば、「CompanyInternal.Environment タグの値が Production になっているリソースは、Admins グループ以外は削除できない」といった、タグに基づいた詳細なアクセス権限制御が可能です。
メリット3: タグの一括編集 (Bulk-edit)
定義済タグは、複数のリソースに対して一括で適用(バルク編集)することもサポートされています。環境構築後にタグ付けルールを変更した際も、効率的にメンテナンスが可能です。
参考: Bulk Editing tags on resources using the OCI CLI(公式ドキュメントより、このOracleブログの記事の方がわかりやすかった)
まとめ
OCIの2種類のタグについて、使い分けをまとめてみました。
- フリーフォーム・タグ
- 個人での検証や開発環境
- 一時的な目印やメモ
- 厳密なコスト管理やガバナンスが不要な場合
- 定義済タグ
- 本番環境やステージング環境
- 複数人・複数チームでリソースを共有する場合
- 正確なコスト管理や予算編成を行いたい場合
- タグに基づいてアクセス権限を制御したい場合
手軽にリソースを分類したいだけならフリーフォーム・タグでも十分ですが、OCIで本格的なシステムを運用し、コストやガバナンスをしっかり管理していくためには、「定義済タグ」の設計と運用が必須だと感じました。
また、タグを付けることが可能なリソースは下記ドキュメントに記載されています。
最初の設定は少し手間がかかりますが、後々の運用を考えると、OCIを使い始めるときにこそ、この「定義済タグ」のルールを決めておくのがベストプラクティスですね!
この記事が少しでも参考になると嬉しいです!