【问题标题】:python: I get InvalidToken error while using bucket.objects.filter(Prefi=myPrefixString) in boto3 1.7.21python:在 boto3 1.7.21 中使用 bucket.objects.filter(Prefi=myPrefixString) 时出现 InvalidToken 错误
【发布时间】:2018-12-07 01:05:51
【问题描述】:

我正在尝试从我的 s3 存储桶访问对象。我正在使用 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

【问题讨论】:

    标签: python amazon-s3 boto boto3 botocore


    【解决方案1】:

    更好的方法是下载并使用 AWS CLI 并运行命令 aws configure 以保存您的 access_key_idsecret_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)
    

    【讨论】:

      【解决方案2】:

      如果您传递了错误的会话令牌,则会发生此错误。在你的情况下,你没有包括它。

      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)
      

      【讨论】:

        猜你喜欢
        • 2020-12-11
        • 1970-01-01
        • 2017-06-23
        • 2020-06-13
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        相关资源
        最近更新 更多