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操作时:“请求错误”。看起来进入循环时它…会中断吗?