无法从s3存储桶读取较大的csv文件到python

时间:2019-09-03 14:10:29

标签: python amazon-web-services csv amazon-s3

所以我正在尝试从s3存储桶加载一个csv文件。以下是代码

import pandas as pd
import boto3
import io

s3_file_key = 'iris.csv'
bucket = 'data'

s3 = boto3.client('s3')
obj = s3.get_object(Bucket=bucket, Key=s3_file_key)

initial_df = pd.read_csv(io.BytesIO(obj['Body'].read()))

工作正常。 iris.csv的大小只有3kb。
现在,我尝试读取的大小为6gb的“ mydata.csv”代替了iris.csv。

我收到以下错误:

  

ClientError:调用GetObject操作时发生错误(AccessDenied):访问被拒绝

由于我将数据放在第一位,所以我无法理解访问可能是一个问题。我也可以从同一位置读取“ iris.csv”。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

这是您可以做的几件事:

  1. 确保S3存储桶的区域与您的AWS配置相同。否则,它将无法正常工作。 S3服务是全局的,但是每个存储桶都是在特定区域中创建的。 AWS客户端应使用相同的区域。
  2. 确保资源的访问密钥具有正确的权限集。
  3. 确保文件实际上已上传。
  4. 确保没有应用撤销访问权限的存储桶策略。
  5. 您可以启用登录S3存储桶以查看错误。
  6. 确保未对存储桶进行版本控制。如果已版本化,请指定对象版本。
  7. 确保对象已定义了正确的ACL集。
  8. 如果对象已加密,请确保您具有使用该KMS密钥解密对象的权限。