AWS EC2 リソースのタグ付けに構造化された一貫性のある戦略の導入を考えています。Amazon EC2 リソースのリソース割り当ての最適化やコスト効率に役立つタグ付け戦略の策定に有用な情報があれば教えてください。
タグとは、簡単にいえば、AWS リソースに割り当てることができる名前値ペアの文字列にすぎません。EC2 での使用にあたって最適なタグ付け戦略を策定するために、タグについてのより詳細な情報が必要です。
この記事では、基本的なリソースタグ付けの概念をいくつか説明します。
• タグ付けの概要
• タグ付けの制限
• タグ付けの名前付けルールおよび推奨
• タグ付け API コマンドおよび CLI コマンド
• AWS Tools for Windows PowerShell を使用したタグフィルタの使用
タグは、アプリケーション識別、環境、所有者などのわかりやすいメタデータを関連付けて AWS リソースを識別および分類するものです。タグはそれぞれ、1 つのキーと 1 つの値で構成されており、どちらの文字列もお客様側が定義します。また、EC2 インスタンスなどのリソースをリクエストするときに、タグキーまたは値に基づいてフィルタとしても使用できます。タグは大規模なリソース管理において主導的な役割を果たします。また、月次請求書にも表示されるため、特にコストの割り当てと制御に有用です。
タグ付けの制限についての最新情報は、Amazon EC2 ドキュメントの「タグの制限」を参照してください。
- タグのキー名は大文字と小文字を区別します。数字、アンダースコア、ハイフン、英大文字と小文字を使用できます。
- タグ値は大文字と小文字を区別します。複合タグを作成する場合を除き、セミコロン (「;」), 等号 (「=」)、パイプ文字 ("|") は使用できません。これらの文字は複合タグ値の区切り文字として予約されています。
複合タグ – リソースに割り当てることができる 10 個のタグを有効活用するために、複合タグの使用をお勧めします。複合タグは、複数のキー値ペアを結合して、パイプ記号で区切られた「値」で構成された 1 つの値とし、1 つのキーに割り当てるものです。たとえば、「Ownername」、「OwnerPhone」、「OwnerEmail」という 3 つのキーを結合して、パイプ記号で区切られた名前、電話番号、E メールアドレスの値文字列 (John Doe|1-555-555-1212|jdoe@example.com) とペアになった 1 つの「OwnerContact」キーにできます。
タグキー名の大文字小文字 - タグキー名は大文字 CamelCase である必要があります。これは、単語や略語を結合する際に各単語や略語の頭文字を大文字にする規則です。たとえば、「MiscMetadata」や「SupportEndpoints」などです。複合タグキー名は大文字 CamelCase を使用し、次に等号 (「=」) を続け、その後に複数のパイプ記号で区切られた文字列値を続けます。たとえば、KeyName1=value1|value2|values3;KeyName2=value1|value2|value3 となります。
使用シナリオ |
キー名の例 |
キー値の例 |
シンプルなタグ |
Owner |
Bob |
パイプ記号で区切られた 複合タグ値 |
Contact |
Bob|1-555-555-1212|bob@example.com |
セミコロンとパイプ記号を使用した複合タグ値 |
OnCall |
Primary=Bob|1-555-555-1212|bob@example.com;Secondary=Bill|1-555-555-1212|bill@example.com |
アプリケーション名 – オプションでパイプ記号区切りの一意の識別子やドメイン/リソース名を伴うアプリケーション名 |
WebApp |
ProdWebApp|7231a74d|www.example.com |
アプリケーション環境 – オプションでパイプ記号区切りの Tier 名やビジネル上の重要レベルを伴う環境名 |
AppEnv |
· Production|Business Critical|Tier 1 · Dev|Alpha|Tier 2 · Test|Beta1|Tier 2 |
リソースロール – インフラストラクチャ内でそのリソースが受け持つロール |
Role |
· CustomerDb · HRWeb · MarketingCollab |
作成者および所有者の連絡先 – パイプ記号区切りを使用したリソースの作成者と所有者の両方の連絡先情報 (名前、電話願望、E メール) |
CreatorOwner |
ResourceCreator=Doe, John|1-555-555-1212|jdoe@;ResourceOwner=Doe, Jane|1-555-555-1212|jadoe@ |
ビジネス連絡先 – セミコロンおよびパイプ記号区切りを使用した連絡先情報 (名前、電話願望、E メール) |
MarketingMgmt |
SocialMediaLead=John Doe|1-555-555-1212|jdoe@example.com;TradMediaLead=Jane Doe|1-555-555-1212|jadoe@example.com |
サポートエンドポイント – セミコロン区切りを使用したサポートエンドポイント |
UsSupportEndPoints |
AlarmEndPoint=arn::SNS::topic1;ChangeApprovalEndPoint=arn::SQS::changequeue |
その他のメタデータ – セミコロン区切りとパイプ記号区切りを使用したその他のメタデータ |
HrMiscMetadata |
key1=value1|value2|value3;key2=value1|value2|value3 |
パートナー連絡先 – セミコロンとパイプ記号区切りを使用した外部管理サービスのパートナー連絡先情報 (名前、電話願望、E メール) |
NasSolutions-Contact |
OwnerContact=John Doe|1-555-555-1212|jdoe@example.com;IncidentContact=Jane Doe|1-555-555-1212|jadoe@example.com |
リソースのタグの追加、更新、リスト表示、および削除には、次の API および CLI コマンドを使用します。各コマンドのドキュメントには、例が記載されています。
説明 |
Amazon EC2 CLI |
AWS CLI |
AWS Tools for Windows PowerShell |
API アクション |
指定したリソースの 1 つまたは複数のタグを追加または上書きします。 |
||||
指定したリソースから指定したタグを削除します。 |
||||
リソースのタグについて |
AWS Tools for Windows PowerShell および Get-EC2Tag コマンドレットを使用して、フィルタベースでリージョン内の EC2 リソース ID を返すことができます。Get-EC2Tag はパラメーター「key」、「resource-id」、「resource-type」および「value」に対するフィルタリングをサポートしています。* および ? を使用した基本的なワイルドカードでのフィルタリングもサポートされています。1 回の呼び出しで返すことができる EC2 リソース ID の最大数は 1000 です。Get-EC2Tag の詳細については、「Get-EC2Tag コマンドレット」を参照してください。
次の例は、AWS Tools for Windows PowerShell を使用したタグフィルタの使用例です。
タグキー名に基づいた EC2 リソース ID のフィルタリング
この例では、Get-EC2Tag コマンドレットは、「Contact」という文字列に一致するタグキー名を持つ EC2 インスタンスのリソース ID を返します。
$filter = New-Object Amazon.EC2.Model.Filter –Property @(Name="key"; Values="Contact")
Get-EC2Tag –Filter $filter
ワイルドカードを使用したタグ値に基づいた EC2 リソース ID のフィルタリング
この例では、Get-EC2Tag コマンドレットは、「John Doe」という文字列を含むタグ値を持つ EC2 インスタンスのリソース ID を返します。
$filter = New-Object Amazon.EC2.Model.Filter –Property @(Name="value"; Values="*John Doe*")
Get-EC2Tag –Filter $filter
タグキー名およびワイルドカードを使用したタグ値に基づいた EC2 リソース ID のフィルタリング
この例では、Get-EC2Tag コマンドレットは、「Contact」という文字列に一致するタグキー名かつ「John Doe」という文字列を含むタグ値を持つ EC2 インスタンスのリソース ID を返します。
$filter1 = New-Object Amazon.EC2.Model.Filter -Property @(Name="key"; Values="Contact")
$filter2 = New-Object Amazon.EC2.Model.Filter -Property @(Name="value"; Values="*John Doe*")
$filters = $filter1, $filter2
Get-EC2Tag -Filter $filters
上記の条件を使用してフィルタリングを行った場合の Get-EC2Tag コマンドレットの出力例
ResourceId |
ResourceType |
キー |
バリュー |
i-2d477420 |
停止するには |
お問い合わせ |
OwnerContact=John Doe|1-55… |
i-2d477421 |
停止するには |
お問い合わせ |
OwnerContact=John Doe|1-55… |
i-2d477422 |
停止するには |
お問い合わせ |
OwnerContact=John Doe|1-55… |
タグに応じた EC2 インスタンスのフィルタリング
describe-instances コマンドを使用したタグでのインスタンスのフィルタリングの例については、「CLI または API でのタグの操作」を参照してください。
リソースのタグ付けは、規模が大きくなっていく AWS リソースの管理に役立つ効果的なツールです。リソースを識別、分類して見つけやすくし、管理や請求書処理に便利です。EC2 タグフィルタリングを使用して、タグ付けされたリソースを見つけることも、リソース割り当ての最適化とコスト効率のための組織のタグ付け基準が適切に適用されているかを検証することもできます。
Amazon EC2、タグ、複合タグ、フィルタリング、例、ベストプラクティス、リソース管理、請求、ガイドライン