Error 502 in GAE using cloud storage

I created an application using GAE Flexible. I can deploy and use the application without any problems. Then I added the upload file to Google Cloud Storage using JSON service_account , and it works correctly in localhost. I deployed it without any errors, but when the deployment is complete and I try to view my application, I see the following error: 502 server error :

Error: Server Error The server encountered a temporary error and could not complete your request. Please try again in 30 seconds. 

My application is a very simple application without a lot of requests, so I don't need to backtrack. In the log from the console, I see the following error:

 [error] 32#32: *9771 connect() failed (113: No route to host) while connecting to upstream, client: 130.211.3.171, server: , request: "GET /_ah/health HTTP/1.1", upstream: "http://172.18.0.2:8080/_ah/health", host: "10.128.0.2" 

here is my class for hosting images in cloud storage:

  @SuppressWarnings("serial") @WebServlet(name = "upload", value = "/upload") @MultipartConfig() public class UploadServlet extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class); private static final String BUCKET_NAME ="myBUCKET_NAME";// System.getenv("BUCKET_NAME"); private static Storage storage = null; @Override public void init() { try { logger.debug("bucket name: " + BUCKET_NAME ); InputStream is = getClass().getResourceAsStream("/Shelfcheck-9faaa7cbc5a5.json"); storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(is)) .build() .getService(); logger.debug("set credential correctly!" ); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Storage storage_service = StorageOptions.defaultInstance().service(); // Iterator<Bucket> bucketIterator = storage_service.list().iterateAll(); // while (bucketIterator.hasNext()) { // System.out.println(bucketIterator.next()); // } // storage = StorageOptions.getDefaultInstance().getService(); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { logger.debug("Start uploading the files..."); final Part filePart = req.getPart("file"); final String fileName = filePart.getSubmittedFileName(); // Modify access list to allow all users with link to read file List<Acl> acls = new ArrayList<>(); acls.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER)); // the inputstream is closed by default, so we don't need to close it here Blob blob = storage.create( BlobInfo.newBuilder(BUCKET_NAME, fileName).setAcl(acls).build(), filePart.getInputStream()); // return the public download link logger.debug(blob.getMediaLink()); resp.getWriter().print(blob.getMediaLink()); logger.debug(resp.toString()); logger.debug(blob.getMediaLink()); } } 

Does anyone know how I can solve this problem? Thanks

+5
source share

Source: https://habr.com/ru/post/1266368/


All Articles