python - 使用 Python/boto3 更新 S3 存储桶中的静态网页
问题描述
我试图找到另一篇关于我的问题的文章,但我失败了。
我的最终目标是将 html 文件上传到配置为托管静态网页的 S3 存储桶中。我尝试过:
s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
s3.upload_file(local_file, bucket, s3_file)
和
with open("index.html", "rb") as f:
s3.upload_fileobj(f, bucket, "index.html")
通过这两种方法,我成功上传了 html 文件。尽管如此,当我访问 URL 而不是显示 html 文件时,它会下载它。
我可以验证 S3 存储桶是否已配置为托管网页并显示与我使用 Python 上传的文件同名的文件。当我从我的文件夹手动上传文件时,它按预期工作。当我使用 Python 推送文件而不是显示它时,它会如上所述下载它。
有谁之前经历过这个吗?我尝试的 2 x 功能是否不适合我需要做的工作?您认为 S3 存储桶上是否存在任何错误配置?
提前致谢,
解决方案
根据评论,问题是text/html
上传的对象不正确/缺少内容类型。解决方案是添加它。
推荐阅读
- python-3.x - 在虚拟环境中运行 python 脚本
- gradle - Could not create service of type ChecksumService using BuildSessionScopeServices.createChecksumService()
- python-3.x - "worksheet.write" ı can not write excel
- javascript - JS call to Secure Spring Boot Rest API is failing
- java - Exception in Application constructor when using JavaFX on Eclipse
- java - 错误:在 androidX 中膨胀类 com.google.android.material.navigation.NavigationView
- ios - 如何访问字符的备用字体字形以在 UILabel 或 UIButton 文本中使用
- canvas - 无法安装画布
- python - 如何将现有的 conda 环境用作 AzureML 环境
- javascript - 如何在数组中指定多个条件并在javascript的if语句中调用它