Amazon MWAA で発生するエラー「logs_group のリモートログを読み込めませんでした」を解決する方法を教えてください。
Amazon Managed Workflows for Apache Airflow で発生するエラー「logs_group のリモートログを読み込めませんでした」を解決したいです。
簡単な説明
Amazon MWAA 環境でタスクまたは DAG を実行すると、次のエラーまたは類似したエラーが表示される場合があります。
「エラー: Cloudwatch log_group からリモートログを読み込んでいます。 log_group *** からリモートログを読み取れませんでした。MWAA タスクロググループで例外発生」
上記のエラーをトラブルシューティングするには、以下を確認します。
- AWS Identity and Access Management (IAM) アクセス許可
- ログ記録の構成設定
- ネットワーク接続
- ロググループ
- インストール要件
- ログ遅延
- 自動スケーリング
- CPU 使用率とメモリ競合
解決策
エラー「logs_group からリモートログを読み取れませんでした」をトラブルシューティングするには、以下を確認してください。
IAM アクセス許可
IAM アクセス許可を確認するには、次の手順を実行します。
-
お使いの Amazon MWAA 環境で、タスクログが INFO/WARN/ERROR レベルのログ記録に設定され、celery.sync_parallelism が 1 に設定されていることを確認します。詳細については、「Amazon MWAA で Apache Airflow 設定オプションを使用する」を参照してください。
-
関連する IAM ロールのアクセス許可ポリシーを確認します。ポリシーが他の AWS サービスのリソースを呼び出すアクセス許可を付与していることを確認してください。詳細については、「Amazon MWAA 実行ロール」を参照してください。
-
関連する Amazon CloudWatch ロググループにカスタマーマネージドキーがあるかどうかを確認します。ロググループにカスタマーマネージドキーがある場合は、AWS Key Management Service (AWS KMS) キーへのアクセスが許可されていることを確認します。
注: example-account-id は、お使いのアカウント ID に置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt" ], "Resource": "arn:aws:kms:*:<example-account-id>:key/*", "Effect": "Allow" } ] } -
上記のキーポリシーに次のアクセス許可があることを確認してください。
注: example-account-id は、お使いのアカウント ID に置き換えてください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::example-account-id:root" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion", "kms:GenerateDataKey", "kms:TagResource", "kms:UntagResource" ], "Resource": "*" }, { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { /* Commented this line... "kms:ViaService": "s3.us-west-2.amazonaws.com", */ "kms:CallerAccount": "example-account-id" } } }, { "Sid": "Allow logs access", "Effect": "Allow", "Principal": { "Service": "logs.us-west-2.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:<example-account-id>:*" } } } ] }
ログ記録の構成設定
Amazon MWAA 環境内のログ記録設定を確認します。設定が正しいことを確認してください。不適切な構成設定や Airflow DAG により、指定したロググループのリモートログへのアクセスがブロックされます。たとえば、DAG のログ構成が別のロググループにログを書き込むように設定されている場合、読み取りが失敗します。
ネットワーク接続
ネットワークの問題や CloudWatch の Amazon Virtual Private Cloud (Amazon VPC) エンドポイントの削除により、リモートログの読み取りが失敗します。この障害により、Amazon MWAA 環境は CloudWatch Logs と通信できなくなります。CloudWatch Logs に Amazon VPC エンドポイントがあることを確認してください。詳細については、「プライベートルーティングを使用して Amazon VPC に必要な VPC サービスエンドポイントを作成する」を参照してください。
ロググループ
ロググループを確認するには、次の手順を実行します。
- Amazon MWAA 環境に関連付けられている CloudWatch ロググループが削除されていたり、名前が変更されたりしていないかを確認します。ロググループが削除または名前変更された場合、それらのロググループにアクセスしようとしても失敗します。ロググループの名前を手動で変更したり削除したりするのはベストプラクティスではありません。
- Amazon MWAA の CloudWatch ロググループに指定されている ARN に誤りがあったり、古くなったりしていないかを確認します。ARN が誤っているか古い場合、MWAA はロググループを見つけてアクセスできません。このエラーは、ARN の入力を間違えた場合や、ロググループを別の AWS アカウントに移動した場合に発生します。
- CloudWatch ロググループの保持ポリシーを確認します。保持ポリシーによって期限切れになったロググループにアクセスしようとすると、読み取りエラーが発生します。ロググループが決して期限切れとならないようにするか、ロググループをより長い期間保持するように保存ポリシー設定を変更します。
注: デフォルトでは、ログは無期限に保存され、有効期限はありません。
インストール要件
インストール要件を確認します。バージョンの互換性がないことに起因する障害が発生していないことを確認します。インストール要件における障害を確認するには、Amazon MWAA 環境のワーカーロググループに移動します。カスタムプラグインと Python の依存関係をテストするには、aws-mwaa-local-runner を使用します。詳細については、GitHub ウェブサイトの「aws-mwaa-local-runner」を参照してください。
依存関係の不一致を確認するには、CloudWatch ログパスにある以下のインストール要件を確認します。
- ロググループ > airflow-MyMWAAenvironment-WebServer requirements_install_xxxx.ec2.internal_xxxx.log
- ロググループ > airflow-MyMWAAenvironment-Scheduler requirements_install_xxxx.ec2.internal_xxxx.log
- ロググループ > airflow-MyMWAAenvironment-Worker requirements_install_xxxx.ec2.internal_xxxx.log
ログ遅延
1 時間ごとや、時々実行されるタスクで長い遅延が起こる場合は、celery.worker_autoscale 設定を確認します。エラー率を減らすには、celery.worker_autoscale の 2 番目の値を 0 に設定します。たとえば、大規模環境を 20,0、中規模環境を 10,0、小規模環境を 5,0 に設定します。
自動スケーリング
自動スケーリングによってワーカーノードの数が増減すると、「logs_group からリモートログを読み取れませんでした」というエラーが発生することがあります。自動スケーリングによってこのエラーが発生した場合は、Amazon MWAA 自動スケーリングを無効にします。Amazon MWAA 自動スケーリングを無効にするには、min-workers 設定を max-workers 設定と同じ値にします。または、max-workers の設定値を増やします。詳細については、「Amazon MWAA ワーカーの自動スケーリングを設定する」を参照してください。
CPU 使用率とメモリ競合
MWAA 環境で CPU 使用率が高くメモリ競合が発生すると、リモートログの読み取り能力が影響を受ける場合があります。高い CPU 使用率またはメモリ競合による問題をトラブルシューティングするには、次の手順を実行します。
- Amazon MWAA 環境を新しいバージョンにアップグレードします。
- max-workers の設定値を増やします。
- Amazon MWAA のコンテナ、キュー、データベースメトリクスを監視します。
- Amazon MWAA 環境のパフォーマンスをチューニングします。
- 言語
- 日本語
