Cloud Workflows Storage Connector 无法访问子目录中的对象

问题描述 投票:0回答:1

我正在使用 Google Cloud 工作流程,我想根据 Google Cloud Storage 中是否存在文件来控制接下来发生的情况。

我可以成功使用 Cloud Storage Connector for Workflows 检索位于存储桶根目录中的对象的元数据,但是当我尝试从顶层以下的任何级别目录中检索元数据时,我收到 404 错误.

注意,我知道严格来说存储桶没有目录,我们看到的文件路径实际上只是对象名称的一部分,但这似乎是描述我的问题的最简单方法。

示例代码如下:

这按预期工作:

# target object is gs://bucket-name/test_file.txt
main:
  steps:
    - file_init:
        assign:
          - bucket: bucket-name
          - object: test_file.txt
    - fetch_file_details:
        call: googleapis.storage.v1.objects.get
        args:
            bucket: ${bucket}
            object: ${object}
        result: getResult
    - out:
        return: ${getResult}

然而这并没有(目标文件肯定在它应该在的地方):

# target object is gs://bucket-name/folder/test_file.txt
main:
  steps:
    - file_init:
        assign:
          - bucket: bucket-name
          - object: folder/test_file.txt
    - fetch_file_details:
        call: googleapis.storage.v1.objects.get
        args:
            bucket: ${bucket}
            object: ${object}
        result: getResult
    - out:
        return: ${getResult}

我假设对象名称存在一些微妙的语法问题,但我尝试了许多不同的组合,但似乎没有任何效果。我尝试过使用单引号、双引号、CRLF、LF 等。所有常见的罪魁祸首,但没有任何效果。

我做错了什么?

google-cloud-platform google-cloud-storage
1个回答
0
投票

我认为这是建立在 Roopa M 提供的链接之一中的一些内容的基础上的,但技巧是对象路径中的“/”需要编码为“%2F”

所以现在可以使用以下方法:

# target object is gs://bucket-name/folder/test_file.txt
main:
  steps:
    - file_init:
        assign:
          - bucket: bucket-name
          - object: folder%2Ftest_file.txt
    - fetch_file_details:
        call: googleapis.storage.v1.objects.get
        args:
            bucket: ${bucket}
            object: ${object}
        result: getResult
    - out:
        return: ${getResult}
© www.soinside.com 2019 - 2024. All rights reserved.