LocalStack扩展:AWS复制器
项目描述
AWS Replicator Extension(实验性)
LocalStack扩展,用于将AWS资源复制到您的本地计算机。
⚠️请注意,此扩展为实验性,目前正在积极开发中。
先决条件
- LocalStack Pro
- Docker
- Python
概述
此扩展目前提供两种操作模式:(1)AWS连接代理和(2)资源复制器CLI。
AWS连接代理
本地Stack中的AWS连接代理可以用来将某些API调用转发到真实的AWS,以便实现本地资源和远程资源之间的无缝过渡。
警告:在使用代理时请小心 - 确保永远不要将访问权限提供给生产账户或任何关键/敏感数据!
注意:当前,replicator CLI仅在通过pip
安装localstack
CLI时才工作。如果您作为二进制发布下载localstack
CLI,请使用下文描述的代理配置UI。
使用方法
CLI
例如,为了将DynamoDB/S3/Cognito的所有API调用转发到真实AWS,可以通过以下方式通过CLI启动代理
- 通过CLI启动LocalStack
$ localstack start -d
- 从Web应用程序扩展库启用LocalStack AWS replicator
- 安装后重新启动Localstack
- 安装AWS replicator CLI包
$ pip install localstack-extension-aws-replicator
- 在新的终端会话中配置真实云账户凭据以允许访问
$ export AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=...
- 在上述终端会话中通过CLI启动代理
$ localstack aws proxy -s dynamodb,s3,cognito-idp
- 现在,当对LocalStack发出API调用(例如,通过
awslocal
)时,调用将被转发到真实AWS,并且应该返回您真实云资源的数据。
代理配置UI
- 以额外的CORS启动Localstack
EXTRA_CORS_ALLOWED_ORIGINS=https://aws-replicator.localhost.localstack.cloud:4566 localstack start -d
-
从Web应用程序扩展库启用Localstack AWS replicator
-
扩展安装后,将在以下端点暴露一个小的配置端点:[http://localhost:4566/_localstack/aws-replicator/index.html](http://localhost:4566/_localstack/aws-replicator/index.html)。
-
使用此Web UI以YAML语法定义代理配置,以及AWS凭据(AWS访问密钥ID、秘密访问密钥和可选的会话令牌),并保存配置。代理应报告启用状态,并在主机上生成代理容器。
- 现在我们可以通过LocalStack直接与真实AWS云资源进行通信。
要清理正在运行的代理容器,只需在Replicator UI上点击“禁用”即可。
特定资源的代理
作为将特定服务的所有请求转发的一种替代方法,您还可以仅将AWS的请求转发到特定资源。
例如,假设我们在AWS中拥有一个名为my-s3-bucket
的S3存储桶,然后我们可以使用以下配置将任何对s3://my-s3-bucket
的请求转发到真实AWS,同时仍然在LocalStack本地处理对所有其他存储桶的请求
services:
s3:
resources:
# list of ARNs of S3 buckets to proxy to real AWS
- '.*:my-s3-bucket'
operations:
# list of operation name regex patterns (optional)
- 'Get.*'
- 'Put.*'
# optionally, specify that only read requests should be allowed (Get*/List*/Describe*, etc)
read_only: false
将上述配置存储到名为proxy_config.yml
的文件中,然后我们可以通过以下方式启动代理
localstack aws proxy -c proxy_config.yml
如果我们对S3存储桶my-s3-bucket
执行本地操作,代理将转发请求并返回真实AWS的结果
$ awslocal s3 ls s3://my-s3-bucket
2023-05-14 15:53:40 148 my-file-1.txt
2023-05-15 10:24:43 22 my-file-2.txt
针对其他存储桶的任何其他S3请求将在LocalStack本地的状态中运行,例如
$ awslocal s3 mb s3://test123
make_bucket: test123
...
一个更全面的示例,涉及本地Lambda函数与远程SQS队列和S3存储桶相结合,可以在本存储库的example
文件夹中找到。
配置
除了上述代理服务配置之外,以下配置可以用于自定义扩展本身的行为(只需将它们作为环境变量传递给主LocalStack容器)
REPLICATOR_CLEANUP_PROXY_CONTAINERS
:在关闭时是否清理(删除)代理Docker容器(默认值为1
)。可以设置为0
以帮助调试问题,例如,如果代理容器启动后立即退出。REPLICATOR_LOCALSTACK_HOST
:代理容器连接到LocalStack主容器时使用的目标主机(默认情况下自动确定)REPLICATOR_PROXY_DOCKER_FLAGS
:创建代理Docker容器时应该传递的附加标志
注意:由于核心框架的一些最近更改,请确保以启用GATEWAY_SERVER=hypercorn
配置启动LocalStack容器,以实现向后兼容性。这将在即将发布的版本中修复。
资源复制器CLI
下面的图示说明了如何使用扩展来复制状态,例如,将AWS中的SQS队列及其包含的消息复制到您的LocalStack实例中。
要使用资源复制器,请确保您可以在终端中访问已配置的AWS。注意:扩展将以只读模式与AWS通信,并且不会对您的真实AWS账户进行任何更改。
以下命令可以将SQS队列(包括其消息)复制到您的LocalStack实例中
$ localstack aws replicate -s sqs
一旦命令执行完成,您应该能够列出并操作复制到本地账户中的队列
$ awslocal sqs list-queues
...
$ awslocal sqs receive-message --queue-url ...
...
安装
要安装CLI扩展,请使用以下pip
命令
pip install "git+https://github.com/localstack/localstack-extensions/#egg=localstack-extension-aws-replicator&subdirectory=aws-replicator"
要安装扩展本身(在LocalStack内部运行的服务器组件),请使用以下extensions
命令
localstack extensions install "git+https://github.com/localstack/localstack-extensions/#egg=localstack-extension-aws-replicator&subdirectory=aws-replicator"
变更日志
0.1.19
:打印资源配置中无效正则表达式的可读消息;修复基于主机地址代理S3请求的逻辑0.1.18
:更新环境检查以使用SDK Docker客户端并启用从Docker内部启动代理(例如,作为init脚本的LS主容器的一部分)0.1.17
:添加对基于ARN的模式匹配的基本支持secretsmanager
资源0.1.16
:更新导入以支持localstack >=3.6兼容性0.1.15
:将localstack依赖项安装移至extra,因为它在运行时提供0.1.14
:将缺少的依赖项安装到代理容器以实现localstack >=3.4兼容性0.1.13
:添加对localstack >=3.4的兼容性;添加http2-server;迁移到localstack auth login0.1.12
:修改aws凭证文本字段类型为密码0.1.11
:修复最近CloudFormation更改后损坏的导入0.1.10
:添加REPLICATOR_PROXY_DOCKER_FLAGS
选项以将自定义标志传递给代理Docker容器0.1.9
:增强代理网络并添加REPLICATOR_LOCALSTACK_HOST
配置选项0.1.8
:添加REPLICATOR_CLEANUP_PROXY_CONTAINERS
选项以跳过删除代理容器进行调试0.1.7
:将rolo依赖项添加到测试中0.1.6
:调整配置以支持LOCALSTACK_AUTH_TOKEN
以及旧版API密钥0.1.5
:对最近的上游更改进行的小幅度修复0.1.4
:修复v3.0兼容性中bootstrap.auth
模块的导入0.1.3
:调整代码导入以适应最近的LocalStack v3.0模块更改0.1.2
:移除已弃用的ProxyListener以启动本地aws-replicator代理服务器0.1.1
:添加简单的配置Web界面0.1.0
:扩展的初始版本
许可协议
本扩展根据Apache License,版本2.0发布。使用它,您还同意LocalStack的最终用户许可协议(EULA)。
项目详细信息
localstack_extension_aws_replicator-0.1.19.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ef00918ee2faef1a0441ea4e911b5fa889425562dbad546f9b51074d48c83f0 |
|
MD5 | a722cc165d2664bde473f075c618863b |
|
BLAKE2b-256 | 58044a71fe8d56d9f26527300a0dfeb391650992f3b9c98662b60d4eae06fdb3 |
localstack_extension_aws_replicator-0.1.19-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | baae2ea2da6af05395e785a52f029e0d9f2e0cee5c068e9f4f452d53ae635b77 |
|
MD5 | 3127dac78314e7b550a64d504911ae37 |
|
BLAKE2b-256 | 3d8663d53b8970f69cbbceee12d3d91d16dd6bb307e15a0aa2e925880e972af1 |