130

Amazon s3 バケットから必要なファイルを削除するコードを Python で記述する必要があります。Amazon s3 バケットに接続し、ファイルを保存することもできますが、ファイルを削除するにはどうすればよいですか?

4

19 に答える 19

113

Python boto3 SDKを使用して(AWS の認証情報が設定されていると仮定して)、次のコマンドはバケット内の指定されたオブジェクトを削除します。

import boto3

client = boto3.client('s3')
client.delete_object(Bucket='mybucketname', Key='myfile.whatever')
于 2016-08-10T20:43:52.207 に答える
94

botoを使用してそれを行うもう1つの方法を見つけました:

from boto.s3.connection import S3Connection, Bucket, Key

conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY)

b = Bucket(conn, S3_BUCKET_NAME)

k = Key(b)

k.key = 'images/my-images/'+filename

b.delete_key(k)
于 2010-07-16T12:49:11.243 に答える
6

Boto3 は時々変更される可能性があるため、更新されたメソッドを探してみてください。私はmy_bucket.delete_objects()を使用しました:

import boto3
from boto3.session import Session

session = Session(aws_access_key_id='your_key_id',
                  aws_secret_access_key='your_secret_key')

# s3_client = session.client('s3')
s3_resource = session.resource('s3')
my_bucket = s3_resource.Bucket("your_bucket_name")

response = my_bucket.delete_objects(
    Delete={
        'Objects': [
            {
                'Key': "your_file_name_key"   # the_name of_your_file
            }
        ]
    }
)

于 2019-05-13T14:05:22.303 に答える
5

この簡単な方法がないことに驚いています : key.delete():

from boto.s3.connection import S3Connection, Bucket, Key

conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY)
bucket = Bucket(conn, S3_BUCKET_NAME)
k = Key(bucket = bucket, name=path_to_file)
k.delete()
于 2016-05-02T13:00:01.323 に答える
3

どのインターフェースを介して?REST インターフェイスを使用して、 delete を送信するだけです。

DELETE /ObjectName HTTP/1.1
Host: BucketName.s3.amazonaws.com
Date: date
Content-Length: length
Authorization: signatureValue

SOAP インターフェイス経由:

<DeleteObject xmlns="http://doc.s3.amazonaws.com/2006-03-01">
  <Bucket>quotes</Bucket>
  <Key>Nelson</Key>
  <AWSAccessKeyId> 1D9FVRAYCP1VJEXAMPLE=</AWSAccessKeyId>
  <Timestamp>2006-03-01T12:00:00.183Z</Timestamp>
  <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
</DeleteObject>

boto のようなPython ライブラリを使用している場合は、 のような「削除」機能を公開する必要がありdelete_key()ます。

于 2010-06-29T12:58:33.787 に答える
1

今のところ、Linux ユーティリティs3cmdを使用して問題を解決しました。私はPythonで次のように使用しました:

delFile = 's3cmd -c /home/project/.s3cfg del s3://images/anon-images/small/' + filename
os.system(delFile)
于 2010-06-29T16:13:34.123 に答える
1

2021 年の更新 - これには苦労しましたが、実行するのと同じくらい簡単でした。

  def delete_object(self,request):
     s3 = boto3.resource('s3',
         aws_access_key_id=AWS_UPLOAD_ACCESS_KEY_ID,
         aws_secret_access_key= AWS_UPLOAD_SECRET_KEY,
     )
     s3.Object('your-bucket', 'your-key}').delete()

boto3 リソースに認証情報を必ず追加してください

于 2021-08-22T19:21:08.627 に答える
1

独自のローカル ホスト コンソールを使用してファイルを削除しようとしている場合は、システムでアクセス ID と秘密鍵が既に割り当てられていると仮定して、この python スクリプトを実行してみてください。

import boto3

#my custom sesssion
aws_m=boto3.session.Session(profile_name="your-profile-name-on-local-host")
client=aws_m.client('s3')

#list bucket objects before deleting 
response = client.list_objects(
    Bucket='your-bucket-name'
)
for x in response.get("Contents", None):
    print(x.get("Key",None));

#delete bucket objects
response = client.delete_object(
    Bucket='your-bucket-name',
    Key='mydocs.txt'
)

#list bucket objects after deleting
response = client.list_objects(
    Bucket='your-bucket-name'
)
for x in response.get("Contents", None):
    print(x.get("Key",None));
于 2020-01-23T08:24:20.797 に答える