[英]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.