[英]Amazon ElastiCache Redis Public Access
我有一个 Amazon AWS 帐户。我想使用 ElastiCache Redis。我已经安装了 ElastiCache Redis。我如何从公共地址连接 ElastiCache Redis?
我已经安装了 Amazon Linux AMI。 我正在从它访问 ElastiCache Redis。但我想从公共地址访问。
[更新] 正如下面卢克所提到的,这现在是可能的。 下面是参考。 https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws
可悲的是没有。 你可以参考这个问题。
您可以连接到 Amazon 以外的 Amazon ElastiСache Redis 吗?
它提供了一个参考
http://aws.amazon.com/elasticache/faqs/#Can_I_access_Amazon_ElastiCache_from_outside_AWS
那说明
VPC 内部或外部的 Amazon ElastiCache 集群永远不允许从 Internet 访问。
如果您想要访问部署在 VPC 内、从 Internet 或从 VPC 外部的 EC2 实例的 Amazon ElastiCache 节点,请参阅此处的指南。 http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html
我目前用于开发目的的方法是
# main.go
package main
import (
"flag"
"fmt"
"io"
"net"
"sync"
)
var localAddr *string = flag.String("l", "localhost:9999", "local address")
var remoteAddr *string = flag.String("r", "localhost:80", "remote address")
func proxyConn(conn *net.TCPConn) {
rAddr, err := net.ResolveTCPAddr("tcp", *remoteAddr)
if err != nil {
panic(err)
}
rConn, err := net.DialTCP("tcp", nil, rAddr)
if err != nil {
panic(err)
}
defer rConn.Close()
var wg sync.WaitGroup
wg.Add(1)
go func() {
io.Copy(conn, rConn)
// conn2 has returned EOF or an error, so we need to shut down the
// other half of the duplex copy.
conn.Close()
wg.Done()
}()
wg.Add(1)
go func() {
io.Copy(rConn, conn)
rConn.Close()
wg.Done()
}()
wg.Wait()
}
func main() {
flag.Parse()
fmt.Printf("Listening: %v\nProxying: %v\n\n", *localAddr, *remoteAddr)
addr, err := net.ResolveTCPAddr("tcp", *localAddr)
if err != nil {
panic(err)
}
listener, err := net.ListenTCP("tcp", addr)
if err != nil {
panic(err)
}
for {
conn, err := listener.AcceptTCP()
if err != nil {
panic(err)
}
fmt.Println("handling connection")
go func() {
proxyConn(conn)
fmt.Println("connection closed")
}()
}
}
# run commands
go run main.go -l 0.0.0.0:9999 -r <redacted>.use1.cache.amazonaws.com:6379
Cloud9 实例可以替换为任何其他 EC2 实例。 显然,添加所有这些跃点会产生性能成本。 但它有效。
这有点模棱两可,但简短的回答是这通常是不可能的。 根据定义,ECS 是私有的,因为它位于内存存储中并且需要极快的速度。 允许从互联网访问不利于超快的速度。 根据 AWS 文档 [1],您可能希望的唯一解决方法是通过 VPN 访问集群。
重要 将 ElastiCache 集群开放到 0.0.0.0/0 不会将集群暴露给 Internet,因为它没有公共 IP 地址,因此无法从 VPC 外部访问。 但是,默认安全组可能会应用于客户账户中的其他 Amazon EC2 实例,并且这些实例可能具有公共 IP 地址。 如果他们碰巧在默认端口上运行某些东西,那么该服务可能会无意中暴露出来。 因此,我们建议创建一个由 ElastiCache[2] 独占使用的 VPC 安全组。
-----参考文献----- [1] https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws [2] https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/accessing-elasticache.html#access-from-outside-aws
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.