Skip to content

Commit df26b1e

Browse files
authored
Minor - Adding S3 list buckets (#1030)
1 parent 64f4a2b commit df26b1e

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

awswrangler/s3/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from awswrangler.s3._delete import delete_objects # noqa
55
from awswrangler.s3._describe import describe_objects, get_bucket_region, size_objects # noqa
66
from awswrangler.s3._download import download # noqa
7-
from awswrangler.s3._list import does_object_exist, list_directories, list_objects # noqa
7+
from awswrangler.s3._list import does_object_exist, list_buckets, list_directories, list_objects # noqa
88
from awswrangler.s3._merge_upsert_table import merge_upsert_table # noqa
99
from awswrangler.s3._read_excel import read_excel # noqa
1010
from awswrangler.s3._read_parquet import read_parquet, read_parquet_metadata, read_parquet_table # noqa
@@ -24,6 +24,7 @@
2424
"get_bucket_region",
2525
"size_objects",
2626
"does_object_exist",
27+
"list_buckets",
2728
"list_directories",
2829
"list_objects",
2930
"read_parquet",

awswrangler/s3/_list.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,22 @@ def list_objects(
356356
if chunked:
357357
return result_iterator
358358
return [path for paths in result_iterator for path in paths]
359+
360+
361+
def list_buckets(boto3_session: Optional[boto3.Session] = None) -> List[str]:
362+
"""List Amazon S3 buckets.
363+
364+
Parameters
365+
----------
366+
boto3_session : boto3.Session(), optional
367+
Boto3 Session. The default boto3 session to use, default to None.
368+
369+
Returns
370+
-------
371+
List[str]
372+
List of bucket names.
373+
374+
"""
375+
client_s3: boto3.client = _utils.client(service_name="s3", session=boto3_session)
376+
buckets = client_s3.list_buckets()["Buckets"]
377+
return [bucket["Name"] for bucket in buckets]

docs/source/api.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Amazon S3
3434
does_object_exist
3535
download
3636
get_bucket_region
37+
list_buckets
3738
list_directories
3839
list_objects
3940
merge_datasets

tests/test_s3.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
logging.getLogger("awswrangler").setLevel(logging.DEBUG)
1818

1919

20+
def test_list_buckets() -> None:
21+
assert len(wr.s3.list_buckets()) > 0
22+
23+
2024
@pytest.mark.parametrize("sanitize_columns,col", [(True, "foo_boo"), (False, "FooBoo")])
2125
def test_sanitize_columns(path, sanitize_columns, col):
2226
df = pd.DataFrame({"FooBoo": [1, 2, 3]})

0 commit comments

Comments
 (0)