Python 找不到凭据
我正在尝试使用airflow.hooks.S3Hook创建一个简单的DAG。hook协调了两个任务。第一个任务是在bash上打印一个简单字符串,第二个任务是将CSV文件上载到AWS s3 bucket。 所以我得到了这个错误:Python 找不到凭据,python,python-3.x,boto3,airflow,Python,Python 3.x,Boto3,Airflow,我正在尝试使用airflow.hooks.S3Hook创建一个简单的DAG。hook协调了两个任务。第一个任务是在bash上打印一个简单字符串,第二个任务是将CSV文件上载到AWS s3 bucket。 所以我得到了这个错误: unable to locate credentials 这是一个与aws_access_key_id和aws_secret_access_key有关的凭证错误。 我知道我可以用boto3解决它,但我
unable to locate credentials
这是一个与aws_access_key_id和aws_secret_access_key有关的凭证错误。
我知道我可以用boto3解决它,但我需要用airflow.hooks
from airflow import DAG
from airflow.hooks.S3_hook import S3Hook
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
default_arguments = {'owner': 'airflow', 'start_date': days_ago(1)}
def upload_file_to_s3_bucket(filename, key, bucket_name, region_name):
hook = S3Hook(aws_conn_id='aws_default')
hook.create_bucket(bucket_name, region_name)
hook.load_file(filename, key, bucket_name)
with DAG('upload_to_aws',
schedule_interval='@daily',
catchup=False,
default_args=default_arguments
) as dag:
bash_task = BashOperator(task_id='bash_task',
bash_command='echo $TODAY',
env={'TODAY': '2020-11-16'})
python_task = PythonOperator(task_id='py_task',
python_callable=upload_file_to_s3_bucket,
op_kwargs={'filename': '*******.csv',
'key': 'my_s3_reasult.csv',
'bucket_name': 'tutobucket',
'region_name': 'us-east-1'}
)
bash_task >> python_task
您在
S3Hook
中指定了一个aws\u conn\u id
。需要配置此连接,例如通过UI,请参阅:
气流需要知道如何连接到您的环境。诸如主机名、端口、登录名和其他系统和服务的密码等信息在UI的Admin->Connections部分进行处理。您将编写的管道代码将引用连接对象的“conn_id”
此外,还专门介绍了:
配置连接
- 登录(可选)-指定AWS访问密钥ID
- 密码(可选)-指定AWS秘密访问密钥
您在
S3Hook
中指定了一个aws\u conn\u id
。需要配置此连接,例如通过UI,请参阅:
气流需要知道如何连接到您的环境。诸如主机名、端口、登录名和其他系统和服务的密码等信息在UI的Admin->Connections部分进行处理。您将编写的管道代码将引用连接对象的“conn_id”
此外,还专门介绍了:
配置连接
- 登录(可选)-指定AWS访问密钥ID
- 密码(可选)-指定AWS秘密访问密钥
我解决了它,挖了一点后,我就能够让它工作了 在这些字段下,我指定:
Conn Id: aws_default
Conn Type: Amazon Web Services
Extra:
{"aws_access_key_id":"aws_access_key_id",
"secret_access_key": "aws_secret_access_key"}
我解决了它,挖了一点后,我就能够让它工作了 在这些字段下,我指定:
Conn Id: aws_default
Conn Type: Amazon Web Services
Extra:
{"aws_access_key_id":"aws_access_key_id",
"secret_access_key": "aws_secret_access_key"}
旧版本的airflow即使没有这个也可以工作,我刚刚升级到2.0.2,它似乎完全破坏了s3日志记录,我不想在UI中存储键,是否还有其他方法旧版本的airflow即使没有这个也可以工作,我刚刚升级到2.0.2,它似乎完全破坏了s3日志记录,我不想在UI中存储键,还有其他方法吗