はじめに:MWAAの設定に悩むエンジニアへ
AWS Managed Workflows for Apache Airflow(MWAA)は、Apache Airflowをマネージドで提供するサービスです。
しかし、「どのパラメータをどのように設定すればよいのか分からない」という課題に直面するエンジニアも多いのではないでしょうか。
本記事では、MWAAの主要な設定パラメータについて、公式ドキュメントや実務経験に基づいた解説を行い、ベストプラクティスや注意点も併せて紹介します。
MWAAとは?その概要と背景
MWAAは、Apache Airflowのワークフロー管理をAWS上で簡単に実現できるマネージドサービスです。
Airflowの設定ファイルであるairflow.cfg
の内容を、MWAAでは環境変数として設定することで、柔軟な構成が可能となっています。
これにより、スケーラビリティや可用性の高いワークフロー管理が実現できます。
よくある課題とエラー
MWAAの設定において、以下のような課題やエラーが報告されています:
-
タスクの同時実行数が制限される:
core.parallelism
やcore.dag_concurrency
の設定不足。 -
カスタムプラグインが読み込まれない:
core.lazy_load_plugins
の設定がTrue
のまま。 -
Secrets Managerとの連携エラー:
secrets.backend
やsecrets.backend_kwargs
の設定ミス。 - メール通知が送信されない:SMTP設定の不足や誤り。
主要パラメータの解説と設定例
以下に、MWAAで設定可能な主要なパラメータとその設定例を示します。
1. タスク関連の設定
core.parallelism = 40
core.dag_concurrency = 16
core.default_task_retries = 3
これらの設定により、タスクの同時実行数やリトライ回数を制御できます。
2. スケジューラー関連の設定
scheduler.catchup_by_default = False
scheduler.scheduler_zombie_task_threshold = 300
スケジューラーの挙動や、ゾンビタスクの検出時間を設定できます。
3. ワーカーのオートスケーリング設定
celery.worker_autoscale = 16,12
ワーカーの最大・最小同時実行数を設定し、負荷に応じたスケーリングを実現します。
4. Secrets Managerとの連携設定
secrets.backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
secrets.backend_kwargs = {"connections_prefix": "airflow/connections", "variables_prefix": "airflow/variables"}
AWS Secrets Managerを利用して、接続情報や変数の安全な管理が可能です。
5. メール通知設定
email.email_backend = airflow.utils.email.send_email_smtp
smtp.smtp_host = smtp.gmail.com
smtp.smtp_starttls = True
smtp.smtp_ssl = False
smtp.smtp_port = 587
smtp.smtp_user = your_email@gmail.com
smtp.smtp_password = your_app_password
メール通知を有効にするためのSMTP設定です。Gmailのアプリパスワードを使用することを推奨します。
ベストプラクティスと運用上の注意点
MWAAの運用において、以下のベストプラクティスを遵守することが重要です:
- 最小権限の原則:IAMロールやポリシーは、必要最小限の権限に留める。
- Secrets Managerの活用:接続情報や変数はSecrets Managerで管理し、コード内にハードコーディングしない。
- CI/CDの導入:DAGのデプロイはCI/CDパイプラインを通じて行い、手動での変更を避ける。
- ログの監視:CloudWatch Logsを活用し、エラーや異常の早期検出を行う。
-
バージョン管理:
requirements.txt
やplugins.zip
はS3でバージョン管理し、変更履歴を追跡可能にする。
まとめと今後の展望
MWAAの設定は多岐にわたりますが、各パラメータの意味と役割を正しく理解し、適切に設定することが、安定したワークフロー運用の鍵となります。
今後は、より高度な設定やトラブルシューティングについても取り上げていく予定です。
本記事が、MWAAの設定に悩むエンジニアの一助となれば幸いです。