【发布时间】:2022-09-27 16:09:53
【问题描述】:
我正在使用 Prefect。我试图从 S3 下载一个文件。
当我硬编码 AWS 凭证时,可以成功下载文件:
import asyncio
from prefect_aws.s3 import s3_download
from prefect_aws.credentials import AwsCredentials
from prefect import flow, get_run_logger
@flow
async def fetch_taxi_data():
logger = get_run_logger()
credentials = AwsCredentials(
aws_access_key_id=\"xxx\",
aws_secret_access_key=\"xxx\",
)
data = await s3_download(
bucket=\"hongbomiao-bucket\",
key=\"hm-airflow/taxi.csv\",
aws_credentials=credentials,
)
logger.info(data)
if __name__ == \"__main__\":
asyncio.run(fetch_taxi_data())
现在我尝试从Prefect Blocks 加载凭据。
我创建了一个 AWS 凭证块:
然而,
aws_credentials_block = AwsCredentials.load(\"aws-credentials-block\")
data = await s3_download(
bucket=\"hongbomiao-bucket\",
key=\"hm-airflow/taxi.csv\",
aws_credentials=aws_credentials_block,
)
抛出错误:
AttributeError: \'coroutine\' 对象没有属性 \'get_boto3_session\'
和
aws_credentials_block = AwsCredentials.load(\"aws-credentials-block\") credentials = AwsCredentials( aws_access_key_id=aws_credentials_block.aws_access_key_id, aws_secret_access_key=aws_credentials_block.aws_secret_access_key, ) data = await s3_download( bucket=\"hongbomiao-bucket\", key=\"hm-airflow/taxi.csv\", aws_credentials=credentials, )抛出错误:
AttributeError: \'coroutine\' 对象没有属性 \'aws_access_key_id\'
我没有找到任何关于如何使用它的有用文档。
我应该使用 Blocks 来加载凭据吗?如果是,在 Prefect 中正确使用 Blocks 的正确方法是什么?谢谢!