专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

pjmyburg/localstack Docker 镜像 - 轩辕镜像 | Docker 镜像高效稳定拉取服务

热门搜索:openclaw🔥nginx🔥redis🔥mysqlopenjdkcursorweb2apimemgraphzabbixetcdubuntucorednsjdk
localstack
pjmyburg/localstack
自动构建
pjmyburg
来自github.com/pjmyburg的LocalStack镜像,包含SNS和SQS服务修复,提供本地AWS云栈模拟环境,支持云应用开发测试。
下载次数: 0状态:自动构建维护者:pjmyburg仓库类型:镜像最近更新:7 年前
轩辕镜像,不浪费每一次拉取。点击查看
中文简介版本下载
轩辕镜像,不浪费每一次拉取。点击查看

LocalStack - 功能完整的本地AWS云栈

!LocalStack

LocalStack 提供了一个易于使用的测试/模拟框架,用于开发云应用程序。目前,其重点主要是支持AWS云栈。

概述

LocalStack 在本地机器上启动以下核心云API服务:

  • API Gateway:http://localhost:4567
  • Kinesis:http://localhost:4568
  • DynamoDB:http://localhost:4569
  • DynamoDB Streams:http://localhost:4570
  • Elasticsearch:http://localhost:4571
  • S3:http://localhost:4572
  • Firehose:http://localhost:4573
  • Lambda:http://localhost:4574
  • SNS:http://localhost:4575
  • SQS:http://localhost:4576
  • Redshift:http://localhost:4577
  • ES (Elasticsearch Service):http://localhost:4578
  • SES:http://localhost:4579
  • Route53:http://localhost:4580
  • CloudFormation:http://localhost:4581
  • CloudWatch:http://localhost:4582
  • SSM:http://localhost:4583
  • SecretsManager:http://localhost:4584

此外,LocalStack 提供了一套强大的工具来与云服务交互,包括具有Python绑定的全功能KCL Kinesis客户端、用于nosetests的简单设置/拆卸集成,以及允许轻松在本地和远程云执行之间切换的环境抽象。

核心功能和特性

为什么选择LocalStack?

LocalStack 构建在现有的一流模拟/测试工具之上,最著名的是kinesalite/dynalite和moto。虽然这些工具非常出色,但它们在某些用例中缺乏功能。LocalStack 整合了这些工具,使它们能够互操作,并在它们之上添加了重要的缺失功能:

  • 错误注入:LocalStack 允许注入真实云环境中经常发生的错误,例如Kinesis或DynamoDB在超过读写吞吐量时抛出的ProvisionedThroughputExceededException。
  • 隔离进程:LocalStack 中的所有服务都在单独的进程中运行。额外进程的开销可以忽略不计,整个栈可以轻松在任何开发机器和CI服务器上执行。相比之下,moto中的组件通常硬连接在内存中(例如,当将SNS主题上的消息转发到SQS队列时,队列端点在本地哈希映射中查找)。而LocalStack服务处于隔离状态(通过HTTP可用的单独进程),这促进了真正的解耦,更接近真实的云环境。
  • 可插拔服务:由于每个服务使用隔离进程,LocalStack中的所有服务都易于插拔(和替换)。这使我们能够保持框架更新,并为每个单独的服务选择一流的模拟工具。

使用场景和适用范围

  • 云应用开发测试:在本地开发环境中模拟AWS服务,无需连接真实AWS账户,降低开发成本和风险。
  • CI/CD流程集成:在持续集成/持续部署流程中作为测试环境,确保应用在云环境中的兼容性。
  • 功能原型验证:快速验证基于AWS服务的应用功能原型,无需实际部署到云端。

详细使用方法和配置说明

系统要求
  • make
  • python(支持Python 2.x和3.x)
  • pip(Python包管理器)
  • npm(Node.js包管理器)
  • java/javac(Java 8运行时环境和编译器)
  • mvn(Maven,Java构建系统)
安装

安装LocalStack最简单的方法是通过pip:

bash
pip install localstack

安装后,使用以下命令运行基础设施:

bash
localstack start

注意:请不要使用sudo或root用户 - LocalStack应完全在本地非root用户下安装和启动。如果在MacOS X Sierra中遇到权限问题,请使用pip install --user localstack安装。

在Docker中运行

您也可以在Docker中启动LocalStack:

bash
localstack start --docker

(注意,在MacOS上,如果$TMPDIR包含Docker无法挂载的符号链接,可能需要运行TMPDIR=/private$TMPDIR localstack start --docker。)

或者使用docker-compose(需要先克隆仓库,目前支持docker-compose version 2):

bash
docker-compose up

(注意,在MacOS上,如果$TMPDIR包含Docker无法挂载的符号链接,可能需要运行TMPDIR=/private$TMPDIR docker-compose up。)

配置参数

可以向LocalStack传递以下环境变量:

  • SERVICES:逗号分隔的服务名称和(可选)它们应运行的端口。如果未指定端口,则使用默认端口。服务名称基本上对应AWS CLI的服务名称(kinesis、lambda、sqs等),尽管LocalStack仅支持其中的一部分。示例值:kinesis,lambda:4569,sqs:4570表示在默认端口启动Kinesis,在4569端口启动Lambda,在4570端口启动SQS。

  • DEFAULT_REGION:与API通信时使用的AWS区域(默认为us-east-1)。

  • HOSTNAME:在内部公开服务的主机名(默认为localhost)。用于自定义框架内部通信,例如,如果服务在不同的容器中使用docker-compose启动。

  • HOSTNAME_EXTERNAL:在外部公开服务的主机名(默认为localhost)。例如,当从SQS服务向客户端返回队列URL时使用此主机。

  • USE_SSL:是否使用带SSL加密的[***] URL(默认为false)。

  • KINESIS_ERROR_PROBABILITY:0.0(默认)到1.0之间的十进制值,用于随机将ProvisionedThroughputExceededException错误注入Kinesis API响应。

  • DYNAMODB_ERROR_PROBABILITY:0.0(默认)到1.0之间的十进制值,用于随机将ProvisionedThroughputExceededException错误注入DynamoDB API响应。

  • LAMBDA_EXECUTOR:用于执行Lambda函数的方法。可能的值:

    • local:在本地机器的临时目录中运行Lambda函数
    • docker:在单独的Docker容器中运行每个函数调用
    • docker-reuse:为每个函数创建一个Docker容器,并在调用之间重用它

    对于docker和docker-reuse,如果LocalStack本身在Docker内部启动,则容器内部需要可用docker命令(通常需要以特权模式运行容器)。默认为docker,如果Docker不可用,则回退到local。

  • LAMBDA_REMOTE_DOCKER:确定Lambda代码是复制还是挂载到容器中。可能的值:

    • true(默认):Lambda函数定义将通过复制zip文件传递到容器(可能较慢)。允许远程执行,主机和客户端不在同一台机器上。
    • false:Lambda函数定义将通过挂载卷传递到容器(可能较快)。这要求Docker客户端和Docker主机在同一台机器上。
  • DATA_DIR:用于保存持久数据的本地目录(目前仅支持以下服务:Kinesis、DynamoDB、Elasticsearch、S3)。将其设置为/tmp/localstack/data以启用持久性(/tmp/localstack挂载到Docker容器中),留空则禁用持久性(默认)。

  • PORT_WEB_UI:Web用户界面(仪表板)的端口。默认为8080。

  • <SERVICE>_BACKEND:用于特定服务的自定义端点URL,其中<SERVICE>是大写的服务名称(目前适用于:APIGATEWAY、CLOUDFORMATION、DYNAMODB、ELASTICSEARCH、KINESIS、S3、SNS、SQS)。这允许轻松将第三方服务集成到LocalStack中。

  • FORCE_NONINTERACTIVE:使用Docker运行时,禁用--interactive和--tty标志。在无头环境中运行时有用。

此外,以下只读环境变量可用:

  • LOCALSTACK_HOSTNAME:LocalStack服务可用的主机名。这在Lambda函数内部访问服务时需要(例如,从Lambda向DynamoDB或S3存储项目)。变量LOCALSTACK_HOSTNAME对本地Lambda执行(LAMBDA_EXECUTOR=local)和在单独Docker容器中执行(LAMBDA_EXECUTOR=docker)都可用。
通过CLI或代码访问基础设施

您可以将aws CLI指向本地基础设施,例如:

bash
aws --endpoint-url=http://localhost:4568 kinesis list-streams
{
    "StreamNames": []
}

新功能:查看awslocal,这是一个轻量级CLI包装器,可直接针对LocalStack运行命令(无需再指定--endpoint-url)。通过pip install awscli-local安装,然后使用如下:

bash
awslocal kinesis list-streams
{
    "StreamNames": []
}

更新:在Lambda函数内部使用环境变量$LOCALSTACK_HOSTNAME确定目标主机。有关更多详细信息,请参见配置部分。

客户端库
  • Python:[***]
    • 或者,您也可以使用boto3并在创建连接时使用endpoint_url参数
与nosetests集成

如果要在集成测试(例如nosetests)中使用LocalStack,只需在测试设置方法中启动基础设施,然后在拆卸方法中清理所有内容:

python
from localstack.services import infra

def setup():
    infra.start_infra(async=True)

def teardown():
    infra.stop_infra()

def my_app_test():
    # 这里是测试逻辑

有关更多详细信息,请参见示例测试文件tests/test_integration.py。

与Java/JUnit集成

为了将LocalStack与Java一起使用,该项目提供了一个简单的JUnit运行器和JUnit 5扩展。查看ext/java中的示例JUnit测试。运行测试时,所有依赖项会自动下载并安装到系统的临时目录中。

java
...
import cloud.localstack.LocalstackTestRunner;
import cloud.localstack.TestUtils;

@RunWith(LocalstackTestRunner.class)
public class MyCloudAppTest {

  @Test
  public void testLocalS3API() {
    AmazonS3 s3 = TestUtils.getClientS3()
    List<Bucket> buckets = s3.listBuckets();
    ...
  }

}

或者使用JUnit 5:

java
@ExtendWith(LocalstackExtension.class)
public class MyCloudAppTest {
   ...
}

此外,还有一个LocalStack Test Runner版本,它在Docker容器中运行,而不是在当前机器上安装LocalStack。唯一的依赖是本地安装Docker。测试运行器将自动拉取镜像并在测试期间启动容器。可以使用@LocalstackDockerProperties注解配置容器。

java
@RunWith(LocalstackDockerTestRunner.class)
@LocalstackDockerProperties(randomizePorts = true, services = { "sqs", "kinesis:77077" })
public class MyDockerCloudAppTest {

  @Test
  public void testKinesis() {
    AmazonKinesis kinesis = DockerTestUtils.getClientKinesis();

    ListStreamsResult streams = kinesis.listStreams();
    ...

或者使用JUnit 5:

java
@ExtendWith(LocalstackDockerExtension.class)
@LocalstackDockerProperties(randomizePorts = true, services = { "sqs", "kinesis:77077" })
public class MyDockerCloudAppTest {
   ...
}

LocalStack JUnit测试运行器作为Maven Central中的工件发布。只需将以下依赖项添加到pom.xml文件中:

xml
<dependency>
    <groupId>cloud.localstack</groupId>
    <artifactId>localstack-utils</artifactId>
    <version>0.1.15</version>
</dependency>
故障排除
  • 如果使用带有Kinesis的AWS Java库,请参考Java SDK的CBOR协议问题指南,了解如何禁用kinesalite不支持的CBOR协议。
  • 从Java访问本地S3:为避免域名解析问题,需要在客户端上启用路径样式访问:
java
s3.setS3ClientOptions(S3ClientOptions.builder().setPathStyleAccess(true).build());
// 如果使用任何客户端构建器类,也可以这样做:
AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
builder.withPathStyleAccessEnabled(true);
...
  • 挂载临时目录:注意,在MacOS上,如果$TMPDIR包含Docker无法挂载的符号链接,可能需要运行TMPDIR=/private$TMPDIR docker-compose up。(详见:[***]
  • 如果在Mac OS上pip install时遇到文件权限问题(例如,Permission denied: '/Library/Python/2.7/site-packages/six.py'),可能需要通过Homebrew重新安装pip(参见此讨论线程)。或者,尝试使用--user标志安装:pip install --user localstack
  • 如果在OpenShift中部署,请注意:pod必须以root身份运行,并且用户必须具有添加到运行pod的功能,以允许Elasticsearch以非rootlocalstack用户运行。
  • 环境变量no_proxy由LocalStack重写。(内部请求将直接通过localhost,绕过任何代理配置)。
  • 要排查localstack启动问题,可以通过运行DEBUG=1 localstack start检查调试日志。
  • 如果遇到与node/nodejs相关的错误,可能会发现(此问题评论:[***]
  • 如果使用AWS Java库并需要禁用SSL证书检查,在Java调用中添加-Dcom.amazonaws.sdk.disableCertChecking。
Web仪表板

该项目还附带一个简单的Web仪表板,允许查看已部署的AWS组件及其之间的关系。

bash
localstack web
查看更多 localstack 相关镜像 →
LocalStack logo
LocalStack
extension
Extension of Localstack for Docker desktop
1万+ 次下载
30 天前更新
localstack/localstack logo
localstack/localstack
localstack
LocalStack是一款可在单个容器中运行的云服务模拟器,支持在本地离线运行AWS应用程序或Lambda函数,无需连接远程云提供商,加速云应用的测试与开发工作流程。
343 次收藏1亿+ 次下载
10 天前更新
localstack/localstack-light logo
localstack/localstack-light
localstack
LocalStack镜像(具有精简依赖集),已弃用 - 请改用localstack/localstack
7 次收藏100万+ 次下载
2 年前更新
localstack/localstack-full logo
localstack/localstack-full
localstack
LocalStack镜像,包含完整依赖集(已弃用 - 请改用localstack/localstack)
7 次收藏100万+ 次下载
2 年前更新
localstack/localstack-pro logo
localstack/localstack-pro
localstack
LocalStack Pro是一款易用的云模拟框架,适用于开发、测试和实验场景。
47 次收藏100万+ 次下载
10 天前更新
localstack/ami-amazonlinux logo
localstack/ami-amazonlinux
localstack
为LocalStack定制的Amazon Linux EC2 AMI(Amazon机器镜像),优化用于本地AWS服务模拟与开发测试。
10万+ 次下载
6 个月前更新

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

docker search 报错:专属域名下仅支持 Docker Hub 查询

docker search 报错问题

网页搜不到镜像:Docker Hub 有但轩辕镜像搜索无结果

镜像搜索不到

离线传输镜像:无法直连时用 docker save/load 迁移

离线传输镜像

Docker 插件安装错误:application/vnd.docker.plugin.v1+json

Docker 插件安装错误

WSL 下 Docker 拉取慢:网络与挂载目录影响及优化

WSL 拉取镜像慢

轩辕镜像是否安全?镜像完整性校验(digest)说明

镜像安全性

如何用轩辕镜像拉取镜像?登录方式与专属域名配置

如何拉取镜像

错误码与失败问题

manifest unknown 错误:镜像不存在或标签错误

manifest unknown 错误

TLS/SSL 证书验证失败:Docker pull 时 HTTPS 证书错误

TLS 证书验证失败

DNS 解析超时:无法解析镜像仓库地址或连接超时

DNS 解析超时

410 Gone 错误:Docker 版本过低导致协议不兼容

410 错误:版本过低

402 Payment Required 错误:流量耗尽错误提示

402 错误:流量耗尽

401 UNAUTHORIZED 错误:身份认证失败或登录信息错误

身份认证失败错误

429 Too Many Requests 错误:请求频率超出专业版限制

429 限流错误

Docker login 凭证保存错误:Cannot autolaunch D-Bus(不影响登录)

凭证保存错误

账号 / 计费 / 权限

免费版与专业版区别:功能、限额与使用场景对比

免费版与专业版区别

支持的镜像仓库:Docker Hub、GCR、GHCR、K8s 等列表

轩辕镜像支持的镜像仓库

拉取失败是否扣流量?计费规则说明

拉取失败流量计费

KYSEC 权限不够:麒麟 V10/统信 UOS 下脚本执行被拦截

KYSEC 权限错误

如何申请开具发票?(增值税普票/专票)

开具发票

如何修改网站与仓库登录密码?

修改网站和仓库密码

配置与原理类

registry-mirrors 未生效:仍访问官方仓库或报错的原因

registry-mirrors 未生效

如何去掉镜像名称中的轩辕域名前缀?(docker tag)

去掉域名前缀

如何拉取指定架构镜像?(ARM64/AMD64 等多架构)

拉取指定架构镜像

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
pjmyburg/localstack
博客公告Docker 镜像公告与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.