Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到凭据_Python_Python 3.x_Boto3_Airflow - Fatal编程技术网

Python 找不到凭据

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解决它,但我

我正在尝试使用airflow.hooks.S3Hook创建一个简单的DAG。hook协调了两个任务。第一个任务是在bash上打印一个简单字符串,第二个任务是将CSV文件上载到AWS s3 bucket。 所以我得到了这个错误:

                                   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中存储键,还有其他方法吗