使用 Amazon S3 对于云存储解决方案来说很常见,但对于本地测试,与 AWS 交互可能效率低下且成本高昂。 LocalStack 是一个功能齐全的本地 AWS 云堆栈,可模拟 AWS 服务。在本指南中,我们将逐步介绍如何在 macOS 上的 LocalStack 中设置 S3 存储桶,讨论使用此设置的好处,并提供完整的代码示例。
使用 LocalStack 模拟 S3 具有以下主要优势:
确保您各自的操作系统上安装了以下软件:
brew install localstack
localstack start
注意:如果您遇到权限问题,请在命令前添加 sudo。
brew install awscli
注意:以上命令适用于 macOS。查找有关如何安装 awscli 的完整文档。
aws configure
使用占位符值:
输出格式:json
设置 LocalStack 端点 URL:
export LOCALSTACK_ENDPOINT=http://localhost:4566
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 mb s3://my-local-bucket
aws --endpoint-url=$LOCALSTACK_ENDPOINT s3 ls
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
pip install 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
localstack start
本文提供了在 LocalStack 中设置 S3 存储桶的分步演练。此设置非常适合本地开发,允许您安全地测试 AWS S3 功能,而不会产生成本或需要互联网连接。
以上是在 LocalStack 中设置 Sucket的详细内容。更多信息请关注PHP中文网其他相关文章!