提示信息

管理Amazon S3文件的Flask扩展实现

淡兰色眼泪 已关注

为了管理Amazon S3文件,可以使用Flask结合boto3库实现一个简单的扩展。这将允许您上传、下载和删除S3中的文件。以下是步骤描述和示例代码:

步骤

  1. 安装依赖库:
    首先确保您安装了boto3Flask。可以通过以下命令安装:

    1. pip install flask boto3
  2. 配置AWS凭证:
    您需要有AWS访问密钥和秘密密钥。可以通过AWS管理控制台生成,并使用aws configure命令配置,或者直接硬编码(但这种方法不推荐)。

  3. 创建Flask应用并配置S3:
    在Flask应用中配置boto3以连接到您的S3存储桶。

实现示例

  1. from flask import Flask, request, jsonify
  2. import boto3
  3. from botocore.exceptions import NoCredentialsError
  4. app = Flask(__name__)
  5. # 配置AWS凭证和S3存储桶名称
  6. AWS_ACCESS_KEY = "YOUR_AWS_ACCESS_KEY"
  7. AWS_SECRET_KEY = "YOUR_AWS_SECRET_KEY"
  8. BUCKET_NAME = "your-bucket-name"
  9. # 创建S3资源
  10. s3 = boto3.client('s3', aws_access_key_id=AWS_ACCESS_KEY,
  11. aws_secret_access_key=AWS_SECRET_KEY)
  12. @app.route('/upload', methods=['POST'])
  13. def upload_file():
  14. if 'file' not in request.files:
  15. return jsonify({"error": "No file part"})
  16. file = request.files['file']
  17. if file.filename == '':
  18. return jsonify({"error": "No selected file"})
  19. try:
  20. s3.upload_fileobj(file, BUCKET_NAME, file.filename)
  21. return jsonify({"message": f"File {file.filename} uploaded successfully"})
  22. except FileNotFoundError:
  23. return jsonify({"error": "The file was not found"})
  24. except NoCredentialsError:
  25. return jsonify({"error": "Credentials not available"})
  26. @app.route('/download/<filename>', methods=['GET'])
  27. def download_file(filename):
  28. try:
  29. s3.download_file(BUCKET_NAME, filename, filename)
  30. return jsonify({"message": f"File {filename} downloaded successfully"})
  31. except FileNotFoundError:
  32. return jsonify({"error": "The file was not found"})
  33. except NoCredentialsError:
  34. return jsonify({"error": "Credentials not available"})
  35. @app.route('/delete/<filename>', methods=['DELETE'])
  36. def delete_file(filename):
  37. try:
  38. s3.delete_object(Bucket=BUCKET_NAME, Key=filename)
  39. return jsonify({"message": f"File {filename} deleted successfully"})
  40. except Exception as e:
  41. return jsonify({"error": str(e)})
  42. if __name__ == '__main__':
  43. app.run(debug=True)

使用说明

  • 上传文件: 使用POST请求,将文件以表单数据形式发送到/upload端点。
  • 下载文件: 使用GET请求,访问/download/<filename>端点。
  • 删除文件: 使用DELETE请求,访问/delete/<filename>端点。

注意事项

  • 请确保您的AWS凭证具有对指定S3存储桶的正确权限。
  • 在生产环境中,不要在代码中硬编码AWS凭证,建议使用环境变量或AWS IAM角色。
  • 调试模式仅在开发期间使用,生产环境应禁用。
    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
淡兰色眼泪 关注 已关注

最近一次登录:2024-11-20 09:45:17   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图