我在弹性beantalk上安装了flask应用程序,并创建了一个S3存储桶来存储一些文件。在本地运行应用程序时,我可以从S3存储桶中读取所有目录和文件。但是,当我将应用程序部署到beantalk时,无法访问S3存储桶中的文件。
from flask import Flask, render_template
import os
import boto3
from config import S3_BUCKET, S3_KEY, S3_SECRET
application = Flask(__name__)
app = application
s3_resource = boto3.resource(
"s3",
aws_access_key_id=S3_KEY,
aws_secret_access_key=S3_SECRET
)
@app.route('/s3')
def view_s3():
s3_resource = boto3.resource('s3')
my_bucket = s3_resource.Bucket(S3_BUCKET)
summaries = my_bucket.objects.all()
return render_template('mys3stuff.html', bucket_info = my_bucket, files = summaries)
if __name__ == "__main__":
app.debug = True
app.run()
这是我的本地人 app ran locally
这是AWS上的错误 http://flaskaws.eba-ihkipjpz.us-east-1.elasticbeanstalk.com/s3
我确实将S3存储桶更改为公共,然后它起作用了,但是我想将其限制在IAM或安全组/角色中。只是不确定正确的方法。