我的Airflow应用程序在AWS EC2实例中运行,该实例也具有IAM角色。目前,我正在使用硬编码访问和密钥创建Airflow S3连接。但我希望我的应用程序从此实例本身获取此AWS凭据。
怎么做到这一点?
我们有类似的设置,我们的Airflow实例在EC2机器内部署的容器内运行。我们设置了在EC2机器实例配置文件上访问S3的策略。您无需在EC2计算机中获取凭据,因为计算机具有应具有您所需的所有权限的实例配置文件。从Airflow方面,我们只使用aws_default连接,在额外参数中我们只设置默认区域,但没有任何凭据。这里有一篇关于Intance Profiles的详细文章:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
问题已得到解答,但为了将来参考,可以不依赖于aws_default
而只是通过环境变量来实现。以下是使用AWS连接将日志写入s3以使IAM受益的示例:
AIRFLOW_CONN_AWS_LOG="aws://"
AIRFLOW__CORE__REMOTE_LOG_CONN_ID=aws_log
AIRFLOW__CORE__REMOTE_LOGGING=true
AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER="s3://path to bucket"