インスタンスメタデータサービスを使用してインスタンスメタデータにアクセスする
次のいずれかのメソッドを使って、実行中のインスタンスからインスタンスメタデータにアクセスできます。
デフォルトでは、IMDSv1またはIMDSv2のいずれか、あるいは両方を使用できます。
ローカルコードまたはユーザーに IMDSv2 を使用させるように、各インスタンスのインスタンスメタデータサービス (IMDS) を設定することができます。IMDSv2を使用しなければならないように指定すると、IMDSv1はもう機能しなくなります。ユーザーに IMDSv2 を使用させるようにインスタンスを設定する方法については、「インスタンスメタデータサービスのオプションを設定する」を参照してください。
PUT
または GET
ヘッダーは IMDSv2 に固有のものです。これらのヘッダーがリクエストに含まれている場合、そのリクエストは IMDSv2 を対象としています。ヘッダーが存在しない場合、そのリクエストは IMDSv1 を対象としているものとみなされます。
IMDSv2 の拡張のレビューの詳細については、「EC2 Instance Metadata Service の拡張により、オープンファイアウォール、リバースプロキシ、および SSRF の脆弱性に対して多層防御を追加
トピック
インスタンスメタデータサービスバージョン 2 の仕組み
IMDSv2 は、セッション指向リクエストを使用します。セッション指向リクエストを使用して、セッション期間 (1 秒~6 時間) を定義するセッショントークンを作成します。指定した期間中、それ以降のリクエストに同じセッショントークンを使用できます。指定した期間が期限切れになった後、将来のリクエストに使用する新しいセッショントークンを作成する必要があります。
注記
このセクションの例では、インスタンスメタデータサービス (IMDS) の IPv4 アドレス 169.254.169.254
を使用します。IPv6 アドレスを使用して EC2 インスタンスのインスタンスメタデータを取得する場合は、IPv6 アドレスを有効にして使用してください。[fd00:ec2::254]
。IMDS の IPv6 アドレスは、IMDSv2 コマンドと互換性があります。IPv6 アドレスは、AWS Nitro System 上に構築されたインスタンスと IPv6 対応サブネット (デュアルスタックまたは IPv6 のみ) でのみアクセスできます。
次の例では、シェルスクリプトと IMDSv2 を使用して、最上位インスタンスメタデータ項目を取得します。各例の操作は次のとおりです。
-
PUT
リクエストを使って、6 時間 (21,600 秒) のセッショントークンを作成する -
セッショントークンヘッダーを
TOKEN
(Linux インスタンス) またはtoken
(Windows インスタンス) という名前の変数に保管する -
トークンを使って最上位メタデータアイテムをリクエストする
2 つの個別のコマンドを実行することも、それらを組み合わせることもできます。
個別のコマンド
最初に、次のコマンドを使用してトークンを生成します。
[ec2-user ~]$
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
その後、次のコマンドを使用して、トークンを使用して上位レベルのメタデータアイテムを生成します。
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
組み合わされたコマンド
トークンを保存し、コマンドを組み合わせることができます。次の例では、上記の 2 つのコマンドを組み合わせて、セッショントークンヘッダーを TOKEN という名前の変数に格納します。
注記
トークンの作成時にエラーが発生した場合は、有効なトークンの代わりにエラーメッセージが変数に格納され、コマンドは機能しません。
[ec2-user ~]$
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
トークンを作成した後、期限切れになるまで再使用することができます。次のコマンド例では、インスタンスの起動に AMI の ID が使用されていますが、前の例で $TOKEN
に保管されたトークンが再使用されています。
[ec2-user ~]$
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
PS C:\>
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
トークンを作成した後、期限切れになるまで再使用することができます。次のコマンド例では、インスタンスの起動に AMI の ID が使用されていますが、前の例で $token
に保管されたトークンが再使用されています。
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} ` -Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
IMDSv2を使ってインスタンスメタデータをリクエストする際は、リクエストに次の項目が含まれている必要があります。
-
PUT
リクエストを使って、インスタンスメタデータサービスに対してセッションを開始します。PUT
リクエストは、インスタンスメタデータサービスに対する後続のGET
リクエストに含まれている必要のあるトークンを返します。このトークンは、IMDSv2を使ってメタデータにアクセスするのに必要です。 -
トークンを IMDS に対するすべての
GET
リクエストに含めます。トークンの使用がrequired
に設定されている場合、有効なトークンがないリクエスト、または有効期限切れのトークンを持つリクエストで401 - Unauthorized
HTTP エラーコードが発生します。-
トークンはインスタンス固有のキーです。トークンは他の EC2 インスタンスで有効ではなく、生成されたインスタンスの外で使用しようとすると拒否されます。
-
PUT
リクエストには、トークンの有効期限 (TTL) を最大 6 時間 (21,600 秒) まで秒単位で指定するヘッダーが含まれている必要があります。トークンは論理的セッションを表します。TTL は、トークンが有効な時間の長さ、つまりセッションの期間を指定します。 -
トークンの期限が切れた後、インスタンスメタデータにアクセスし続けるためには、別の
PUT
を使って新しいセッションを作成する必要があります。 -
各リクエストについてトークンを再使用するか、あるいは新しいトークンを作成することを選択できます。少数のリクエストでは、IMDS にアクセスする必要があるたびに、トークンを生成してすぐに使用するほうが簡単である場合があります。ただし、効率を重視するなら、インスタンスメタデータをリクエストする必要があるたびに
PUT
リクエストを書くより、トークン期間を長く指定して再使用することができます。それぞれが独自のセッションを表すトークンを同時に使用できる数については、実際的に制限がありません。ただし、IMDSv2 では、通常の IMDS 接続とスロットリングの制限によって制約を受けます。詳細については、「クエリスロットル」を参照してください。
-
HTTP GET
およびHEAD
メソッドはIMDSv2インスタンスメタデータリクエストで許可されています。 PUT
リクエストは、X-Forwarded-For ヘッダーが含まれている場合、拒否されます。
デフォルトで、PUT
リクエストに対するレスポンスには IP プロトコルレベルで 1
のレスポンスホップリミット (有効期限) があります。より大きなホップリミットが必要な場合は、modify-instance-metadata-options AWS CLI コマンドを使って調整できます。例えば、インスタンスで実行されているコンテナサービスとの下位互換性のために、ホップリミットを拡大する必要がある場合があります。詳細については、「既存インスタンスのインスタンスメタデータオプションの変更」を参照してください。
インスタンスメタデータサービスバージョン 2 の使用への移行
IMDSv2 の使用に移行する場合、次のツールと移行パスを使用することが推奨されます。
IMDSv2 への移行に役立つツール
お使いのソフトウェアで IMDSv1 が使用されている場合、次のツールを使用して IMDSv2 を使用するようソフトウェアを再構成することができます。
- AWS ソフトウェア
-
最新バージョンの AWS CLI および AWS SDK では、IMDSv2 をサポートしています。IMDSv2 を使用するには、EC2 インスタンスで、最新バージョンの CLI および SDK を使用している必要があります。CLI の更新の詳細については、 AWS Command Line Interface ユーザーガイドの、「AWS CLI のインストール、更新、およびアンインストール」を参照してください。
すべての Amazon Linux 2 と Amazon Linux 2023 ソフトウェアパッケージが IMDSv2 をサポートしています。Amazon Linux 2023 では、IMDSv1 はデフォルトで無効になっています。
IMDSv2 をサポートする最低限の AWS SDK バージョンについては、「サポートされる AWS SDK を使用する」を参照してください。
- IMDS パケットアナライザー
-
IMDS パケットアナライザーは、インスタンスのブートフェーズからの IMDSv1 呼び出しを特定して記録するオープンソースツールです。このツールは、EC2 インスタンスで IMDSv1 呼び出しを行うソフトウェアを特定するのに役立ち、インスタンスで IMDSv2 のみを使用できるようにするために何を更新する必要があるかを正確に特定できます。IMDS パケットアナライザーは、コマンドラインから実行することも、サービスとしてインストールすることもできます。詳細については、GitHub の「IMDS パケットアナライザー
」を参照してください - CloudWatch
-
IMDSv2 では、IMDSv1 がサポートしていない、トークンベースのセッションが利用できます。
MetadataNoToken
CloudWatch メトリクスは、IMDSv1 を使用しているインスタンスメタデータサービス (IMDS) への呼び出しの数を追跡します。このメトリクスをゼロまでトラッキングすることにより、すべてのソフトウェアが IMDSv2 を使用するようアップグレードされたかどうか、およびいつアップデートが行われたかを測定できます。IMDSv1 を無効にした後、
MetadataNoTokenRejected
CloudWatch メトリクスを使用して、IMDSv1 呼び出しが試行および拒否された回数を追跡できます。このメトリクスを追跡することで、IMDSv2 を使用するようにソフトウェアを更新する必要があるかどうかを確認できます。詳細については、「インスタンスメトリクス」を参照してください。
- EC2 API および CLI への更新
-
新しいインスタンスについては、RunInstances API を使用して、IMDSv2 の使用を義務付ける新しいインスタンスを起動できます。詳細については、「新規インスタンスのインスタンスメタデータオプションの設定」を参照してください。
既存のインスタンスの場合、ModifyInstanceMetadataOptions API を使用して IMDSv2 の使用を要求できます。詳細については、「既存インスタンスのインスタンスメタデータオプションの変更」を参照してください。
Auto Scaling グループによって起動されたすべての新しいインスタンスで IMDSv2 の使用を必須にするために、Auto Scaling グループは起動テンプレートまたは起動設定を使用できます。起動テンプレートの作成時や起動設定の作成時に、IMDSv2 の使用が必須となるように
MetadataOptions
パラメータを設定する必要があります。Auto Scaling グループは、新しい起動テンプレートまたは起動設定を使用して新しいインスタンスは新しいインスタンスを起動しますが、既存のインスタンスは影響を受けません。Auto Scaling グループ内の既存のインスタンスの場合、ModifyInstanceMetadataOptions API を使用して、既存のインスタンスで IMDSv2 の使用を要求するか、インスタンスを終了すると、Auto Scaling グループは、新しい起動テンプレートまたは起動設定で定義されているインスタンスメタデータオプション設定で新しい置き換えインスタンスを起動します。 - デフォルトで IMDSv2 を設定する AMI を使用する
-
ImdsSupport
パラメータにv2.0
を設定した AMI により、インスタンスを (HttpTokens
パラメータにrequired
を設定して) 起動する場合は、デフォルトで IMDSv2 を使用するように自動的に設定できます。register-image CLI コマンドを使用して AMI を登録するときにImdsSupport
パラメータをv2.0
に設定することも、modify-image-attribute CLI コマンドを使用して既存の AMI を変更することもできます。詳細については、「AMI を設定する」を参照してください。 - IAM ポリシーおよび SCP
-
以下に示すように、ユーザーの管理には、IAM ポリシーを使用することも、AWS Organizations サービスコントロールポリシー (SCP) を使用することもできます。
-
インスタンスが IMDSv2 を使用するように設定されていない限り、RunInstances API を使用してそのインスタンスを起動することはできません。
-
IMDSv1 を再度有効にするために、ModifyInstanceMetadataOptions API を使用して実行中のインスタンスを変更することはできません。
IAM ポリシーまたは SCP には、次の IAM 条件キーを含める必要があります。
-
ec2:MetadataHttpEndpoint
-
ec2:MetadataHttpPutResponseHopLimit
-
ec2:MetadataHttpTokens
条件キーが含まれているポリシーで指定した状態と、API および CLI 呼び出し時のパラメータが一致しない場合、これらの API または CLI の呼び出しは失敗し
UnauthorizedOperation
レスポンスが返されます。さらに、追加の保護レイヤーを選択して、IMDSv1からIMDSv2の変更を強制することもできます。EC2 ロールの認証情報経由でコールされた各 API に関するアクセス管理レイヤーでは、IAM ポリシーまたは AWS Organizations サービスコントロールポリシー (SCP) で新しい条件キーを使用できます。具体的には、IAM ポリシーで値
2.0
を設定した条件キーec2:RoleDelivery
を使用していると、IMDSv1 から取得した EC2 ロールの認証情報を使用した API コールに対して、UnauthorizedOperation
レスポンスが返されます。同じことは、SCP によって義務付けられる条件を使ってより広く達成できます。これにより、指定した条件と一致しない API コールに対してはUnauthorizedOperation
エラーが返されるため、実際に IMDSv1 から取得した認証情報を使用して API を呼び出すことはできなくなります。IAM ポリシーの例は、インスタンスメタデータの使用を参照してください。SCP の詳細については、「AWS Organizations ユーザーガイド」の「サービスコントロールポリシー (SCPs)」を参照してください。
-
IMDSv2 を必要とする推奨パス
上記のツールを使用する際、IMDSv2 への移行にこのパスに従うことを推奨します。
ステップ 1: 開始時
EC2 インスタンスのロール認証情報を使用する SDK、CLI、およびソフトウェアを、IMDSv2 対応のバージョンに更新します。CLI の更新に関する情報については、AWS Command Line Interface ユーザーガイドの「AWS CLI の最新バージョンへのアップグレード」を参照してください。
次に、IMDSv2 リクエストを使ってインスタンスメタデータに直接アクセスする (つまり、SDK を使用しない) ソフトウェアを変更します。IMDS パケットアナライザー
ステップ 2: 移行の進行状況を追跡する
CloudWatch の MetadataNoToken
メトリクスを使用して、移行の進行状況を追跡します。このメトリクスは、インスタンスの IMDS に対する IMDSv1 呼び出しの数を示します。詳細については、「インスタンスメトリクス」を参照してください。
ステップ 3: IMDSv1 をまったく使用していない場合
CloudWatch メトリクス MetadataNoToken
で記録される IMDSv1 の使用率がゼロであれば、そのインスタンスは IMDSv2 の使用に完全に移行するための準備が整っています。この段階で、次の操作を実行できます。
-
アカウントのデフォルト
IMDSv2 をアカウントのデフォルトとして必須に設定できます。インスタンスが起動すると、インスタンス設定は自動的にアカウントのデフォルトに設定されます。
アカウントのデフォルトを設定するには、次の手順を実行します。
-
Amazon EC2 コンソール: EC2 ダッシュボードの [アカウントの属性]、[データ保護とセキュリティ] で、[IMDS のデフォルト] に対して、[インスタンスメタデータサービス] を [有効] に設定し、[メタデータのバージョン] を [V2 のみ (トークンは必須)] に設定します。詳細については、「IMDSv2 をアカウントのデフォルトとして設定する」を参照してください。
-
AWS CLI: modify-instance-metadata-defaults CLI コマンドを使用して、
--http-tokens required
と--http-put-response-hop-limit
を指定します。2
-
-
新規のインスタンス
新しいインスタンスを起動する際には、以下のいずれかを実行できます。
-
Amazon EC2 コンソール: インスタンス起動ウィザードで、[Metadata accessible] (メタデータにアクセス可能) を [Enabled] (有効) に、[Metadata version] (メタデータバージョン) を [V2 only (token required)] (V2 のみ (トークンが必須)) に設定します。詳細については、「起動時にインスタンスを設定する」を参照してください。
-
AWS CLI: run-instances CLI コマンドを使用して、IMDSv2 が必須となるように指定します。
-
-
既存のインスタンス
既存のインスタンスには、次の操作を実行できます。
-
Amazon EC2 コンソール: [インスタンス] ページでインスタンスを選択し、[アクション]、[インスタンス設定]、[インスタンスメタデータオプションの変更] を選択し、[IMDSv2] の場合は [必須] を選択します。詳細については、「IMDSv2 の使用を要求する」を参照してください。
-
AWS CLI: IMDSv2 のみを使用するように指定するには、modify-instance-metadata-options CLI コマンドを使用します。
実行中のインスタンスで、インスタンスメタデータオプションを変更でき、インスタンスメタデータオプションを変更した後にインスタンスを再起動する必要はありません。
-
手順 4: すべてのインスタンスが IMDSv2 に移行されたかどうか確認する
IMDSv2 の使用を要求するようにまだ設定されていないインスタンスがないか、つまり、IMDSv2 がまだ optional
として設定されているかどうかを確認できます。まだインスタンスが optional
として設定されている場合は、前の手順 3 を繰り返し、インスタンスのメタデータオプションを変更して IMDSv2 required
を作成できます。
インスタンスをフィルターするには
-
Amazon EC2 コンソール: [インスタンス] ページで、[IMDSv2 = optional] フィルターを使用してインスタンスをフィルタリングします。のフィルタリングについての詳細は、「コンソールを使用したリソースのフィルタリング」を参照してください。また、各インスタンスで IMDSv2 が必須かオプションかを確認することもできます。[基本設定] ウィンドウで [IMDSv2] を切り替えて、[IMDSv2] 列を [インスタンス] テーブルに追加します。
-
AWS CLI: describe-instances CLI コマンドを使用して、次のように
metadata-options.http-tokens = optional
よってフィルタリングします。aws ec2 describe-instances --filters "Name=metadata-options.http-tokens,Values=optional" --query "Reservations[*].Instances[*].[InstanceId]" --output text
手順 5: すべてのインスタンスが IMDSv2 に移行された時点
IAM 条件キーの ec2:MetadataHttpTokens
、ec2:MetadataHttpPutResponseHopLimit
、および ec2:MetadataHttpEndpoint
により、RunInstances と ModifyInstanceMetadataOptions API、および対応する CLI の使用をコントロールできます。ポリシーを作成し、条件キーを使用してポリシーに指定した状態と API コールのパラメータが一致しない場合、API コールまたは CLI コールは失敗して UnauthorizedOperation
レスポンスが返されます。IAM ポリシーの例は、インスタンスメタデータの使用を参照してください。
さらに、IMDSv1 を無効にした後、MetadataNoTokenRejected
CloudWatch メトリクスを使用して、IMDSv1 呼び出しが試行および拒否された回数を追跡できます。IMDSv1 を無効にした後、正常に動作していないソフトウェアがあり、MetadataNoTokenRejected
メトリクスに IMDSv1 呼び出しが記録されている場合は、IMDSv2 を使用するようにこのソフトウェアを更新する必要がある可能性があります。
サポートされる AWS SDK を使用する
IMDSv2 を使用するには、EC2 インスタンスが IMDSv2 の使用をサポートする AWS SDK バージョンを使用する必要があります。最新バージョンの AWS SDK はすべて IMDSv2 の使用をサポートしています。
重要
最新の機能、セキュリティアップデート、および基本的な依存関係を維持するために、SDK のリリースを常に更新することをお勧めします。サポート対象外の SDK バージョンを継続して使用することはお勧めできません。お客様の判断で行ってください。詳細については、「AWS SDK とツールのリファレンスガイド」の「AWS SDK とツールのメンテナンスポリシー」を参照してください。
IMDSv2 の使用をサポートする最小バージョンは次のとおりです。
-
AWS CLI
– 1.16.289 -
AWS Tools for Windows PowerShell
– 4.0.1.0 -
AWS SDK for .NET
– 3.3.634.1 -
AWS SDK for C++
– 1.7.229 -
AWS SDK for Go
– 1.25.38 -
AWS SDK for Go v2
– 0.19.0 -
AWS SDK for Java
– 1.11.678 -
AWS SDK for Java 2.x
– 2.10.21 -
AWS Node.js 内の SDK for JavaScript
– 2.722.0 -
AWS SDK for PHP
– 3.147.7 -
AWS SDK for Python (Botocore)
– 1.13.25 -
AWS SDK for Python (Boto3)
– 1.12.6 -
AWS SDK for Ruby
– 3.79.0
IMDSv2 の例
Amazon EC2 インスタンスで次の例を実行して、IMDSv2 のインスタンスメタデータを取得します。
Windows インスタンスでは、Windows PowerShell を使用するか、cURL または wget をインストールすることができます。Windows インスタンスにサードパーティーツールをインストールする場合は、呼び出しおよび出力がここに記載されているものとは異なる場合があるため、必ず付属のドキュメントをよく読んでください。
例
使用できるインスタンスメタデータのバージョンを取得する
次の例では、使用できるインスタンスメタデータのバージョンを取得しています。各バージョンは、新しいインスタンスのメタデータカテゴリがリリースされたときのインスタンスメタデータビルドを参照します。インスタンスメタデータビルドのバージョンは、Amazon EC2 API のバージョンとは相関しません。以前のバージョンに存在する構造および情報に依存するスクリプトがある場合は、以前のバージョンを使用することができます。
上位レベルのメタデータ項目を取得する
次の例では、上位レベルのメタデータ項目を取得しています。レスポンスの項目の詳細については、「インスタンスメタデータのカテゴリ」を参照してください。
アクセスを許可した場合にのみ、タグがこの出力に含まれることに注意してください。詳細については、「インスタンスメタデータのタグへのアクセスを許可する」を参照してください。
メタデータ項目の値を取得する
これらの例では、前出の例で取得された一部の最上位メタデータ項目の値を取得しています。これらのリクエストは、前の例のコマンドを使用して作成された保管されているトークンを使用します。このトークンは有効期限が切れていない必要があります。
使用可能なパブリックキーのリストを取得する
次の例では、使用できるパブリックキーの一覧を取得しています。
パブリックキー 0 が使用できるフォーマットを示す
次の例は、パブリックキー0のフォーマットを示しています。
パブリックキー 0 を取得する (OpenSSH キーフォーマット)
次の例では、パブリックキー0を取得しています (OpenSSH キーフォーマット)。
インスタンスのサブネット ID を取得する
次の例では、インスタンスのサブネット ID を取得しています。
インスタンスのインスタンスタグを取得する
インスタンスメタデータ内のインスタンスタグへのアクセスが有効になっている場合は、インスタンスメタデータからインスタンスのタグを取得できます。詳細については、「インスタンスメタデータからタグを取得する」を参照してください。
IMDSv1 の例
Amazon EC2 インスタンスで次の例を実行して、IMDSv1 のインスタンスメタデータを取得します。
Windows インスタンスでは、Windows PowerShell を使用するか、cURL または wget をインストールすることができます。Windows インスタンスにサードパーティーツールをインストールする場合は、呼び出しおよび出力がここに記載されているものとは異なる場合があるため、必ず付属のドキュメントをよく読んでください。
例
使用できるインスタンスメタデータのバージョンを取得する
次の例では、使用できるインスタンスメタデータのバージョンを取得しています。各バージョンは、新しいインスタンスのメタデータカテゴリがリリースされたときのインスタンスメタデータビルドを参照します。インスタンスメタデータビルドのバージョンは、Amazon EC2 API のバージョンとは相関しません。以前のバージョンに存在する構造および情報に依存するスクリプトがある場合は、以前のバージョンを使用することができます。
上位レベルのメタデータ項目を取得する
次の例では、上位レベルのメタデータ項目を取得しています。レスポンスの項目の詳細については、「インスタンスメタデータのカテゴリ」を参照してください。
アクセスを許可した場合にのみ、タグがこの出力に含まれることに注意してください。詳細については、「インスタンスメタデータのタグへのアクセスを許可する」を参照してください。
メタデータ項目の値を取得する
これらの例では、前の例で取得した一部の最上位メタデータ項目の値を取得しています。
使用可能なパブリックキーのリストを取得する
次の例では、使用できるパブリックキーの一覧を取得しています。
パブリックキー 0 が使用できるフォーマットを示す
次の例は、パブリックキー0のフォーマットを示しています。
パブリックキー 0 を取得する (OpenSSH キーフォーマット)
次の例では、パブリックキー0を取得しています (OpenSSH キーフォーマット)。
インスタンスのサブネット ID を取得する
次の例では、インスタンスのサブネット ID を取得しています。
インスタンスのインスタンスタグを取得する
インスタンスメタデータ内のインスタンスタグへのアクセスが有効になっている場合は、インスタンスメタデータからインスタンスのタグを取得できます。詳細については、「インスタンスメタデータからタグを取得する」を参照してください。