upload a csv to aws s3


def store_to_10_rss(tempDF):
s3 = boto3.resource('s3')
try:
s3.Object('abcData', 'cr/working-files/unstructured_data/news-links/10_rss.csv').load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
print('nThe object does not exist.')
tempDF.to_csv('10_rss.csv')
s3.Object('abcData/cr/working-files/unstructured_data/news-links/', '10_rss.csv').upload_file(Filename='10_rss.csv')

else:
print('nSomething else has gone wrong.') 
raise
else:
print('nThe object does exist.')

在我的S3中,有多个bucket。我想去abcData桶。在这个桶里,我想去cr文件夹,然后到->working-files文件夹,然后到->unstructured_data文件夹,然后到->news-links文件夹。在新闻链接文件夹中,我想检查是否存在csv '10_rss'。如果它不存在,我想将传入的数据框' tempDF'存储在csv中,并将该文件上传到路径'abcData/cr/working-files/unstructured_data/news-links/'。但这给了我一个错误:ParamValidationError:参数验证失败:无效的桶名"sgfr01data/credit-memorandum/working-files/unstructured_data/news-links/":桶名必须匹配正则表达式"^[a-zA-Z0-9.-_]{1,255}$"或者是一个正则表达式匹配的是"^攻击:(aws)。: s3: [a-z-0-9] +: [0 - 9] {12}: accesspoint [/:] [a-zA-Z0-9 -]{63} $ | ^攻击:(aws)。: s3-outposts: [a-z-0-9] +:[0 - 9]{12}:前哨(/:][a-zA-Z0-9 -] {63} [/:] accesspoint [/:] [a-zA-Z0-9 -]{63}"美元;

任何帮助将不胜感激!

请更正AWS S3 upload_file的语法。参考这些来自AWS的文件上传示例。另外,您可以参考AWS boto3 API指南了解更多详细信息。

简而言之,在您当前的错误和示例代码中,您使用了AWS S3桶密钥或AWS S3文件夹以及AWS S3桶名称的组合,这不应该是upload_fileboto3 api的情况。"AWS S3桶名"即"sgfr01data"必须是单独的参数。

最新更新