

# 删除目录存储桶中的对象
<a name="directory-bucket-delete-object"></a>

您可以使用 Amazon S3 控制台、AWS Command Line Interface（AWS CLI）或 AWS SDK 从 Amazon S3 目录桶中删除对象。有关更多信息，请参阅[使用目录存储桶](directory-buckets-overview.md)和[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)。

**警告**  
删除对象的操作无法撤销。
此操作将删除所有指定的对象。删除文件夹时，请等待删除操作完成，然后再将新对象添加到文件夹。否则，新对象也可能会被删除。

**注意**  
当以编程方式从目录桶中删除多个对象时，请注意以下事项：  
`DeleteObjects` 请求中的对象键必须至少包含一个非空格字符。不支持完全由空格字符组成的字符串。
`DeleteObjects` 请求中的对象键不能包含 Unicode 控制字符，但换行符（`\n`）、制表符（`\t`）和回车符（`\r`）除外。

## 使用 S3 控制台
<a name="delete-object-directory-bucket-console"></a>

**删除对象**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择包含您要删除的对象的目录桶。

1. 请选择**对象**选项卡。在**对象**列表中，选中要删除的一个或多个对象左侧的复选框。

1. 选择**删除**。

   

1. 在**删除对象**页面上，在文本框中输入 **permanently delete**。

1. 选择**删除对象**。

## 使用 AWS SDK
<a name="delete-object-directory-bucket-sdks"></a>

------
#### [ SDK for Java 2.x ]

**Example**  
下面的示例通过使用 AWS SDK for Java 2.x 删除目录桶中的对象。  

```
static void deleteObject(S3Client s3Client, String bucketName, String objectKey) {


        
        try {
            
            DeleteObjectRequest del = DeleteObjectRequest.builder()
                    .bucket(bucketName)
                    .key(objectKey)
                    .build();

            s3Client.deleteObject(del);
            
            System.out.println("Object " + objectKey + " has been deleted");
            
            
        } catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        
    }
```

------
#### [ SDK for Python ]

**Example**  
下面的示例通过使用 适用于 Python (Boto3) 的 AWS SDK 删除目录桶中的对象。  

```
import logging
import boto3
from botocore.exceptions import ClientError

def delete_objects(s3_client, bucket_name, objects):
    '''
    Delete a list of objects in a directory bucket

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket that contains objects to be deleted; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param objects: List of dictionaries that specify the key names to delete
    :return: Response output, else False
    '''

    try:
        response = s3_client.delete_objects(
            Bucket = bucket_name,
            Delete = {
                'Objects': objects
            } 
        )
        return response
    except ClientError as e:
        logging.error(e)
        return False
    

if __name__ == '__main__':
    region = 'us-west-2'
    bucket_name = 'BUCKET_NAME'
    objects = [
        {
            'Key': '0.txt'
        },
        {
            'Key': '1.txt'
        },
        {
            'Key': '2.txt'
        },
        {
            'Key': '3.txt'
        },
        {
            'Key': '4.txt'
        }
    ]
    
    s3_client = boto3.client('s3', region_name = region)
    results = delete_objects(s3_client, bucket_name, objects)
    if results is not None:
        if 'Deleted' in results:
            print (f'Deleted {len(results["Deleted"])} objects from {bucket_name}')
        if 'Errors' in results:
            print (f'Failed to delete {len(results["Errors"])} objects from {bucket_name}')
```

------

## 使用 AWS CLI
<a name="directory-download-object-cli"></a>

以下 `delete-object` 示例命令显示如何使用 AWS CLI 从目录存储桶中删除对象。要运行此命令，请将 `user input placeholders` 替换为您自己的信息。

```
aws s3api delete-object --bucket bucket-base-name--zone-id--x-s3 --key KEY_NAME 
```

有关更多信息，请参阅《AWS CLI Command Reference》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-object.html)。

以下 `delete-objects` 示例命令显示如何使用 AWS CLI 从目录存储桶中删除对象。要运行此命令，请将 `user input placeholders` 替换为您自己的信息。

`delete.json` 文件如下所示：

```
{
    "Objects": [
        {
            "Key": "0.txt"
        },
        {
            "Key": "1.txt"
        },
        {
            "Key": "2.txt"
        },
        {
            "Key": "3.txt"
        }
    ]
}
```

`delete-objects` 示例命令如下所示：

```
aws s3api delete-objects --bucket bucket-base-name--zone-id--x-s3 --delete file://delete.json 
```

有关更多信息，请参阅《AWS CLI Command Reference》**中的 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/delete-objects.html)。