Amazon Elastic Block Store(EBS)は、使いやすく高性能なブロックストレージサービスです。これは、EC2インスタンスに接続して、データを保存するために使用できる外部ディスクのようなものです。 EBSボリュームが使用されておらず、不要であり、アカウントで引き続き利用可能な場合、AWSから不必要に請求されます。コストを節約するために、このような未使用のEBSボリュームを検索して削除するために使用できるLambda関数を確認します。
- AWSアカウント(アカウントがない場合は作成します)。
- EC2インスタンスの基本的な理解については、ここをクリックしてEC2インスタンスの詳細をご覧ください。
- Lambdaの基本的な理解については、ここをクリックしてLambda関数の詳細を確認してください。
何をしますか?
- AWSにログインします。
- 未使用のEBSボリュームを削除するLambda関数を作成します。
AWSにログイン
- AWSログインページに移動するには、ここをクリックしてください。
上記のリンクをクリックすると、ログイン情報を使用してログインする必要がある次のWebページが表示されます。
AWSに正常にログインすると、すべてのサービスが一覧表示されたメインコンソールが表示されます。
左上の[サービス]をクリックし、[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