python:在boto3 1.7.21中使用bucket.objects.filter(Prefi = myPrefixString)时出现InvalidToken错误

时间:2018-06-28 04:07:30

标签: python amazon-s3 boto boto3 botocore

我正在尝试从s3存储桶访问对象。 IAM使用boto3 1.7.21。首先,我使用

创建了一个会话
session = boto3.session.Session(aws_access_key_id=aws_access_key_id,
                  aws_secret_access_key=aws_secret_access_key,
                  region_name=region_name)

然后尝试使用过滤器获取对象

session.resources("s3").Bucket(myBucketName)
.objects.filter(Prefix=myPrefix)

我收到以下错误

ClientError: An error occurred (InvalidToken) when calling the ListObjects operation: The provided token is malformed or otherwise invalid.

我的开发版本:

  • python-2.7,
  • boto3-1.7.21,
  • botocore-1.10.35

2 个答案:

答案 0 :(得分:0)

一种更好的方法是下载并使用 AWS CLI ,然后运行命令 aws configure 保存您的 access_key_id secret_access_key 和本地计算机中的默认 region ,然后运行以下给出的python脚本:

import boto3

s3 = boto3.resource('s3')
bucket=s3.Bucket('bucket_name')

for obj in bucket.objects.filter(Prefix='Event/'):
    print(obj.key)

答案 1 :(得分:0)

如果传递错误的会话令牌,则会发生此错误。就您而言,您没有包括它。

session = boto3.session.Session(
   aws_access_key_id=aws_access_key_id,
   aws_secret_access_key=aws_secret_access_key,
   region_name=region_name, 
   aws_session_token=aws_session_token)