object_name (TEXT), object_type (TEXT), object_bytes (BIGINT), and file_timestamp (TIMESTAMPTZ).
Syntax
AWS_ROLE_ARN, set the optional AWS_ROLE_EXTERNAL_ID to add a customer-controlled condition to your role’s trust policy.
For role-based AWS access you can additionally set an external ID. An external ID is a value you choose and control that AWS checks when Firebolt assumes your role, adding a second condition on top of your account’s unique IAM principal. Configuring one is a recommended best practice. See IAM roles.
Parameters
| Parameter | Description | Supported input types |
|---|---|---|
LOCATION | The name of a location object that contains the S3 URL and credentials. This is the recommended approach. For a comprehensive guide, see LOCATION objects. For syntax details, see CREATE LOCATION. Note: LOCATION must be specified as a named parameter (e.g., LOCATION => 'my_location'). Unlike URL, it cannot be used as a positional parameter. | TEXT |
PATTERN | Optional glob pattern applied to object names under the location URL. If omitted or NULL, the function uses *. LIST_OBJECTS remains non-recursive with LOCATION; PATTERN narrows matching but does not change traversal depth. | TEXT |
URL | The location of the Amazon S3 bucket containing your files. The expected format is s3://{bucket_name}/{full_file_path}. | TEXT |
AWS_ACCESS_KEY_ID | The AWS access key ID. | TEXT |
AWS_SECRET_ACCESS_KEY | The AWS secret access key. | TEXT |
AWS_SESSION_TOKEN | The AWS session token. | TEXT |
AWS_ROLE_ARN | The AWS role ARN. | TEXT |
AWS_ROLE_EXTERNAL_ID | The AWS role external ID. | TEXT |
Return Type
The output is a table with four columns:object_name(TEXT)object_type(TEXT)object_bytes(BIGINT)last_modified(TIMESTAMPTZ)
-
object_name: Contains both the full path and the file extension. -
object_type: Can be either “file” or “folder”.-
If
object_type= “folder”, theobject_bytesandlast_modifiedcolumns will containNULLvalues, as folders do not have associated sizes or timestamps. -
If
object_type= “file”, the following apply:- The
last_modifiedcolumn is populated from theLastModifiedattribute in Amazon S3. Note that AWS does not expose the creation timestamp, so the values in this column only differ from the creation time if an immutable object has been overwritten. - The
object_bytescolumn contains the size of the file in bytes.
- The
-
If
Examples
Using LOCATION object to store credentials
Best practice Firebolt recommends using aLOCATION object to store credentials for authentication.
The following code example retrieves all objects from the specified LOCATION using the LIST_OBJECTS function:
| object_name | object_type | object_bytes | last_modified |
|---|---|---|---|
| data/file1.csv | file | 1421277 | 2023-02-27 10:49:13+01 |
| data/folder1/ | folder | NULL | NULL |
LIST_OBJECTS recursive.
Using static credentials
The following code examples show how to list all objects (folders) that start with a specified prefix within an Amazon S3 bucket. You can specify either a part of the prefix or the full prefix. For example, the URLs ending with the prefixesfire or firebolt_sample_dataset both return identical results because both are valid matches for the firebolt_sample_dataset folder as follows:
| object_name (TEXT) | object_type (TEXT) | object_bytes (BIGINT) | last_modified (TIMESTAMPTZ) |
|---|---|---|---|
| help_center_assets/firebolt_sample_dataset/ | folder | NULL | NULL |
| object_name (TEXT) | object_type (TEXT) | object_bytes (BIGINT) | last_modified (TIMESTAMPTZ) |
|---|---|---|---|
| help_center_assets/firebolt_sample_dataset/players.json | file | 1,421,277 | 2023-02-27 10:49:13+01 |
| :------------------------------------------------------------ | :------------------- | :---------------------- | :----------------------------- |
| help_center_assets/firebolt_sample_dataset/levels.csv | file | 83,596 | 2023-02-27 11:06:52+01 |
| :------------------------------------------------------------ | :------------------- | :---------------------- | :----------------------------- |
| help_center_assets/firebolt_sample_dataset/tournaments.csv | file | 83,351 | 2022-12-15 15:34:14+01 |
| :------------------------------------------------------------ | :------------------- | :---------------------- | :----------------------------- |
| help_center_assets/firebolt_sample_dataset/games.json | file | 872 | 2023-02-27 13:18:54+01 |
| :------------------------------------------------------------ | :------------------- | :---------------------- | :----------------------------- |
| help_center_assets/firebolt_sample_dataset/rankings/ | folder | NULL | NULL |
| :------------------------------------------------------------ | :------------------- | :---------------------- | :----------------------------- |
| help_center_assets/firebolt_sample_dataset/playstats/ | folder | NULL | NULL |
lev or levels.csv return identical results because both are valid matches for the levels.csv file as follows:
| object_name (TEXT) | object_type (TEXT) | object_bytes (BIGINT) | last_modified (TIMESTAMPTZ) |
|---|---|---|---|
| help_center_assets/firebolt_sample_dataset/levels.csv | file | 83,596 | 2023-02-27 11:06:52+01 |
| object_name (TEXT) | object_type (TEXT) | object_bytes (BIGINT) | last_modified (TIMESTAMPTZ) |
|---|---|---|---|
| foo.csv | file | 10 | 2024-06-12 9:30:00 UTC |