{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "a634365e",
      "metadata": {},
      "source": [
        "# AWS S3 Directory\n",
        "\n",
        ">[Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html) is an object storage service\n",
        "\n",
        ">[AWS S3 Directory](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html)\n",
        "\n",
        "This covers how to load document objects from an `AWS S3 Directory` object."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "49815096",
      "metadata": {
        "tags": []
      },
      "outputs": [],
      "source": [
        "#!pip install boto3"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "2f0cd6a5",
      "metadata": {
        "tags": []
      },
      "outputs": [],
      "source": [
        "from langchain.document_loaders import S3DirectoryLoader"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "id": "321cc7f1",
      "metadata": {
        "tags": []
      },
      "outputs": [],
      "source": [
        "loader = S3DirectoryLoader(\"testing-hwc\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "id": "2b11d155",
      "metadata": {
        "tags": []
      },
      "outputs": [],
      "source": [
        "loader.load()"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0690c40a",
      "metadata": {},
      "source": [
        "## Specifying a prefix\n",
        "You can also specify a prefix for more finegrained control over what files to load."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "id": "72d44781",
      "metadata": {},
      "outputs": [],
      "source": [
        "loader = S3DirectoryLoader(\"testing-hwc\", prefix=\"fake\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "id": "2d3c32db",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[Document(page_content='Lorem ipsum dolor sit amet.', lookup_str='', metadata={'source': 's3://testing-hwc/fake.docx'}, lookup_index=0)]"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "loader.load()"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Configuring the AWS Boto3 client\n",
        "You can configure the AWS [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) client by passing\n",
        "named arguments when creating the S3DirectoryLoader.\n",
        "This is useful for instance when AWS credentials can't be set as environment variables.\n",
        "See the [list of parameters](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html#boto3.session.Session) that can be configured."
      ],
      "metadata": {},
      "id": "91a7ac07"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "outputs": [],
      "source": [
        "loader = S3DirectoryLoader(\"testing-hwc\", aws_access_key_id=\"xxxx\", aws_secret_access_key=\"yyyy\")"
      ],
      "metadata": {},
      "id": "f485ec8c"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "outputs": [],
      "source": [
        "loader.load()"
      ],
      "metadata": {},
      "id": "c0fa76ae"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.10.6"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 5
}