GNU/Linux >> Linux の 問題 >  >> Linux

Lambda関数を使用してAWSで未使用のEBS(Elastic Block Storage)ボリュームを削除する

Amazon Elastic Block Store(EBS)は、使いやすく高性能なブロックストレージサービスです。これは、EC2インスタンスに接続して、データを保存するために使用できる外部ディスクのようなものです。 EBSボリュームが使用されておらず、不要であり、アカウントで引き続き利用可能な場合、AWSから不必要に請求されます。コストを節約するために、このような未使用のEBSボリュームを検索して削除するために使用できるLambda関数を確認します。

前提条件
  1. AWSアカウント(アカウントがない場合は作成します)。
  2. EC2インスタンスの基本的な理解については、ここをクリックしてEC2インスタンスの詳細をご覧ください。
  3. Lambdaの基本的な理解については、ここをクリックしてLambda関数の詳細を確認してください。

何をしますか?

  1. AWSにログインします。
  2. 未使用のEBSボリュームを削除するLambda関数を作成します。

AWSにログイン

  1. AWSログインページに移動するには、ここをクリックしてください。

上記のリンクをクリックすると、ログイン情報を使用してログインする必要がある次のWebページが表示されます。

AWSに正常にログインすると、すべてのサービスが一覧表示されたメインコンソールが表示されます。

未使用のEBSボリュームを削除するLambda関数を作成します。

左上の[サービス]をクリックし、[EC2]を検索して、EC2のメインダッシュボードに移動します。

EC2のメインダッシュボードで、下にスクロールして、[Elastic Block Storage ]の下の[Volumes]をクリックします。 "。

ここには、選択したリージョンにあるすべてのEBSボリュームが表示されます。 「available」状態のボリュームは未使用のボリュームであり、どのEC2インスタンスにも接続されていません。これらのボリュームには、重要なデータがない場合やデータがない場合は、安全に削除できます。

ボリュームはこのコンソールから削除できますが、数百から数千の未使用がある場合 ボリュームについては、自動化を実施することをお勧めします。

未使用のボリュームを削除するプロセスを自動化するために、「ラムダ関数」を使用できます。画面の左上にある[サービス]をクリックして、[ラムダ]を検索します。

Lambdaのメインダッシュボードで、[関数の作成]をクリックします。

「AuthorfromScratch」を使用して関数を作成し、作成する関数に名前を付けて、ランタイムを選択します。ここでは、未使用のEBSボリュームを削除するプロセスを自動化するPythonランタイムを備えたLambda関数を見ていきます。 [関数の作成]をクリックして先に進みます。

次の画面にサンプルの機能コードが表示されます。

次のコードを使用して、未使用のEBSボリュームを削除します。既存の機能コードを削除し、次のコードを機能コードボックスに貼り付けます。特定の未使用のEBSボリュームを削除しない場合は、「名前:DND」のタグを付けます。次のコードは、そのようなボリュームを削除しません。

 import boto3 
ec2 =boto3.resource('ec2'、region_name ='eu-west-3')
def lambda_handler(event、context):
for volinec2。 volume.all():
if vol.state =='available':
vol.tagsがNoneの場合:
vid =vol.id
.2 ec vol.id)
v.delete()
print('Deleted' + vid)
続行
キーの場合
タグ内のタグ'] =='名前':
value =tag ['Value']
if value!=' DND'and vol.state ==' available':
vid =
v =ec2.Volume(vol.id)
v.delete()
vid +'

または、削除する必要のある未使用のEBSボリュームのリストを指定できます。

 import boto3 
ec2 =boto3.resource('ec2'、region_name ='eu-west-3')
volume_ids =['vol-029af2107c0a0807d'、'vol-029af2107c0a08123']
def lambda_handler(event、context):
volume_idsのvolidの場合:
vid =volid
v =ec2.Volume(vid)
v.delete()
print('Deleted' + vid)

[保存]ボタンをクリックして関数を保存します。

コードを実行/テストする前に、イベントを作成する必要があります。簡単なイベントを作成します。イベントを作成するには、[テストイベントの選択]->[テストイベントの構成]をクリックします。

次の画面で、イベントに名前を付け、イベントテンプレートをそのままにして、[作成]をクリックします。

コードとイベントの準備ができたら、関数をテストまたは実行する前に最後に残しておくのは、必要なポリシーをLambda関数に割り当てることです。必要なポリシーを割り当てるには、下にスクロールして[delete-unused-ebs-volumes-role-ruemgr4xロールを表示する]をクリックし、新しいウィンドウで開きます。

[ポリシーの添付]をクリックして、必要なポリシーをこのIAMロールに添付します。

EC2を検索し、「AmazonEC2FullAccess」ポリシーを添付します。このポリシーにより、EC2インスタンスのLambda関数へのフルアクセスが許可されます。

これで、関数を実行する準備が整いました。 「テスト」をクリックします。

関数を実行すると、実行結果にログが表示されます。

EC2インスタンスのメインダッシュボードに移動すると、未使用のEBSボリュームが削除されたかどうかを確認できます。

ここでは、未使用のEBSボリュームがコンソールで使用できなくなっているため、Lambda関数によって正常に削除されています。

この記事では、未使用のEBSボリュームを削除するLambda関数を作成する方法を説明しました。これにより、AWSアカウントの追加コストを節約できます。


Linux
  1. Terraformを使用してAWSでIAMロールを作成する方法

  2. Linuxサーバーでのブロックストレージの構成

  3. WindowsServerでのブロックストレージの構成

  1. Terraformを使用してAWSでEC2インスタンスを作成します

  2. sed を使用してテキスト ブロックを削除する

  3. ウォッチを使用してBashで関数を繰り返し実行しますか?

  1. Terraformを使用してAWSEC2インスタンスを起動する方法

  2. Bash初心者シリーズ#9:Bashでの関数の使用

  3. sed を使用して空行を削除する