我正在尝试不使用凭证将大文件上传到Amazon S3。我正在为此创建一个用于Octoprint的插件,由于它是公开的,因此无法在代码中放入任何种类的凭据。目前,我的上传代码如下:
import boto3
from botocore import UNSIGNED
from botocore.client import Config
s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))
# Create an S3 client
filename = 'file.txt'
bucket_name = 'BUCKET_HERE'
s3.upload_file(filename, bucket_name, filename)
但是,它给了我以下错误:
S3UploadFailedError: Failed to upload largefiletest.mp4 to BUCKETNAMEHERE/largefiletest.mp4: An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads. Please authenticate.
是否有任何解决方法,或者对替代库有任何建议吗?任何事情都值得赞赏。
答案 0 :(得分:1)
您是说存储库是公共的,而运行时环境是私有的?如果是这样,标准做法是设置环境变量,如下所示:
# first pip install environ
import environ
SOME_KEY = env('SOME_KEY', default='')
这样,您可以轻松更新凭据,而无需更改代码或损害安全性。
编辑: 然后在机器上运行此代码,您可以这样设置环境变量: