Apache Airflow — Аутентификация AWS MFA

#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 🙂