如何使用 Python 在没有密钥的情况下将 JSON 数据(从 API 调用)直接加载到 S3 存储桶?

How to load JSON data (call from API) without key directly to S3 bucket using Python?

我对 AWS 比较陌生 s3 我正在调用 API 将 JSON 数据直接加载到 s3 存储桶。来自 s3 个存储桶的数据将由 Snowflake 读取。经过研究,我发现使用 Boto3 我们可以直接将数据加载到 s3 中。代码将如下所示,但是我不确定的一件事是我应该为密钥放置什么,因为我的 S3 存储桶中没有创建任何对象。另外,将 JSON 数据加载到 s3 的最佳做法是什么?我是否需要像 SO 用户 Uwe Bretschneider 那样将 JSON 数据编码为 'UTF-8'。

提前致谢!

Python代码:

import json,urllib.request
import boto3
data = urllib.request.urlopen("https://api.github.com/users?since=100").read()
output = json.loads(data) 
print (output) #Checking the data


s3 = boto3.client('s3')
s3.put_object(
     Body=str(json.dumps(data))
     Bucket='I_HAVE_BUCKET_NAME'
     Key='your_key_here'
)

通过使用 put_object,这意味着您在存储桶中创建一个新对象,因此不存在现有密钥。 这个键就像文件系统中的一个文件名。您可以指定任何您喜欢的名称,例如 my-data.jsonsome-dir/my-data.json。您可以在 https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html.

中找到更多信息

至于编码器,指定编码 IMO 总是好的,只是为了确保您的源文件也已正确编码。