Python
 Computer >> コンピューター >  >> プログラミング >> Python

待機機能を使用して、Boto3のS3バケットにキーが存在しないかどうかを検証するにはどうすればよいですか?


問題の説明 − Pythonのboto3ライブラリを使用して、ウェイター機能を使用して、キーがバケットに存在しないかどうかを確認します。たとえば、ウェイターを使用して、キーtest1.zipがBucket_1に存在しないかどうかを確認します。

この問題を解決するためのアプローチ/アルゴリズム

ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。

ステップ2 −bucket_nameとkeyは関数内の2つのパラメーターです。

ステップ3 −boto3ライブラリを使用してAWSセッションを作成します。

ステップ4 −S3用のAWSクライアントを作成します。

ステップ5 −get_waiter関数を使用してobject_not_existsの待機オブジェクトを作成します

ステップ6 −ここで、待機オブジェクトを使用して、キーが特定のバケットに存在しないかどうかを検証します。デフォルトでは、正常な状態に達するまで5秒ごとにチェックインします。 20回のチェックに失敗すると、エラーが返されます。ただし、ユーザーはポーリング時間と最大試行回数を定義できます。

ステップ7 −Noneを返します。

ステップ8 −バケットのチェック中に問題が発生した場合は、一般的な例外を処理します。

次のコードを使用して、ウェイターを使用してキーがバケットに存在するかどうかを確認します-

import boto3
from botocore.exceptions import ClientError

def use_waiters_check_object_not_exists(bucket_name, key_name):
   session = boto3.session.Session()
   s3_client = session.client('s3')
   try:
      waiter = s3_client.get_waiter('object_not_exists')
      waiter.wait(Bucket=bucket_name, Key = key_name,
                  WaiterConfig={
                     'Delay': 2, 'MaxAttempts': 5})
      print('Object does not exist: ' + bucket_name +'/'+key_name)
   except ClientError as e:
      raise Exception( "boto3 client error in use_waiters_check_object_not_exists: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in use_waiters_check_object_not_exists: " + e.__str__())

print(use_waiters_check_object_exists("Bucket_1","testfolder/test1.zip"))
print(use_waiters_check_object_exists("Bucket_1","testfolder/test.zip"))

出力

Object does not exist: Bucket_1/testfolder/test1.zip
None

botocore.exceptions.WaiterError: Waiter ObjectNotExists failed: Max attempts exceeded
"Unexpected error in use_waiters_check_object_not_exists: " + e.__str__())
Exception: Unexpected error in use_waiters_check_object_not_exists:
Waiter ObjectNotExists failed: Max attempts exceed

Bucket_1 / testfolder / test1.zipの場合、出力はprintステートメントとNoneです。応答は何も返さないため、Noneと出力されます。

Bucket_1 / testfolder / test.zipの場合、このオブジェクトが存在するため、出力は例外です。

例外として、最大試行回数を超えたことが読み取れます。


  1. Outlookエラー–指定されたログオンセッションが存在しません

    Microsoft Outlookを使用する場合 Windows 10 PCで、サーバーメッセージを受け取ります。指定されたログオンセッションは存在しません。すでに終了している可能性があります 長期間、この投稿はあなたを助けるかもしれません。このメッセージは、OneDriveアカウントにログインしようとしているときにも表示されます。 指定されたログオンセッションがOutlookに存在しないというエラー Microsoft Outlookにエラーメッセージが表示された場合–指定されたログオンセッションが存在しません。すでに終了している可能性があります。次に、これらの提案を試してください。これは

  2. キーボードにない場合に挿入キー機能を使用するにはどうすればよいですか?

    Insertキーは、コンピューターのほとんどのキーボードによく見られます。これは主に、さまざまなテキストエディタで上書きモードと挿入モードを切り替えるために使用されます。挿入キーのもう1つの用途は、コピーおよび貼り付け機能です。それはまだいくつかのアプリケーションやプログラミングツールで使用されています。キーボードでInsertキーを使用できない、または正常に機能しない場合がまれにあります。この記事では、キーボードに挿入キーがない場合でも挿入キーにアクセスできる方法を紹介します。 Insertキーの主要な機能のいくつかは、以前のように機能しなくなりました。ただし、コピー(Ctrl + In