我想达到的目标是:
- 我有一个ruby on rails应用程序,它使用fog-aws适配器通过载波来存储数据
- 我正在尝试模拟与AWS S3的不良通信
我所做的:
我有一个示例ruby脚本,它尝试连接到AWS并枚举对象:
require 'aws-sdk-s3'
params = {region: 'us-west-2', access_key_id: 'key', secret_access_key: 'secret'}
s3 = Aws::S3::Client.new(params)
puts s3.list_objects({bucket: 'bucketname', prefix: '', max_keys: 1})
这很有效-所以凭据是正确的。
现在我想用toxiproxy(一个随机断开连接的混沌工程工具,等等)来毒化它。
- 已将http代理添加到参数:第一个月
- 用我能想到的任何东西创建了一个毒素代理定义:
toxiproxy-cli create --listen localhost:7890 -u bucketname.s3.amazonaws.com:443 test-aws
toxiproxy-cli create --listen localhost:7890 -u s3-r-w.us-west-2.amazonaws.com:443 test-aws
然后我执行上述脚本,我看到的是:lib/ruby/2.6.0/net/protocol.rb:225:in 'rbuf_fill': end of file reached (Seahorse::Client::NetworkingError)
我搞不懂连接所有东西所需的神奇参数。
所以问题是:
- 我想做的事能用托克斯普罗克实现吗?
- 如果没有,建议采取什么措施?
1条答案
按热度按时间rxztt3cl1#
我想通了。看起来ToxicProxy本身不足以拦截和转发连接--我还需要使用Tinyproxy。
我是这么做的:
1.将tinyproxy设置为端口8888上的http代理
1.在端口7890上设置toxiproxy以转发到端口8888
1.将AWS客户端配置为连接到端口7890上的http_proxy--这允许toxiproxy扰乱连接,但将允许tinyproxy使用HTTP CONNECT和到AWS的隧道。
示例代码:
tinyproxy配置示例:
toxiproxy配置示例: