#amazon-web-services #airflow #kubernetes-helm
#amazon-веб-сервисы #воздушный поток #kubernetes- рулевой
Вопрос:
Я запускал Airflow с помощью helm chart. Целью airflow является вызов пакетного задания AWS в базах данных, как показано ниже.
batch = AWSBatchOperator(
task_id='batch',
job_name='my-job',
job_definition='arn:aws:batch:my-job-def',
job_queue='arn:aws:batch:my-job-queue',
overrides={
'command': ["echo", "hello"]
},
array_properties={},
parameters={},
region_name='my-region',
dag=dag
)
Когда я вызываю эту команду, задача завершается ошибкой с приведенным ниже журналом.
[2020-12-01 08:30:11,642] {awsbatch_operator.py:150} INFO - AWS Batch Job has failed executed
[2020-12-01 08:30:11,660] {taskinstance.py:1150} ERROR - Unable to locate credentials
Это кажется разумным, потому что наша политика AWS заставляет пользователей входить в систему с помощью MFA, чтобы что-то делать в AWS.
Как я могу определить, что эти данные (такие как aws_access_key, secret и т. Д.) Входят в указанную выше среду?Должно ли это быть определено в значениях helm chart.yaml или пользовательский интерфейс AirFlow?
Ответ №1:
в случае, если вы используете airflow на AWS, вы должны иметь возможность прикрепить роль IAM к экземпляру (EC2), задачам (ECS) или pod (EKS), чтобы учетные данные не учитывались, а скорее была привязана роль IAM.
Кроме того, в AWS есть управляемый сервис airflow: https://aws.amazon.com/blogs/aws/introducing-amazon-managed-workflows-for-apache-airflow-mwaa /
Комментарии:
1. Я запускаю airflow не на AWS, а на независимом кластере K8s. Могу ли я также назначить роль IAM в этом случае? Я действительно хочу использовать MWAA, но пока не обслуживается в моем регионе (ap-northeast-2): (
2. Сам им не пользовался. Я бы сказал, что вам может потребоваться ввести
.aws/credentials
секреты через k8s.3. Спасибо за отзыв. Я создал configmap из своих локальных файлов в ~/.aws и смонтировал его в pod. Подтверждено, что он был успешно применен. однако k8s secret был бы лучшим решением. Теперь я пытаюсь использовать роль IAM 🙂