Translated message

A translation of this page exists in English.

Ansible Automation Platform (AAP) の AWS 経由の外部ロギング

更新 -

概要

このガイドでは、Amazon Web Services (AWS) を使用して、Ansible Automation Platform (AAP) から外部のログアグリゲーターに自動化ログを転送するための標準設定について説明します。

AAP は多くのプラットフォームに直接ログを記録できますが、このアーティクルでは サーバーレスアーキテクチャー (Amazon API Gateway + Kinesis Firehose) を使用したエンドツーエンドの例を示します。これは、専用の "ログコレクター仮想" マシン、OS ファイアウォール、パッチ適用を管理する必要がなくなり、AAP がデータを送信するための安全な HTTPS エンドポイントが提供されることから、AWS 環境に推奨されるパターンです。

ステップ 1: インフラストラクチャーのセットアップ (AWS)

A. データストリームの作成 (Kinesis Firehose)

このサービスは、ログを受信してストレージに書き込むパイプラインとして機能します。

  1. AWS コンソールで Kinesis に移動します。
  2. Create Delivery Stream を選択します。
  3. Source: Direct PUT。
  4. Destination: Amazon S3。
  5. S3 Bucket: 新しいバケット (例: aap-automation-logs-2026) を作成するか、既存のバケットを選択します。
  6. Buffering: 5 MB または 300 秒 に設定します (標準の推奨設定)。
  7. Create Delivery Stream をクリックします。

B. セキュリティーロール (IAM) の作成

重要なステップ: 権限がない場合、API Gateway は Firehose に書き込めません。

1. API ゲートウェイロールの作成

  • IAM > Roles > Create Role に移動します。
  • Trusted Entity: API Gateway を選択します。
  • Permissions: 次の JSON を使用して新しいインラインポリシーを作成します。
{
"Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "firehose:PutRecord",
      "Resource": "arn:aws:firehose:us-east-1:123456789012:deliverystream/YOUR_STREAM_NAME"
    }
  ]
}
  • Role Name: APIGateway-Firehose-Proxy-Role。
  • Copy the Role ARN: 次のステップでこれが必要になります。

C. リスナーの作成 (API ゲートウェイ)

これにより、AAP が通信するパブリック HTTPS URL が作成されます。

  1. API Gateway に移動します。
  2. REST API を作成します。
  3. Create Resource: 名前を log にします (URL は .../v1/log になります)。
  4. Create Method: POST を選択します。
  5. Integration Type: AWS Service。
    • AWS Service: Firehose。
    • Action: PutRecord。
    • Execution Role: ステップ 1B で作成した APIGateway-Firehose-Proxy-Role の ARN を貼り付けます。
  6. Deploy API: ステージ (例: v1) を選択します。
  7. Copy the Invoke URL: (例: https://xyz123.execute-api.us-east-1.amazonaws.com/v1/log)。

ステップ 2: 送信者の設定 (AAP)

Ansible Automation Platform の送信先を新しいサーバーレスコレクターに指定します。

  1. AAP で、Settings > Logging に移動します。
  2. Enable External Logging: On に切り替えます。
  3. Logging Aggregator Type: Splunk を選択します (これは AWS と互換性のある JSON 形式です)。
  4. Logging Aggregator: API ゲートウェイからコピーした Invoke URL (例: https://xyz123.../v1/log) を入力します。
  5. Logging Aggregator Port: 空白のままにするか、443 (HTTPS のデフォルト) に設定します。
  6. Logging Aggregator Protocol: HTTPS。
  7. Save and Test をクリックします (ボタンは緑色に変わります)。

ステップ 3: データ分析の設定 (Amazon Athena)

テキストファイルを保存する仮想マシンとは異なり、S3 ではデータを読み取るためにクエリーエンジンが必要です。Amazon Athena を使用して、ログバケットを検索可能なデータベースに変換します。

  1. Amazon Athena に移動します。
  2. Query Editor を開きます。
  3. 次の SQL コマンドを実行して、"Raw" テーブルを作成します。この方法は、システムログでの JSON 解析エラーを回避するために推奨されています。
CREATE EXTERNAL TABLE IF NOT EXISTS aap_raw_debug (
  raw_line string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\0'
LINES TERMINATED BY '\n'
LOCATION 's3://aap-automation-logs-2026/';

ステップ 4: 検証 (視覚的検証)

ログは AAP ➔ API Gateway ➔ Firehose ➔ S3 で流れるようになります。パイプラインが機能していることを確認するには、Amazon Athena を使用して、特定の自動化ジョブが正常に完了することを確認します。

検証クエリー

この SQL クエリーを Athena で実行します。具体的には "Finalize Run" イベントを確認します。これは、システムノイズを除去しつつ、コントローラーがジョブの処理を完了したことを確認します。

SELECT 
  -- 1. Get the Timestamp (Cast to string to prevent serialization errors)
  CAST(from_unixtime(CAST(json_extract_scalar(raw_line, '$.time') AS double)) AS VARCHAR) as Time,
  -- 2. Extract the Success Message
  json_extract_scalar(raw_line, '$.event.message') as Message,
  -- 3. Extract the Final Status (e.g., 'finalize_run')
  json_extract_scalar(raw_line, '$.event.lifecycle_data.state') as Status
FROM aap_raw_debug
WHERE raw_line LIKE '%finalize_run%'     -- Filter for the completion event
ORDER BY Time DESC
LIMIT 1;

期待される結果

最新のジョブの完了を示す 1 行が表示されます。
Athena での AAP ログの視覚的検証:
 

サンプル JSON ペイロード:

これは、上記の出力を生成した S3 でキャプチャーされた生データです。

{"@timestamp":"2026-01-16T01:04:47.612Z","message":"projectupdate-611 waiting {\"type\": \"projectupdate\", \"task_id\": 611, \"state\": \"waiting\", \"work_unit_id\": null, \"task_name\": \"Demo Project\"}","host":"automation-controller-task-79d47497cf-q7xvj","level":"INFO","logger_name":"awx.analytics.job_lifecycle","lifecycle_data":{"type":"projectupdate","task_id":611,"state":"waiting","work_unit_id":null,"task_name":"Demo Project"},"organization_id":1,"cluster_host_id":"automation-controller-task-79d47497cf-q7xvj","tower_uuid":null}}

サポート対象のログアグリゲーター

このガイドでは AWS ネイティブサービスを使用していますが、このアーキテクチャーは以下の転送先にも対応しています。

  • Splunk: Kinesis Firehose で宛先を "Splunk" に指定します。
  • Datadog: Kinesis Firehose で宛先を "Datadog" に指定します。
  • Elastic Stack (ELK): Kinesis Firehose で宛先を "Elasticsearch" に指定します。
  • New Relic: Kinesis Firehose で宛先を "New Relic" に指定します。

参考ドキュメント

  • Amazon API Gateway as a Kinesis Proxy:
    https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-kinesis.html
  • Querying JSON in Athena:
    https://docs.aws.amazon.com/athena/latest/ug/querying-JSON.html

Comments