【发布时间】:2021-04-23 09:57:00
【问题描述】:
我有以下代码可以将文件上传到 S3
import boto3
client = boto3.client('s3', aws_access_key_id="key here",
aws_secret_access_key="secere here",
aws_session_token="token here")
#Uploade the file
with open("/tmp/test.csv", 'rb') as data:
result=client.put_object(Body=data, Bucket=bucket_name, Key="path/test.csv")
print(result)
# Read the object
obj=client.get_object(Bucket=bucket_name, Key="path/test.csv")
j = obj['Body'].read()
print(j)
此代码运行良好,我可以从 S3 读取文件内容,如上所示。问题是当我从 CLI 执行 aws s3 ls 时,该文件不可见,当我尝试复制它时显示 fatal error: An error occurred (404) when calling the HeadObject operation: Key "key here /test.csv" does not exist。同样,当我通过 AWS 控制台检查时,我看不到该文件。但是当我编写一个单独的代码只是为了读取文件时,它是可用的并且可以正确打印内容。
我检查了aws region is correct 是否正确,我在任何区域都没有看到文件。知道这里发生了什么吗?
【问题讨论】:
-
您能否显示您尝试使用的完整 aws cli 命令?
-
@Marcin
aws s3 ls s3://bucket/key/test.csv两种情况下使用的凭据相同 -
命令本身没问题。所以问题一定是使用了错误的存储桶、密钥、区域或帐户。你必须仔细检查这些。
-
另外,如果你去 AWS 控制台,你也找不到那里的对象?
-
@Marcin 是的,这是正确的
标签: python-3.x amazon-s3 file-upload boto3