LocalStack:模拟 AWS 服务以进行本地开发和测试
在生产环境中创建和测试基于云的应用程序可能既耗时又困难,甚至存在风险。这时,区域化开发的重要性就显而易见了。由于本地开发是在开发人员自己的系统上进行的,因此有助于降低成本、简化调试并缩短开发时间。
-> 介绍 LocalStack
LocalStack是目前最好的本地开发工具之一,它基于AWS(亚马逊网络服务)。LocalStack可以创建一个功能齐全的本地AWS云平台,用于离线开发和测试我们的云应用和无服务器应用。
本地堆栈易于使用,可在您的本地系统上提供一个测试环境,该环境模拟AWS云服务的 API 和行为。现在,您可以创建和测试AWS应用程序,而无需花费任何费用或访问互联网。
Docker 的重要性
Docker是该基础设施的重要组成部分。Docker是一种开源技术,它通过在操作系统层面进行虚拟化来实现容器化软件分发。
这不仅能确保应用程序在任何环境下都能正常运行(因为每个容器都是独立的,包含所有必要的软件、库和系统工具),还能确保所有操作都在本地进行。Docker提供LocalStack使用的容器化技术,用于在本地工作站上模拟AWS云环境。
入门
初始化 Docker
我们需要确保 Docker 运行正常才能启动LocalStack。Docker的启动方式因操作系统而异。
-
macOS :在macOS上,可以通过输入以下命令
open --background -a Docker在后台启动 Docker。 -
Linux:Docker 通常以服务的形式部署在Linux 系统
sudo service docker start上。可以使用命令 -
Windows:在Windows 系统中,可以通过“开始”菜单或
Start-Process -NoNewWindow "C:\Program Files\Docker\Docker\Docker Desktop.exe"PowerShell 等命令初始化 Docker。
启动 Docker 后,验证其是否持续运行至关重要。docker system info可以使用该命令进行验证。如果 Docker 运行正常,该命令应返回有关 Docker 系统的信息。如果 Docker 没有运行,该命令将不会返回任何输出。
如何启动并运行 LocalStack
LocalStack一旦 Docker 启动并运行,即可安装并启动其他组件。但每个组件的安装过程都不同OS。
-
使用该
brew install localstack命令,可以使用软件包管理器在MacOSHomebrew上设置 LocalStack 。 -
sudo apt-get install localstack借助APT软件包管理,可以使用该命令在 Linux 机器上设置 LocalStack。 -
该
LocalStack软件包管理器适用于Windows 系统,可以使用以下命令进行安装choco install localstack。
LocalStack 安装完成后,您可以使用命令启动它localstack start。
使用 Shell 脚本实现一切自动化
为了简化操作,我们可以编写一个 shell 脚本来确定操作系统、启动 Docker、部署 LocalStack并启动它。以下脚本必须使用以下命令运行chmod +x localstack.sh &&./localstack.sh:
#!/bin/bash
# Function to start Docker and ensure it's running on macOS
start_docker_mac() {
echo "Starting Docker on macOS..."
open --background -a Docker
while ! docker system info > /dev/null 2>&1; do sleep 1; done
echo "Docker is running."
}
# Function to start Docker and ensure it's running on Linux
start_docker_linux() {
echo "Starting Docker on Linux..."
sudo service docker start
while ! docker system info > /dev/null 2>&1; do sleep 1; done
echo "Docker is running."
}
# Function to start Docker and ensure it's running on Windows
start_docker_windows() {
echo "Starting Docker on Windows..."
Start-Process -NoNewWindow "C:\Program Files\Docker\Docker\Docker Desktop.exe"
while (!(Test-Connection localhost -count 1)) { Start-Sleep -Seconds 1 }
echo "Docker is running."
}
# Function to install LocalStack on macOS
install_mac() {
echo "Installing LocalStack on macOS..."
brew install localstack
}
# Function to install LocalStack on Linux
install_linux() {
echo "Installing LocalStack on Linux..."
sudo apt-get install localstack
}
# Function to install LocalStack on Windows
install_windows() {
echo "Installing LocalStack on Windows..."
choco install localstack
}
# Detect the operating system
OS="$(uname)"
case $OS in
'Linux')
start_docker_linux
install_linux
;;
'Darwin')
start_docker_mac
install_mac
;;
'WindowsNT')
OS='Windows'
start_docker_windows
install_windows
;;
*) ;;
esac
# Start LocalStack
localstack start
上面的脚本定义了以下函数:
- 根据操作系统,要么开始运行 Docker,要么安装 LocalStack。
- 然后它确定操作系统,并调用与该系统相关的函数。
- 最后,它激活本地堆栈。
请注意,运行此脚本需要您的计算机上已安装 Docker 和必要的包管理器(macOSHomebrew版、Linux 版和Windows版)。如果尚未安装,您需要在运行此脚本之前进行安装。APTChocolatey
结论
LocalStack 与 Docker 的结合使其成为在 AWS 上进行本地开发的绝佳工具。通过在本地模拟 Amazon Web Services (AWS) 环境,开发人员可以提高工作效率、降低成本,并避免直接在实时云环境中构建软件所带来的风险。
您可以通过编写一个简单的 shell 脚本,自动执行启动 Docker、安装 LocalStack 和运行 LocalStack 的过程,从而更轻松地搭建并运行本地 AWS 云环境。这将帮助您节省时间。
文章来源:https://dev.to/aws-builders/localstack-emulate-aws-services-for-local-development-testing-eoj




