---
title: S3
description: 上传、下载、列出和管理 S3 文件
---

import { BlockInfoCard } from "@/components/ui/block-info-card"

<BlockInfoCard 
  type="s3"
  color="linear-gradient(45deg, #1B660F 0%, #6CAE3E 100%)"
/>

{/* MANUAL-CONTENT-START:intro */}
[Amazon S3](https://aws.amazon.com/s3/) 是由 Amazon Web Services 提供的一项高度可扩展、安全且持久的云存储服务。它旨在从网络上的任何地方存储和检索任意数量的数据，使其成为各种规模企业最广泛使用的云存储解决方案之一。

使用 Amazon S3，您可以：

- **存储无限数据**：上传任意大小和类型的文件，几乎没有存储容量限制
- **随时随地访问**：以低延迟从世界任何地方检索您的文件
- **确保数据持久性**：通过自动数据复制，享受 99.999999999%（11 个 9）的持久性
- **控制访问权限**：通过细粒度的安全策略管理权限和访问控制
- **自动扩展**：无需手动干预或容量规划即可处理不同的工作负载
- **无缝集成**：轻松连接其他 AWS 服务和第三方应用程序
- **优化成本**：根据访问模式从多种存储类别中选择以优化成本

在 Sim 中，S3 集成使您的代理能够使用安全的预签名 URL 检索和访问存储在 Amazon S3 存储桶中的文件。这支持强大的自动化场景，例如处理文档、分析存储数据、检索配置文件以及在工作流中访问媒体内容。您的代理可以安全地从 S3 获取文件，而无需暴露您的 AWS 凭证，从而轻松将云存储的资源集成到您的自动化流程中。此集成弥合了云存储与 AI 工作流之间的差距，通过 AWS 强大的身份验证机制，在保持安全最佳实践的同时，实现对存储数据的无缝访问。
{/* MANUAL-CONTENT-END */}

## 使用说明

将 S3 集成到工作流程中。上传文件、下载对象、列出存储桶内容、删除对象以及在存储桶之间复制对象。需要 AWS 访问密钥和秘密访问密钥。

## 工具

### `s3_put_object`

将文件上传到 AWS S3 存储桶

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | 是 | 您的 AWS 访问密钥 ID |
| `secretAccessKey` | string | 是 | 您的 AWS 秘密访问密钥 |
| `region` | string | 是 | AWS 区域（例如，us-east-1） |
| `bucketName` | string | 是 | S3 存储桶名称 |
| `objectKey` | string | 是 | S3 中的对象键/路径（例如，folder/filename.ext） |
| `file` | file | 否 | 要上传的文件 |
| `content` | string | 否 | 要上传的文本内容（文件的替代选项） |
| `contentType` | string | 否 | Content-Type 头（如果未提供，将从文件中自动检测） |
| `acl` | string | 否 | 访问控制列表（例如，private, public-read） |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `url` | string | 已上传 S3 对象的 URL |
| `metadata` | object | 包括 ETag 和位置的上传元数据 |

### `s3_get_object`

从 AWS S3 存储桶中检索对象

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | 是 | 您的 AWS 访问密钥 ID |
| `secretAccessKey` | string | 是 | 您的 AWS 秘密访问密钥 |
| `s3Uri` | string | 是 | S3 对象 URL |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `url` | string | 用于下载 S3 对象的预签名 URL |
| `metadata` | object | 文件元数据，包括类型、大小、名称和最后修改日期 |

### `s3_list_objects`

列出 AWS S3 存储桶中的对象

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | 是 | 您的 AWS Access Key ID |
| `secretAccessKey` | string | 是 | 您的 AWS Secret Access Key |
| `region` | string | 是 | AWS 区域 \(例如，us-east-1\) |
| `bucketName` | string | 是 | S3 存储桶名称 |
| `prefix` | string | 否 | 用于过滤对象的前缀 \(例如，folder/\) |
| `maxKeys` | number | 否 | 返回的最大对象数 \(默认值：1000\) |
| `continuationToken` | string | 否 | 分页令牌 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `objects` | array | S3 对象列表 |

### `s3_delete_object`

从 AWS S3 存储桶中删除对象

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | 是 | 您的 AWS Access Key ID |
| `secretAccessKey` | string | 是 | 您的 AWS Secret Access Key |
| `region` | string | 是 | AWS 区域 \(例如，us-east-1\) |
| `bucketName` | string | 是 | S3 存储桶名称 |
| `objectKey` | string | 是 | 要删除的对象键/路径 |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `deleted` | boolean | 对象是否已成功删除 |
| `metadata` | object | 删除元数据 |

### `s3_copy_object`

在 AWS S3 存储桶内或之间复制对象

#### 输入

| 参数 | 类型 | 必需 | 描述 |
| --------- | ---- | -------- | ----------- |
| `accessKeyId` | string | 是 | 您的 AWS Access Key ID |
| `secretAccessKey` | string | 是 | 您的 AWS Secret Access Key |
| `region` | string | 是 | AWS 区域 \(例如，us-east-1\) |
| `sourceBucket` | string | 是 | 源存储桶名称 |
| `sourceKey` | string | 是 | 源对象键/路径 |
| `destinationBucket` | string | 是 | 目标存储桶名称 |
| `destinationKey` | string | 是 | 目标对象键/路径 |
| `acl` | string | 否 | 复制对象的访问控制列表 \(例如，private, public-read\) |

#### 输出

| 参数 | 类型 | 描述 |
| --------- | ---- | ----------- |
| `url` | string | 复制的 S3 对象的 URL |
| `metadata` | object | 复制操作元数据 |
