Python boto3 s3.head_桶仅在从变量读取时返回403禁止

Python boto3 s3.head_桶仅在从变量读取时返回403禁止,python,variables,amazon-s3,boto3,Python,Variables,Amazon S3,Boto3,我有这个: with open('my_file', 'r') as f_in: for i in f_in: response = s3.head_bucket(Bucket='i') print(response) 我希望为我的_文件中的那些bucket获取bucket属性,但我得到的是: botocore.exceptions.ClientError:调用HeadBucket操作时发生错误(403):禁止 如果我只输入一个bucket名称,它也会失

我有这个:

with open('my_file', 'r') as f_in:
    for i in f_in:
        response = s3.head_bucket(Bucket='i')
        print(response)
我希望为我的_文件中的那些bucket获取bucket属性,但我得到的是:

botocore.exceptions.ClientError:调用HeadBucket操作时发生错误(403):禁止

如果我只输入一个bucket名称,它也会失败

如果我硬编码bucket名称“(bucket='my-bucketoweiruowi'),它会工作

如果我去掉for循环:

var = 'my-bucketoweiruow'
response = s3.head_bucket(Bucket='var')
。。。它以相同的403错误失败

我删除了“”如下所示:

with open('my_file', 'r') as f_in:
    for i in f_in:
        response = s3.head_bucket(Bucket=i)
        print(response)
…但我得到了另一个错误:

botocore.exceptions.ClientError:调用HeadBucket操作时发生错误(400):错误请求”

我有两个单独的aws帐户,用于测试的存储桶不同。行为相同


看起来当进入循环时它…会中断?

看起来像是由于某种原因读取“我的文件”时,当跳转到下一行时,在存储桶名称之间添加了一个空行。

这意味着如果我使用for循环打印内容,我将得到以下输出:

巴克特1

雄鹿2

巴克特3

因此,如果我删除这些空白行,事情会很好:

with open('test','r') as f:
    for i in f:
        a = i.rstrip('\n')
        res = s3.head_bucket(Bucket=a)
        print(res)

结论:当函数找到一个空行时,似乎会发生故障。

您调用的是存储桶名称“line”,这不是一个变量。如果它是字符串变量,则不需要
.TY。我将“line”替换为“I”,并删除了“”。现在我得到“botocore.exceptions.ClientError:发生错误(400)调用HeadBucket操作时:“请求错误”。看起来进入循环时它…会中断吗?