相关疑难解决方法(0)

如何使用boto将文件从Amazon S3流式传输到Rackspace Cloudfiles?

我正在将文件从S3复制到Cloudfiles,我想避免将文件写入磁盘.Python-Cloudfiles库有一个看起来像我需要的object.stream()调用,但我找不到boto中的等效调用.我希望我能够做到这样的事情:

shutil.copyfileobj(s3Object.stream(),rsObject.stream())
Run Code Online (Sandbox Code Playgroud)

这可能与boto(或我认为任何其他s3库)?

python amazon-s3 rackspace cloudfiles boto

30
推荐指数
5
解决办法
3万
查看次数

将文件从专用S3存储桶读取到pandas数据帧

我正在尝试将私有S3存储桶中的CSV文件读取到pandas数据帧:

df = pandas.read_csv('s3://mybucket/file.csv')
Run Code Online (Sandbox Code Playgroud)

我可以从公共存储桶读取文件,但从私有存储桶读取文件会导致HTTP 403:Forbidden错误.

我已使用aws configure配置了AWS凭据.

我可以使用boto3从私有桶下载文件,它使用aws凭据.我似乎需要配置pandas以使用AWS凭据,但不知道如何.

amazon-web-services pandas

18
推荐指数
5
解决办法
3万
查看次数

如何使用Python中的Pandas从s3存储桶读取csv文件

我正在尝试使用以下代码将位于AWS S3存储桶中的CSV文件作为pandas数据帧读入内存:

import pandas as pd
import boto

data = pd.read_csv('s3:/example_bucket.s3-website-ap-southeast-2.amazonaws.com/data_1.csv')
Run Code Online (Sandbox Code Playgroud)

为了提供完全访问权限,我在S3存储桶上设置了存储桶策略,如下所示:

{
"Version": "2012-10-17",
"Id": "statement1",
"Statement": [
    {
        "Sid": "statement1",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::example_bucket"
    }
]
Run Code Online (Sandbox Code Playgroud)

}

不幸的是我仍然在python中得到以下错误:

boto.exception.S3ResponseError: S3ResponseError: 405 Method Not Allowed
Run Code Online (Sandbox Code Playgroud)

想知道是否有人可以帮助解释如何在AWS S3中正确设置权限或正确配置pandas以导入文件.谢谢!

python amazon-s3 amazon-web-services pandas

7
推荐指数
4
解决办法
3万
查看次数

使用boto和pandas从aws s3读取csv文件

我已经阅读了这里这里的答案,这些都没有用.

我试图csvS3桶中读取一个对象,并已能够使用以下代码成功读取数据.

srcFileName="gossips.csv"
def on_session_started():
  print("Starting new session.")
  conn = S3Connection()
  my_bucket = conn.get_bucket("randomdatagossip", validate=False)
  print("Bucket Identified")
  print(my_bucket)
  key = Key(my_bucket,srcFileName)
  key.open()
  print(key.read())
  conn.close()

on_session_started()
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用pandas作为数据框读取同一个对象,我会收到错误.最常见的是S3ResponseError: 403 Forbidden

def on_session_started2():
  print("Starting Second new session.")
  conn = S3Connection()
  my_bucket = conn.get_bucket("randomdatagossip", validate=False)
  #     url = "https://s3.amazonaws.com/randomdatagossip/gossips.csv"
  #     urllib2.urlopen(url)

  for line in smart_open.smart_open('s3://my_bucket/gossips.csv'):
     print line
  #     data = pd.read_csv(url)
  #     print(data)

on_session_started2()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我在python 2.7上,不能使用Python 3.

python amazon-s3 boto python-2.7 pandas

5
推荐指数
2
解决办法
2万
查看次数

Boto3 逐行从 S3 键读取文件内容

使用 boto3,您可以从 S3 中的某个位置读取文件内容,根据存储桶名称和密钥(这假设是初步的import boto3

s3 = boto3.resource('s3')

content = s3.Object(BUCKET_NAME, S3_KEY).get()['Body'].read()
Run Code Online (Sandbox Code Playgroud)

这将返回一个字符串类型。我需要获取的特定文件恰好是一组类似字典的对象,每行一个。所以它不是 JSON 格式。我不想将其作为字符串读取,而是将其作为文件对象流式传输并逐行读取;除了首先在本地下载文件之外,找不到其他方法来执行此操作

s3 = boto3.resource('s3')

bucket = s3.Bucket(BUCKET_NAME)

filename = 'my-file'
bucket.download_file(S3_KEY, filename)

f = open('my-file')
Run Code Online (Sandbox Code Playgroud)

我要问的是是否可以对文件进行这种类型的控制,而不必先在本地下载它?

python amazon-s3 amazon-web-services boto3

5
推荐指数
3
解决办法
1万
查看次数