如何通过Google Kubernetes引擎中的spring boot app在GCS Bucket中读取.tar.gz文件

时间:2018-06-07 18:13:23

标签: google-cloud-platform google-cloud-storage google-kubernetes-engine

我有一个GCS存储桶,我上传.tar.gz文件。只要有新文件上传,Google PUB-SUB就会向Kubernetes Engine发送应用通知。应用程序具有侦听通知的侦听器,并且必须读取.tar.gz文件。

我已经设置了从GCS到APP的主题/订阅者通知。通知到来时,我无法确定如何阅读.tar.gz文件。

我尝试下面的代码来阅读.tar.gz,但它不是我应该做的。它给出了不可读的字符和我没有解压缩它。我使用了google-cloud-storage lib。

if(map.containsValue("OBJECT_FINALIZE") ){
           Storage storage = StorageOptions.newBuilder()
                    .setProjectId(projectId)
                    .setCredentials(creaCredentialsProvider.getCredentials()).build().getService();


           try(ReadChannel reader = storage.reader(archiveMessage.getBucket(), archiveMessage.getName())){
               ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
               while (reader.read(bytes) > 0) {
                   bytes.flip();
                   System.out.println((char)bytes.get());
                   bytes.clear();
               }

           }


        }

我查看了持久磁盘&转码并不直接看。 任何有关我应该去的方向的帮助或代码样本都非常感谢。

1 个答案:

答案 0 :(得分:0)

Google Cloud Platform中的转码功能不具备可提供两级解压缩的功能,尤其是tar.gz文件。但是,按照此Stackoverflow link中提供的响应,似乎有一种编程的方法来解决此问题。您将使用tarfile.TarFile.extractfile方法来绕过不得不提取到磁盘的步骤