Database and Knowledge Loader


标题: “数据库和知识加载器” 权重: 33


在本节中,我们将配置 petstore 数据库并将必要的文件上传到 S3 以供知识库使用。此过程由 dataloader.sh 脚本自动化,我们将在之前步骤中连接的堡垒主机上运行该脚本。

说明

  1. 访问堡垒主机:

    • 确保我们已通过 EC2 实例连接连接到堡垒主机,如前一节所述。
  2. 执行设置脚本:

    • 运行以下命令执行 dataloader.sh 脚本
      ./dataloader.sh
      
    • Enter 键: 执行脚本
    • 如果我们没有找到上述脚本,请运行以下命令:
      # 将 dataloader.sh 下载到 ec2-user 的主目录
      cd /home/ec2-user
      sudo wget https://ws-assets-prod-iad-r-pdx-f3b3f9f1a7d6a3d0.s3.us-west-2.amazonaws.com/4b5336de-e5b8-4b90-b1d8-dec31125cd95/dataloader.sh
      sudo chmod +x dataloader.sh
    
  3. 脚本功能:

    • dataloader.sh 脚本自动执行以下设置任务:
      • 数据库设置:
        • 连接到 Aurora RDS 数据库并创建 petstore 数据库。
        • 执行模式文件 (ddl.sql) 以创建必要的表和关系。
        • data.sql 将初始数据插入 petstore 数据库。
      • S3 文件上传:
        • Pet_Store_QnA_data.csv 上传到 Q&A 知识库 S3 存储桶,供知识库代理进行基于知识的查询使用。
        • ddl.txt 上传到 DB 知识库 S3 存储桶,供查询代理参考数据库模式。
  4. 提示输入:

    • 在执行过程中,脚本将提示我们输入 postgres 用户的数据库密码。请确保我们准备好此信息,默认密码为 petstoremaster
  5. 验证设置:

    • 脚本完成后,请确认:
      • petstore 数据库已在我们的 RDS 实例中创建,并且表和数据已填充。我们将使用 CloudShell 中内置的 psql 工具来验证:
      # 获取具有特定描述的堆栈信息
      export STACK_DETAILS=$(aws cloudformation describe-stacks --query "Stacks[*]" --output json | jq -r '.[] | select(.Description == "Agentic AI with Bedrock Agents workshop")')
      
      # 从堆栈详细信息中提取堆栈名称
      export STACK_NAME=$(echo "$STACK_DETAILS" | jq -r '.StackName')
      
      export DB_ENDPOINT=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" --query "Stacks[0].Outputs[?OutputKey=='DBClusterEndpoint'].OutputValue" --output text)
      
      ## 使用 psql 连接到 PostgreSQL
      psql --host=$DB_ENDPOINT \
      --port=5432 \
      --username=postgres \
      --password \
      --dbname=petstore
      
      • 在连接过程中,psql 将提示我们输入 postgres 用户的数据库密码。默认密码为 petstoremaster
    • 使用 psql 连接到数据库后,运行以下命令验证数据库中的数据:
    -- 显示表中的数据:
    SELECT * FROM public.address;
    SELECT * FROM public.category;
    SELECT * FROM public.customer;
    SELECT * FROM public."order";
    SELECT * FROM public.pet;
    SELECT * FROM public.pettag;
    SELECT * FROM public.tag;
    SELECT * FROM public."user";
    
    • 运行 :code[\q]{showCopyAction=true} 退出 psql。
    • 文件 Pet_Store_QnA_data.csvddl.txt 也已上传到各自的 S3 存储桶,要验证,请运行以下 AWS CLI 命令:
    # 提取 Q&A S3 存储桶名称(用于 Pet_Store_QnA_data.csv)
    QNA_BUCKET=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
    --query "Stacks[0].Outputs[?OutputKey=='PetStoreQAKBBucket'].OutputValue" --output text)
    
    # 提取 DB S3 存储桶名称(用于 ddl.txt)
    DB_BUCKET=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
    --query "Stacks[0].Outputs[?OutputKey=='PetStoreDBKBBucket'].OutputValue" --output text)
    
    # 验证 Q&A 存储桶中的 Pet_Store_QnA_data.csv
    aws s3 ls s3://$QNA_BUCKET/ --recursive | grep Pet_Store_QnA_data.csv
    
    # 验证 DB 存储桶中的 ddl.txt
    aws s3 ls s3://$DB_BUCKET/ --recursive | grep ddl.txt
    

运行 dataloader.sh 后,我们的数据库和知识库源将完全设置好,可用于本次研讨会。