介绍
使用 Amazon S3 对于云存储解决方案来说很常见,但对于本地测试,与 AWS 交互可能效率低下且成本高昂。 LocalStack 是一个功能齐全的本地 AWS 云堆栈,可模拟 AWS 服务。在本指南中,我们将逐步介绍如何在 macOS 上的 LocalStack 中设置 S3 存储桶,讨论使用此设置的好处,并提供完整的代码示例。
为什么对 S3 使用 LocalStack?
使用 LocalStack 模拟 S3 具有以下主要优势:
- 成本效率:您可以避免 AWS 收取费用。
- 速度:测试速度更快,因为它们在本地运行。
- 离线测试:无需互联网连接。
- 隔离:降低意外影响真实AWS资源的风险。
先决条件
确保您各自的操作系统上安装了以下软件:
- Docker(LocalStack 所需)- 在此处下载。
- Python 和 pip(AWS CLI 和 boto3 需要)。
- LocalStack 通过 pip 或 Docker。
第1步:安装并启动LocalStack
- 安装LocalStack:
brew install localstack
- 将 LocalStack 作为 Docker 容器运行:
localstack start
注意:如果您遇到权限问题,请在命令前添加 sudo。
步骤 2:为 LocalStack 设置 AWS CLI
- 安装AWS CLI:
brew install awscli
注意:以上命令适用于 macOS。查找有关如何安装 awscli 的完整文档。
- 配置AWS CLI(LocalStack使用所必需的):
aws configure
使用占位符值:
- AWS 访问密钥 ID:测试
- AWS 秘密访问密钥:测试
- 区域:us-east-1
输出格式:json
设置 LocalStack 端点 URL:
export LOCALSTACK_ENDPOINT=http://localhost:4566
步骤 3:在 LocalStack 中创建 S3 存储桶
- 创建新的 S3 存储桶:
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 mb s3://my-local-bucket
第 4 步:验证存储桶
- 通过列出所有存储桶来检查您的存储桶:
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 ls
第5步:上传和下载文件
- 创建示例文件:
echo "Hello LocalStack!" > testfile.txt
- 将文件上传到您的存储桶:
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 cp testfile.txt s3://my-local-bucket
- 下载文件:
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 cp s3://my-local-bucket/testfile.txt downloaded_testfile.txt
步骤 6:使用 Python 和 Boto3 进行 S3 操作
- 安装Boto3
pip install boto3
- 桶操作的Python代码 以下 Python 脚本演示了使用 Boto3 创建存储桶、上传文件、列出对象和下载文件:
import boto3 from botocore.config import Config # Configuration for LocalStack localstack_config = Config( region_name='us-east-1', retries={'max_attempts': 10, 'mode': 'standard'} ) # Initialize the S3 client with LocalStack endpoint s3_client = boto3.client( 's3', endpoint_url="http://localhost:4566", aws_access_key_id="test", aws_secret_access_key="test", config=localstack_config ) bucket_name = "my-local-bucket" # Create the bucket s3_client.create_bucket(Bucket=bucket_name) print(f"Bucket '{bucket_name}' created.") # Upload a file s3_client.upload_file("testfile.txt", bucket_name, "testfile.txt") print("File uploaded.") # List objects in the bucket objects = s3_client.list_objects_v2(Bucket=bucket_name) for obj in objects.get('Contents', []): print("Found file:", obj['Key']) # Download the file s3_client.download_file(bucket_name, "testfile.txt", "downloaded_testfile.txt") print("File downloaded.")
运行脚本:
brew install localstack
第 7 步:清理资源
- 要删除存储桶及其内容:
localstack start
结论
本文提供了在 LocalStack 中设置 S3 存储桶的分步演练。此设置非常适合本地开发,允许您安全地测试 AWS S3 功能,而不会产生成本或需要互联网连接。
以上是在 LocalStack 中设置 Sucket的详细内容。更多信息请关注PHP中文网其他相关文章!

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

Python 对象的序列化和反序列化是任何非平凡程序的关键方面。如果您将某些内容保存到 Python 文件中,如果您读取配置文件,或者如果您响应 HTTP 请求,您都会进行对象序列化和反序列化。 从某种意义上说,序列化和反序列化是世界上最无聊的事情。谁会在乎所有这些格式和协议?您想持久化或流式传输一些 Python 对象,并在以后完整地取回它们。 这是一种在概念层面上看待世界的好方法。但是,在实际层面上,您选择的序列化方案、格式或协议可能会决定程序运行的速度、安全性、维护状态的自由度以及与其他系

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

该教程建立在先前对美丽汤的介绍基础上,重点是简单的树导航之外的DOM操纵。 我们将探索有效的搜索方法和技术,以修改HTML结构。 一种常见的DOM搜索方法是EX

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具