我们在Google应用引擎标准环境上部署我们的应用程序。我们需要从我们的应用引擎访问内存(Redis)。
在文档之后,我们创建了Serverless VPC访问连接器,并配置了app引擎:
<vpc-access-connector>
<name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
</vpc-access-connector>并设置IAM权限。但是,我们仍然不能连接到私有IP上的redis实例,比如10.0.0.4使用jedis:
Jedis jedis = new Jedis("10.0.0.4");
发布于 2019-08-20 07:43:53
如果您用gcloud beta app deploy target/SNAPSHOT部署它,它应该可以工作。
我准备并上传了一个在Github的样本。
我是如何在一个新项目中做到的:
appengine-web.xml中添加VPC连接器<vpc-access-connector>
<name>projects/PROJECT_ID/locations/us-central1/connectors/CONNECTOR_NAME</name>
</vpc-access-connector>pom.xml,添加以下依赖项: <dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>servlet.java文件:import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import redis.clients.jedis.Jedis;
@WebServlet(
name = "Redis",
description = "Redis: Connect to Redis",
urlPatterns = "/redis"
)
public class RedisServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String s;
try{
Jedis jedis = new Jedis("10.0.0.4");
jedis.set("myKey", "It's alive");
s = "Life test: "+ jedis.get("myKey");
}catch(Exception e){s = "Couldn't connect "; e.printStackTrace();}
resp.getWriter().write(s);
}
}mvn package (这将创建一个“目标”文件夹)
gcloud beta app deploy target/ARTIFACT_ID-1.0-SNAPSHOT请注意,它仍然处于测试版,而且可能不能很可靠地工作。
https://stackoverflow.com/questions/57552763
复制相似问题