[英]Save DataFrame in Python as csv and upload it on AWS S3 with public access
在 python 中准備一堆 DataFrame 后,我想直接將其保存在 Amazon AWS 上。
我的代碼以如下結尾:
new_output_csv = pd.read_csv("C:/Users/output.csv")
...
new_output_csv.to_csv("C:/Users/output1.csv", index=False)
我試過了:
import boto3
session = boto3.Session(
aws_access_key_id='xxx',
aws_secret_access_key='yyy',)
s3 = session.resource('s3')
s3.meta.client.upload_file(Filename='C:/Users/output1.csv', Bucket='test1234542', Key='output1.csv')
不幸的是,boto 模塊似乎無法正常工作。
我正在使用 python 3.7。
這也是必要的,該文件具有公共訪問權限,因為另一個服務每天都在獲取更新的文件......
最佳道
它是給你一個錯誤還是文件只是沒有出現在 S3 中?
將文件上傳到存儲桶的非常簡單的版本是獲取存儲桶本身並使用 upload_file 方法:
import boto3
session = boto3.Session(
aws_access_key_id='xxx',
aws_secret_access_key='yyy'
)
s3 = session.resource('s3')
bucket = s3.Bucket('test1234542')
bucket.upload_file('C:/Users/output1.csv', 'output1.csv')
我認為這就足夠了。
import boto3
s3 = boto3.resource('s3', aws_access_key_id='xxx', aws_secret_access_key='yyy')
s3.Bucket('test1234542').upload_file('C:/Users/output1.csv', 'output1.csv')
如果要將 object 設為公共讀取,則可以使用ObjectAcl
和put
命令,請參閱文檔。
object_acl = s3.ObjectAcl('bucket_name','object_key')
response = object_acl.put(
ACL='private'|'public-read'|'public-read-write'|'authenticated-read'|'aws-exec-read'|'bucket-owner-read'|'bucket-owner-full-control',
AccessControlPolicy={
'Grants': [
{
'Grantee': {
'DisplayName': 'string',
'EmailAddress': 'string',
'ID': 'string',
'Type': 'CanonicalUser'|'AmazonCustomerByEmail'|'Group',
'URI': 'string'
},
'Permission': 'FULL_CONTROL'|'WRITE'|'WRITE_ACP'|'READ'|'READ_ACP'
},
],
'Owner': {
'DisplayName': 'string',
'ID': 'string'
}
},
GrantFullControl='string',
GrantRead='string',
GrantReadACP='string',
GrantWrite='string',
GrantWriteACP='string',
RequestPayer='requester',
VersionId='string'
)
應該定義Grants Type,即Group,其他的都是選項。 您可能需要 ACL 才能公開閱讀。
我解決了它:
s3 = boto3.resource('s3', aws_access_key_id='xxx', aws_secret_access_key='yyy')
s3.Bucket('test1234542').upload_file('C:/Admin/final1.csv', final1.csv', ExtraArgs={'ACL':'public-read'})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.