【发布时间】:2020-09-26 02:30:54
【问题描述】:
我的烧瓶应用程序在本地与 AWS S3 存储桶一起工作,但是当我尝试让它在 Heroku 中工作时,我不断收到此错误
2020-06-07T00:58:29.174989+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/botocore/signers.py", line 160, in sign
2020-06-07T00:58:29.174989+00:00 app[web.1]: auth.add_auth(request)
2020-06-07T00:58:29.174989+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/botocore/auth.py", line 357, in add_auth
2020-06-07T00:58:29.174989+00:00 app[web.1]: raise NoCredentialsError
2020-06-07T00:58:29.174994+00:00 app[web.1]: botocore.exceptions.NoCredentialsError: Unable to locate credentials
我已经讨论这个问题超过一天了。 这是我的 app.py 文件中的代码的 sn-p。
from flask import render_template, request, redirect, url_for
import boto3, os, zipfile, io
AWS_STORAGE_BUCKET_NAME ="some bucket"
AWS_ACCESS_KEY_ID="some key"
AWS_SECRET_ACCESS_KEY="some secret key"
s3 = boto3.client(
"s3",
aws_access_key_id = AWS_ACCESS_KEY_ID,
aws_secret_access_key = AWS_SECRET_ACCESS_KEY)
s3_resource = boto3.resource("s3")
my_bucket = s3_resource.Bucket(AWS_STORAGE_BUCKET_NAME)
另外,在我的存储桶中,我通过从文档中粘贴来配置 CORS 配置。
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我的 requirements.txt 文件
Flask==1.1.1
Flask_SQLAlchemy==2.4.1
Werkzeug==1.0.0
Flask_WTF==0.14.3
SQLAlchemy==1.3.13
arrow==0.15.6
alembic==1.4.2
boto3==1.13.16
boto==2.49.0
botocore==1.16.16
Flask_Migrate==2.5.3
Pillow==7.1.2
psycopg2==2.8.4
gunicorn==19.9.0
requests==2.22.0
certifi==2019.6.16
chardet==3.0.4
Click==7.0
distributed==2.1.0
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
pytz==2019.1
我目前在我的简单应用程序中所做的只是从我的存储桶中读取文件名,并将其显示在主页上。在我的本地应用程序上运行良好,但在 heroku 上运行良好。 任何帮助将不胜感激。
【问题讨论】:
标签: python flask heroku amazon-s3