下面代码中的[request.ContinuationToken = response.NextContinuationToken]是什么意思?

What is the meaning of [request.ContinuationToken = response.NextContinuationToken] in the code below?

我正在尝试获取给定 Amazon S3 客户端的存储桶和前缀中的对象列表。 有人建议我使用以下代码,它似乎运行良好,但我不明白为什么。我真的一点都不熟悉AWS和S3。 有没有大佬说清楚ContinuationToken,NextContinuationToken的意思和这个表达式的意思

request.ContinuationToken = response.NextContinuationToken;

请输入下面的代码?

提前致谢!

    ListObjectsV2Request request = new ListObjectsV2Request
        {
            BucketName = bucketName,
            Prefix= prefixName
        };
    ListObjectsV2Response response; 
    do
        {
            response = await client.ListObjectsV2Async(request);

            // Process the response.
            foreach (S3Object entry in response.S3Objects)
            {
                Console.WriteLine("key = {0} size = {1}",
                    entry.Key, entry.Size);
            }
            Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken);
            request.ContinuationToken = response.NextContinuationToken;
        } while (response.IsTruncated);

让我们看看文档。快速搜索“S3 NextContinuationToken”会得到 this page:

NextContinuationToken

NextContinuationToken is sent when isTruncated is true, which means there are more keys in the bucket that can be listed. The next list requests to Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken is obfuscated and is not a real key.

所以你有一个包含更多键的桶,可以放入一个响应中。您需要发出多个请求来获取所有密钥。每个响应都会为您提供一个标记,指示该响应在何处结束以及下一个响应应从何处开始。

通过将 NextContinuationToken 传递给下一个请求,您是在告诉 AWS API 您希望下一个响应从上一个响应停止的地方开始。

许多 AWS 的 api 被分页,这意味着它们仅 return 例如1000 个结果,如果您想要更多结果,您需要第二次 api 电话,告诉他们您想要下一个 1000 个结果。

告诉 API“我想要下一个 1000”结果的方法是指定一个 NextToken、一个 PageToken、一个 ContinuationToken,...令牌的名称在 API 之间不同s 但概念保持不变。

代码所做的是改变请求,将 ContinuationToken 设置为 API 当前响应的令牌。这样,在下一次循环迭代期间,API 知道要发送给您的 1000 个下一个结果。如果要获取更多结果,API 将以不同的 NextContinuationToken 响应。冲洗并重复,直到 API 最终将 IsTruncated 标志设置为 false,这意味着没有更多结果可获取。