

# 単一のオブジェクトの削除
<a name="delete-objects"></a>

Amazon S3 コンソールまたは DELETE API を使用して、S3 バケットから 1 つの既存のオブジェクトを削除できます。Amazon S3 でのオブジェクト削除の詳細については、「[Amazon S3 オブジェクトの削除](DeletingObjects.md)」を参照してください。

S3 バケット内のすべてのオブジェクトによりストレージコストが生じるため、不要になったオブジェクトを削除する必要があります。例えば、ログファイルを収集している場合は、不要になったファイルを削除することをお勧めします。ログファイルなどのオブジェクトを自動的に削除するライフサイクルルールをセットアップできます。詳細については、[バケットに S3 ライフサイクル設定を設定する](how-to-set-lifecycle-configuration-intro.md) を参照してください。

Amazon S3 の機能と料金の詳細については、[Amazon S3 料金](https://aws.amazon.com/s3/pricing)を参照してください。

## S3 コンソールの使用
<a name="delete-object-console"></a>

Amazon S3 コンソールを使用してバケットから 1 つのオブジェクトを削除するには、以下の手順に従ってください。

**警告**  
Amazon S3 コンソールでオブジェクトまたは指定されたオブジェクトバージョンを完全に削除した場合、削除を元に戻すことはできません。

**バージョニングが有効化または停止されているオブジェクトを削除するには**
**注記**  
 バージョニングが停止されたバケット内のオブジェクトのバージョン ID が `NULL` とマークされている場合、S3 は以前のバージョンが存在しないためオブジェクトを完全に削除します。ただし、バージョニングが停止されたバケット内のオブジェクトに有効なバージョン ID が一覧表示されている場合、S3 は削除されたオブジェクトの削除マーカーを作成し、オブジェクトの以前のバージョンを保持します。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** または **[ディレクトリバケット]** を選択します。

1. バケットリストで、オブジェクトを削除するバケットの名前を選択します。

1. オブジェクトを選択した後、**[削除]** を選択します。

1. **[指定されたオブジェクト]** に表示されているオブジェクトが削除されていることを確認するには、**[オブジェクトを削除しますか?]** テキスト ボックスに「**delete**」と入力します。

**バージョニングが有効なバケット内の特定のオブジェクトバージョンを完全に削除するには**
**警告**  
Amazon S3 で指定されたオブジェクトバージョンを完全に削除した場合、削除を元に戻すことはできません。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

1. **[バケット]** リストで、オブジェクトを削除するバケットの名前を選択します。

1. 削除するオブジェクトを選択します。

1. **[バージョンを表示]** トグルを選択します。

1. オブジェクトバージョンを選択した後、**[削除]** を選択します。

1. **[指定されたオブジェクト]** に表示されている特定のオブジェクトバージョンが完全に削除されていることを確認するには、**[オブジェクトを削除しますか?]** テキスト ボックスに 「**完全に削除**」 と入力します。Amazon S3 がその特定のオブジェクトバージョンを完全に削除します。

**バージョニングが有効になっていない Amazon S3 バケット内のオブジェクトを完全に削除するには****
**警告**  
Amazon S3 でオブジェクトを完全に削除した場合、削除を元に戻すことはできません。また、バージョニングが有効になっていないバケットの場合、削除は恒久的です。

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. バケットリストで、オブジェクトを削除するバケットの名前を選択します。

1. オブジェクトを選択した後、**[削除]** を選択します。

1. **[指定されたオブジェクト]** に表示されているオブジェクトが完全に削除されていることを確認するには、**[オブジェクトを削除しますか?]** テキスト ボックスに **[完全に削除]** と入力します。

**注記**  
オブジェクトの削除に問題がある場合は、「[バージョニングされたオブジェクトを完全に削除する](troubleshooting-versioning.md#delete-objects-permanent)」を参照してください。

## の使用AWS CLI
<a name="delete-object-cli"></a>



1 件のリクエストで 1 つのオブジェクトを削除するには、`DELETE` API を使用します。詳細については、[DELETE オブジェクト](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html)を参照してください。CLI を使用してオブジェクトを削除する方法の詳細については、[delete−object](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/s3api/delete-object.html)」参照してください。

# REST API の使用
<a name="DeletingAnObjectsUsingREST"></a>

AWS SDK を使用して、1 つのオブジェクトを削除できます。ただし、アプリケーションで必要な場合は、REST リクエストを直接送信できます。詳細については、*Amazon Simple Storage Service API リファレンス*の [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) を参照してください。

## AWS SDK の使用
<a name="DeletingOneObject"></a>

以下の例では、AWS SDK を使用してバケットからオブジェクトを削除する方法を示します。詳細については、*Amazon Simple Storage Service API リファレンス*の [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) を参照してください。

バケットで S3 バージョニングが有効化されている場合は、以下のオプションを使用できます。
+ バージョン ID を指定して、特定のオブジェクトバージョンを削除します。
+ バージョン ID を指定しないでオブジェクトを削除します。この場合、Amazon S3 によってオブジェクトに削除マーカーが追加されます。

S3 バージョニングの詳細については、[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md) を参照してください。

その他の例や、他の言語での例については、「*Amazon S3 API reference*」の「[Use `DeleteObject` with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html)」を参照してください。

------
#### [ Java ]

AWS SDK for Java を使用してオブジェクトを削除する場合、バージョニングされたバケットとバージョニングされていないバケットの両方からオブジェクトを削除できます。
+ *バージョニングされていないバケット:* 削除リクエストで、オブジェクトキーのみを指定し、バージョン ID は指定しません。
+ *バージョニングされたバケット:* オブジェクトのキー名とバージョン ID の両方を指定して、オブジェクトの特定のバージョンを削除します。オブジェクトに他のバージョンがない場合、Amazon S3 はオブジェクトを完全に削除します。それ以外の場合、Amazon S3 は指定されたバージョンのみを削除します。
**注記**  
オブジェクトのバージョン ID は、`ListVersions` リクエストを送信して取得できます。

AWS SDK for Java を使用して単一のオブジェクトを削除する方法の例については、「*Amazon S3 API リファレンス*」の「[Delete an object](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html)」を参照してください。

------
#### [ .NET ]

以下の例では、バージョニング対応および非対応のバケットからオブジェクトを削除する方法を示します。S3 バージョニングの詳細については、[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md) を参照してください。

**Example バージョニング非対応バケットからのオブジェクトの削除**  
次の C\$1 の例では、バージョニング非対応のバケットからオブジェクトを削除します。この例では、オブジェクトにバージョン ID がないため、バージョン ID を指定しないものとします。オブジェクトキーのみ指定します。  
コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class DeleteObjectNonVersionedBucketTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** object key ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            DeleteObjectNonVersionedBucketAsync().Wait();
        }
        private static async Task DeleteObjectNonVersionedBucketAsync()
        {
            try
            {
                var deleteObjectRequest = new DeleteObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };

                Console.WriteLine("Deleting an object");
                await client.DeleteObjectAsync(deleteObjectRequest);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when deleting an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message);
            }
        }
    }
}
```

**Example バージョニング対応バケットからのオブジェクトの削除**  
次の C\$1 の例では、バージョニング対応のバケットからオブジェクトを削除します。オブジェクトのキー名とバージョン ID を指定してオブジェクトの特定のバージョンを削除します。  
このコードでは、以下のタスクを実行します。  

1. 指定したバケットの S3 バージョニングを有効にします (S3 バージョニングが既に有効になっている場合は効果がありません)。

1. サンプルオブジェクトをバケットに追加します。レスポンスとして、Amazon S3 は新しく追加されたオブジェクトのバージョン ID を返します。この例では、このバージョン ID を削除リクエストで使用します。

1. オブジェクトのキー名とバージョン ID の両方を指定してサンプルオブジェクトを削除します。
**注記**  
オブジェクトのバージョン ID は、`ListVersions` リクエストを送信して取得することもできます。  

   ```
   var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName }); 
   ```
コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class DeleteObjectVersion
    {
        private const string bucketName = "*** versioning-enabled bucket name ***";
        private const string keyName = "*** Object Key Name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            CreateAndDeleteObjectVersionAsync().Wait();
        }

        private static async Task CreateAndDeleteObjectVersionAsync()
        {
            try
            {
                // Add a sample object. 
                string versionID = await PutAnObject(keyName);

                // Delete the object by specifying an object key and a version ID.
                DeleteObjectRequest request = new DeleteObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    VersionId = versionID
                };
                Console.WriteLine("Deleting an object");
                await client.DeleteObjectAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when deleting an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message);
            }
        }

        static async Task<string> PutAnObject(string objectKey)
        {
            PutObjectRequest request = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = objectKey,
                ContentBody = "This is the content body!"
            };
            PutObjectResponse response = await client.PutObjectAsync(request);
            return response.VersionId;
        }
    }
}
```

------
#### [ PHP ]

このトピックでは、バージョン 3 の AWS SDK for PHP のクラスを使用して、バージョニング非対応のバケットからオブジェクトを削除する方法を示します。バージョニング対応のバケットから 1 つのオブジェクトを削除する方法については、[REST API の使用](DeletingAnObjectsUsingREST.md) を参照してください。

AWS SDK for Ruby API の詳細については、[AWS SDK for Ruby - バージョン 2](https://docs.aws.amazon.com/sdkforruby/api/index.html) を参照してください。

次の PHP の例では、バケットからオブジェクトを削除します。この例で示す方法では、バージョニング非対応のバケットからオブジェクトを削除するため、削除リクエストではバケット名とオブジェクトキーのみを指定し、バージョン ID は指定しません。

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// 1. Delete the object from the bucket.
try
{
    echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL;

    $result = $s3->deleteObject([
        'Bucket' => $bucket,
        'Key'    => $keyname
    ]);

    if ($result['DeleteMarker'])
    {
        echo $keyname . ' was deleted or does not exist.' . PHP_EOL;
    } else {
        exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL);
    }
}
catch (S3Exception $e) {
    exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL);
}

// 2. Check to see if the object was deleted.
try
{
    echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL;

    $result = $s3->getObject([
        'Bucket' => $bucket,
        'Key'    => $keyname
    ]);

    echo 'Error: ' . $keyname . ' still exists.';
}
catch (S3Exception $e) {
    exit($e->getAwsErrorMessage());
}
```

------
#### [ Javascript ]

```
import { DeleteObjectCommand } from "@aws-sdk/client-s3";
import { s3Client } from "./libs/s3Client.js" // Helper function that creates Amazon S3 service client module.

export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY" };

export const run = async () => {
  try {
    const data = await s3Client.send(new DeleteObjectCommand(bucketParams));
    console.log("Success. Object deleted.", data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------