Attribute AWS integration
Install with Attribute Terraform
スムーズな実装を行うために、Attribute は請求情報の抽出とセンサー登録のセットアップを自動化する Terraform モジュールを提供しています。Terraform の詳細なドキュメントとサンプルは、Terraform モジュール内の [README] に記載されています。
AWS Account Types
このモジュールは、AWS 組織の管理アカウントおよびメンバーアカウント(サブアカウントとも呼ばれます)の両方へのインストールをサポートします。Terraform は、CloudFormation を使用して Attribute ソリューションに必要なすべてのインフラストラクチャを作成します。
次の点に注意してください。
- サポートされる Terraform のバージョンは 1.9 以上 です。
- センサーをデプロイする必要がある場合は、Terraform モジュールを各サブアカウントにデプロイする必要があります。さらに、請求アカウントまたは支払者アカウントを使用している場合は、コストを完全に可視化するために、その請求/支払者アカウントと紐付くサブアカウントの両方にモジュールをデプロイする必要があります。これらのアカウントインストールは同じ Terraform state で管理されるようにすることを推奨します。
- このモジュールは、コンピュートインフラストラクチャ上に Attribute センサーをデプロイし ません。その作業は、各コンピュートクラスタごとに異なるツールで実施します(Attribute のインストールガイドを参照してください)。
- Terraform モジュールは、アカウントのリソースが別のリージョンにある場合でも、
us-east-1で実行する必要があります。 - モジュールを実行するときは、
account_typeパラメーターを使用して、AWS Organization の管理アカウントにデプロイしているのか、センサーをインストールするメンバー(サブ)アカウントにデプロイしているのかを指定してください。
Resources Created by This Module
AWS 管理アカウント上で実行した場合、次のリソースが作成されます。
- CUR 2.0 レポートおよび請求データのエクスポートリソースを保存するための S3 バケットおよび ACL。
- Attribute が AWS API にアクセスできるようにする IAM ロール。
- データ取得を容易にする Data Export リソース。
- Attribute センサー登録を自動化する CloudFormation スタック。
- コストトラッキングをサポートするための EKS(および該当する場合は ECS)コストアロケーションタグ。
AWS メンバーアカウント上で実行した場合、次のリソースが作成されます。
- Attribute が AWS API にアクセスできるようにする IAM ロール。
- Attribute センサー登録を自動化する CloudFormation スタック。
Upgrading an Existing Attribute Terraform Module
アップグレード時には、既存の ZouzCURExport リソースを手動で削除してください。
Appendix A: Detailed Installation Instructions
この付録では、管理アカウント の設定からメンバーアカウントへのセンサーデプロイまで、セットアッププロセス全体を順を追って説明します。
Step 1 — Billing Integration
以下のステップは 管理アカウント(支払者アカウント)のみ で実施してください。
-
Terraform のバージョンが 1.9 以上であることを確認します。
terraform version -
デプロイ前に、
us-east-1リージョンで操作していることを確認します。 -
Attribute から受け取った
main.tfファイル内の次の変数を更新します。- 使用している Terraform プロファイルを更新し、正しい AWS アカウントを参照するようにします。
- リージョンが
us-east-1に設定されていることを確認します(他のリージョンに変更しないでください)。 - エイリアスが
"management"に設定されていることを確認します。 - アカウント名を
"change-me"から実際のアカウント名に更新します。 organization_idは変更 しないでくださ い。そのままにしておきます。
terraform {required_providers {aws = {source = "hashicorp/aws"version = "~> 5.0"}}}provider "aws" {region = "us-east-1"alias = "management"}# provider "aws" {# region = "us-east-1"# alias = "sub-1"# }resource "random_uuid" "external_id" {}module "attribute-sensor" {source = "ZouzIO/attribute-sensor/aws"version = "~> 2.1"account_type = "management"account_name = "change-me"organization_id = "XXXX-XXXX-XXX-XXXX-XXXXXXX"external_id = random_uuid.external_id.idproviders = {aws = aws.management}}# module "attribute-sensor-sub" {# source = "ZouzIO/attribute-sensor/aws"# version = "~> 2.1"## account_type = "sub"# account_name = "change-me-sub"# organization_id = "XXXX-XXXX-XXX-XXXX-XXXXXXX"# external_id = random_uuid.external_id.id## providers = {# aws = aws.sub-1# }# } -
Terraform を適用します。
terraform initterraform apply -
検証。 管理アカウントの AWS Console にログインし、次のリソースが作成されていることを確認します。
-
CUR 2.0 レポートおよび Data Export を保存するための S3 バケット。


-
Attribute が AWS API にアクセスできるようにする IAM ロール。

-
Step 2 — Sensor Implementation
センサーをデプロイする予定の各メンバーアカウント(サブアカウント)を構成します。これには 2 つのパートがあります。1 つ目は、事前要件を作成するために Terraform を実行すること(サブアカウントごとに 1 回のみ)、2 つ目は、各 EKS クラスタ上に Helm チャートを使用してセンサーをデプロイすることです。
Step 2.1 — Terraform Prerequisite Setup (Member Account)
以下のステップは、メンバーアカウント(サブアカウント)ごとに 1 回 実行してください。
-
メンバーアカウントを反映するように、Attribute から受け取った
main.tfファイルを更新します。- Terraform プロファイルを更新し、正しい AWS アカウントを参照するようにします。
- サブアカウントのエイリアスを持つ追加の provider のコメントを解除します(必要に応じて複数のサブアカウント provider を定義できます)。
- サブアカウントモジュールのコメントを解除し、アカウント名を
"change-me-sub"から実際のサブアカウント名に更新します。 organization_idは変更 しないでください。そのままにしておきます。
terraform {required_providers {aws = {source = "hashicorp/aws"version = "~> 5.0"}}}provider "aws" {region = "us-east-1"alias = "management"}provider "aws" {region = "us-east-1"alias = "sub-1"}resource "random_uuid" "external_id" {}module "attribute-sensor" {source = "ZouzIO/attribute-sensor/aws"version = "~> 2.1"account_type = "management"account_name = "change-me"organization_id = "XXXX-XXXX-XXX-XXXX-XXXXXXX"external_id = random_uuid.external_id.idproviders = {aws = aws.management}}module "attribute-sensor-sub" {source = "ZouzIO/attribute-sensor/aws"version = "~> 2.1"account_type = "sub"account_name = "change-me-sub"organization_id = "XXXX-XXXX-XXX-XXXX-XXXXXXX"external_id = random_uuid.external_id.idproviders = {aws = aws.sub-1}} -
Terraform を適用します。
terraform apply -
検証。 AWS Console でサブアカウントにログインし、Attribute が AWS API にアクセスできる IAM ロールが作成されていることを確認します。
Step 2.2 — Deploying the Sensor with Helm on EKS
センサーをデプロイしたいすべての EKS クラスタで、以下のステップを繰り返してください。
-
Attribute から提供された values ファイル(
values.yaml)を保存します。このファイルには、一意のエフェメラルトークンが含まれています。 -
values ファイル内の Java インストルメンテーション設定を確認します。デフォルトで、ファイルには次のフラグが含まれています。
# Java instrumentation settingssensorDisableAutoJavaInstrumentation: truejavaAutoInject:enabled: trueこの構成は Kubernetes 1.28 以上 でサポートされます。インジェクションバックエンドは自動的に選択されるため、バージョン固有の調整は不要です。
センサーのダイナミック Java インストルメンテーションを admission-time インジェクションの代わりに使用するには、
javaAutoInject.enabledをfalseに設定し、かつsensorDisableAutoJavaInstrumentationをfalseに設定してください。両方を同時に有効化してはいけません。両モードの詳細な説明については、Attribute Java Instrumentation Guide を参照してください。 -
使用している Helm のバージョンを確認します。サポートされるのは 3.8.0 以上です。
helm version -
Helm チャートをインストールします。
helm upgrade -i attribute \oci://quay.io/attribute/operator-chart \-f <values.yaml> \-n attribute \--create-namespace -
任意 — トークンをシークレットとして設定。 外部のシークレットマネージャーを使用してトークンをシークレットとして保存したい場合は、values ファイルに次の設定を追加してください。
initconfig:create_secret: falseorgToken:secretName: external-secret-namesecretKey: external-secret-key -
検証。 次のコマンドを実行して、Helm リリースが作成され、operator とセンサーが稼働していることを確認します。
helm list -n attributekubectl get pods -n attribute期待される出力例:


その他のコンピュートリソースタイプ(スタンドアロン、Fargate など)にセンサーをデプロイしたい場合は、該当するセンサーデプロイのドキュメントを参照してください。
商標: AWS は Amazon.com, Inc. またはその関連会社の商標です。Terraform は HashiCorp, Inc. の登録商標です。Kubernetes は The Linux Foundation の登録商標です。その他の商標は、それぞれの所有者に帰属します。