Python Amazon S3 boto3如何遍历bucket中的对象?
在flask应用程序中,我尝试遍历S3存储桶中的对象,并尝试打印密钥/文件名,但Python Amazon S3 boto3如何遍历bucket中的对象?,python,amazon-web-services,flask,amazon-s3,boto3,Python,Amazon Web Services,Flask,Amazon S3,Boto3,在flask应用程序中,我尝试遍历S3存储桶中的对象,并尝试打印密钥/文件名,但my_Bucket.objects.all()仅返回存储桶中的第一个对象。它不会返回所有的对象。输出是[001.pdf]而不是[001、002、003、004、005] from flask import Flask, jsonify, Response, request from flask_cors import CORS, cross_origin from config import S3_BUCKET, S
my_Bucket.objects.all()
仅返回存储桶中的第一个对象。它不会返回所有的对象。输出是[001.pdf]
而不是[001、002、003、004、005]
from flask import Flask, jsonify, Response, request
from flask_cors import CORS, cross_origin
from config import S3_BUCKET, S3_ACCESS_KEY, S3_SECRET_ACCESS_KEY
import boto3
import csv
import re
s3 = boto3.client(
's3',
aws_access_key_id=S3_ACCESS_KEY,
aws_secret_access_key=S3_SECRET_ACCESS_KEY
)
app = Flask(__name__)
CORS(app, supports_credentials=True)
@app.route('/')
def health():
return jsonify({"message": "app is working"})
@app.route('/files')
def list_of_files():
s3_resource = boto3.resource('s3')
my_bucket = s3_resource.Bucket(S3_BUCKET)
summaries = my_bucket.objects.all()
files = []
for file in summaries:
# this prints the bucket object
print("Object: {}".format(summaries))
files.append(file.key)
# file.key is supposed to return the names of the list of objects
# print(file.key)
return jsonify({"files":"{}".format(file.key)})
if __name__ == "__main__":
app.run()
您过早返回是在退出循环
def list_of_files():
s3_resource = boto3.resource('s3')
my_bucket = s3_resource.Bucket(S3_BUCKET)
summaries = my_bucket.objects.all()
files = []
for file in summaries:
files.append(file.key)
return jsonify({"files": files})
现在这是一个愚蠢的问题,我在想,我做错了什么。是python和缩进让我着迷。感谢您的回答。应该指出,这种循环效率极低。如果可以避免的话,最好不要向您的Web应用程序提供硬编码的AWS凭据。如果在AWS内运行,请利用IAM角色。