Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lsの--recursiveオプションに対応する #1

Open
tttol opened this issue Jun 26, 2024 · 2 comments
Open

lsの--recursiveオプションに対応する #1

tttol opened this issue Jun 26, 2024 · 2 comments
Labels
TODO planning to fix, but not hurrying

Comments

@tttol
Copy link
Owner

tttol commented Jun 26, 2024

aws s3 ls --recursiveのような--recursiveオプションがついたリクエストに対応する。

@tttol
Copy link
Owner Author

tttol commented Jun 26, 2024

aws s3 ls --recursive が実行された場合、S3のリスト操作はサーバー側でディレクトリツリーを再帰的に処理します。これは、クライアントが複数のリクエストを送るのではなく、サーバーがディレクトリの構造をトラバースしてリストを作成することを意味します。そのため、サーバーに送信されるリクエストは1つだけですが、そのリクエストに対するレスポンスには、再帰的にリストされたすべてのオブジェクトが含まれます。

具体的には、aws-cli がS3バケットのルートに対して1つのリクエストを送信し、サーバーはそのリクエストに基づいて再帰的にディレクトリをリストし、すべてのオブジェクトを1つのレスポンスとして返します。したがって、アプリにはリクエストが1つしか来ません。

@tttol
Copy link
Owner Author

tttol commented Jun 26, 2024

https://github.com/aws/aws-cli/blob/develop/awscli/customizations/s3/subcommands.py#L503

        if not bucket:
            self._list_all_buckets()
        elif parsed_args.dir_op:
            # Then --recursive was specified.
            self._list_all_objects_recursive(
                bucket, key, parsed_args.page_size, parsed_args.request_payer)

--recursiveが指定されるとparsed_args.dir_opがtrueになり、_list_all_objects_recursiveメソッドでlsを再帰呼び出ししてそう。
つまり、リクエスト1つの中で再帰的にlsしてることがわかる。

@tttol tttol added the TODO planning to fix, but not hurrying label Jun 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TODO planning to fix, but not hurrying
Projects
None yet
Development

No branches or pull requests

1 participant