日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

AWS Lambda関数を使用したFSx for ONTAP の監視と自動サイズ変更

寄稿者

著者: Dhruv Tyagi, Niyaz Mohamed

概要:AWS Lambda機能を使用したFSx for ONTAP の監視と自動サイズ変更

FSx for ONTAP は、AWSで利用できるファーストパーティのエンタープライズクラスのクラウドストレージサービスです。広く普及しているNetApp ONTAP ファイルシステムを基盤に、信頼性、拡張性、ハイパフォーマンス、機能豊富なファイルストレージを提供します。

FSx for ONTAP は、シームレスな導入と管理のエクスペリエンスを提供します。ストレージの専門知識は必要ありません。監視を簡易化するために、AWSラムダ機能(しきい値に基づいて合計ストレージ容量、ボリュームサイズ、LUNサイズのサイズを自動変更)を使用できます。このドキュメントでは、FSx for ONTAP を定期的に監視し、ユーザ指定のしきい値を超えたときに通知とサイズ変更を行い、サイズ変更処理を管理者に通知する自動セットアップを作成するためのステップバイステップガイドを提供します。

の機能

解決策 には次の機能があります。

  • 監視機能:

    • FSx for ONTAP の全体的なストレージ容量の使用状況

    • 各ボリュームの使用量(シンプロビジョニング/シックプロビジョニング)

    • 各LUNの使用量(シンプロビジョニング/シックプロビジョニング)

  • ユーザ定義のしきい値を超えた場合に、上記のいずれかのサイズを変更できます

  • 使用状況の警告やサイズ変更の通知をEメールで受信するアラートメカニズム

  • ユーザ定義のしきい値よりも古いSnapshotを削除できます

  • 関連付けられているFlexCloneボリュームとSnapshotのリストを取得する機能

  • 定期的にチェックを監視する機能

  • インターネットアクセスの有無にかかわらず、解決策 を使用できます

  • 手動またはAWS CloudFormationテンプレートを使用してデプロイする機能

前提条件

作業を開始する前に、次の前提条件を満たしていることを確認してください。

  • FSx for ONTAP が導入されました

  • FSx for ONTAP への接続を備えたプライベートサブネット

  • FSx for ONTAP には「fsxadmin」パスワードが設定されています

アーキテクチャの概要
  • AWS Lambda関数は、ストレージ容量、ボリューム、LUNのサイズを取得および更新するために、FSx for ONTAP へのAPI呼び出しを行います。

  • セキュリティレイヤを追加するために、「fsxadmin」パスワードがAWS SSMパラメータストアにセキュアな文字列として保存されます。

  • AWS SES(Simple Email Service)は、サイズ変更イベントが発生したときにエンドユーザに通知するために使用します。

  • インターネットアクセスがないVPCに解決策 を導入する場合、AWS SSM、FSx、およびSESのVPCエンドポイントは、LambdaがAWS内部ネットワーク経由でこれらのサービスにアクセスできるように設定されます。

この図は、この解決策 で使用されているアーキテクチャの概要を示しています。

解決策 の導入

導入の自動化

Details

一連の手順に従って、この解決策 の自動導入を完了します。

ステップ1: GitHubリポジトリのクローンを作成します

ローカルシステム上のGitHubリポジトリのクローンを作成します。

git clone https://github.com/NetApp-Automation/fsxn-monitoring-auto-resizing.git
ステップ2:AWS S3バケットをセットアップする
  1. [AWS Console]>* S3 に移動し、[Create bucket]*をクリックします。デフォルトの設定でバケットを作成します。

  2. バケット内で、* Upload > Add files をクリックし、システム上のクローニングされたGitHubリポジトリから Paramiko.zip Requests.zip *を選択します。

    この図は、S3ウィンドウにzipファイルがアップロードされている状態を示しています

手順3:AWS SES SMTPのセットアップ(インターネットアクセスがない場合は必須)

インターネットアクセスなしで解決策 を導入する場合は、次の手順を実行します(注:VPCエンドポイントのセットアップに関連するコストが発生します)。

  1. AWSコンソール>* AWS Simple Email Service(SES)> SMTP Settingsに移動し、 Create SMTP credentials *をクリックします

  2. IAMユーザ名を入力するか、デフォルト値のままにして、[Create]をクリックします。あとで使用するために、ユーザ名とパスワードを保存しておきます。

    注記 SES SMTPのセットアップがすでに設定されている場合は、この手順をスキップします。

    "この図は、AWS SESの[Create SMTP Credentialsウィンドウを示しています"]

ステップ4:AWS CloudFormationの導入
  1. AWS Console >* CloudFormation *> Create stack > With New Resources(Standard)に移動します。

    Prepare template: Template is ready
    Specify template: Upload a template file
    Choose file: Browse to the cloned GitHub repo and select fsxn-monitoring-solution.yaml

    "この画像は、AWS CloudFormationの[Create Stackウィンドウを示しています"]

    [次へ]をクリックします

  2. スタックの詳細を入力します。[Next]をクリックし、[I acknowledge that AWS CloudFormation might create IAM resources]のチェックボックスをオンにして、[Submit]をクリックします。

    注記 「VPCにインターネットアクセスがありますか?」の場合 はFalseに設定されています。「AWS SESのSMTPユーザ名」と「AWS SESのSMTPパスワード」は必須です。それ以外の場合は、空のままにすることができます。

    この画像は、AWS CloudFormation Stack Detailsウィンドウを示しています

    この画像は、AWS CloudFormation Stack Detailsウィンドウを示しています

    この画像は、AWS CloudFormation Stack Detailsウィンドウを示しています

    この画像は、AWS CloudFormation Stack Detailsウィンドウを示しています

  3. CloudFormationのデプロイが開始されると、「送信者メールID」に記載されているメールIDに、AWS SESでのメールアドレスの使用を承認するように求めるメールが送信されます。リンクをクリックしてメールアドレスを確認します。

  4. CloudFormationスタックのデプロイが完了すると、警告/通知がある場合は、通知の詳細が記載された電子メールが受信者の電子メールIDに送信されます。

    この画像は、通知が利用可能になったときに受信される電子メール通知を示しています

    この画像は、通知が利用可能になったときに受信される電子メール通知を示しています

手動での導入

Details

一連の手順に従って、この解決策 の手動導入を完了します。

ステップ1: GitHubリポジトリのクローンを作成します

ローカルシステム上のGitHubリポジトリのクローンを作成します。

git clone https://github.com/NetApp-Automation/fsxn-monitoring-auto-resizing.git
手順2:AWS SES SMTPのセットアップ(インターネットアクセスがない場合は必須)

インターネットアクセスなしで解決策 を導入する場合は、次の手順を実行します(注:VPCエンドポイントのセットアップに関連するコストが発生します)。

  1. AWSコンソール>* AWS Simple Email Service(SES)> SMTP Settingsに移動し、 Create SMTP credentials *をクリックします

  2. IAMユーザ名を入力するか、デフォルト値のままにして、[Create]をクリックします。あとで使用するために、ユーザ名とパスワードを保存しておきます。

    "この図は、AWS SESの[Create SMTP Credentialsウィンドウを示しています"]

手順3:fsxadminパスワードのSSMパラメータを作成します

[AWS Console]>*に移動し、[Create Parameter]*をクリックします。

Name: <Any name/path for storing fsxadmin password>
Tier: Standard
Type: SecureString
KMS key source: My current account
  KMS Key ID: <Use the default one selected>
Value: <Enter the password for "fsxadmin" user configured on FSx for ONTAP>

[パラメーターを作成(Create Parameter)]*をクリックする。

この図は、AWSコンソールのSSMパラメータ作成ウィンドウを示しています。

インターネットにアクセスせずに解決策 を展開する場合は、SMTPユーザ名とSMTPパスワードを保存する手順と同じ手順を実行します。それ以外の場合は、これら2つのパラメータの追加をスキップします

ステップ4:電子メールサービスをセットアップします

[AWS Console]>*[Create Identity]*をクリックします。

Identity type: Email address
Email address: <Enter an email address to be used for sending resizing notifications>

[Create identity]*をクリックします

「送信者EメールID」に記載されているEメールIDには、所有者にAWS SESでのEメールアドレスの使用許可を求めるEメールが送信されます。リンクをクリックしてメールアドレスを確認します。

この図は、AWSコンソールのSES ID作成ウィンドウを示しています。

手順5:VPCエンドポイントをセットアップする(インターネットアクセスがない場合は必須)
注記 インターネットアクセスなしで展開されている場合にのみ必要です。VPCエンドポイントが原因で追加コストが発生します。
  1. [AWS Console]>*>[Endpoints]に移動し、[Create Endpoint]*をクリックして、次の詳細を入力します。

    Name: <Any name for the vpc endpoint>
    Service category: AWS Services
    Services: com.amazonaws.<region>.fsx
    vpc: <select the vpc where lambda will be deployed>
    subnets: <select the subnets where lambda will be deployed>
    Security groups: <select the security group>
    Policy: <Either choose Full access or set your own custom policy>

    [Create endpoint]をクリックします。

    この図は、VPCエンドポイントの作成ウィンドウを示しています

    この図は、VPCエンドポイントの作成ウィンドウを示しています

  2. SESおよびSSM VPCエンドポイントの作成についても、同じ手順を実行します。すべてのパラメータは、* com.amazonaws.smtp <region> および com.amazonaws.smtp *に対応するサービスを除き、上記と同じです<region> 。

ステップ6: AWS Lambda関数を作成してセットアップします
  1. [AWS Console]>*に移動し、FSx for ONTAP と同じリージョンの[Create Function]*をクリックします

  2. デフォルトの*Author from scratch*を使用して、次のフィールドを更新します。

    Function name: <Any name of your choice>
    Runtime: Python 3.9
    Architecture: x86_64
    Permissions: Select "Create a new role with basic Lambda permissions"
    Advanced Settings:
      Enable VPC: Checked
        VPC: <Choose either the same VPC as FSx for ONTAP or a VPC that can access both FSx for ONTAP and the internet via a private subnet>
        Subnets: <Choose 2 private subnets which have NAT gateway attached pointing to public subnets with internet gateway and subnets that have internet access>
        Security Group: <Choose a Security Group>

    [機能の作成]*をクリックします。

    この画像は、AWSコンソールのLambda作成ウィンドウを示しています。

    この画像は、AWSコンソールのLambda作成ウィンドウを示しています。

  3. 新しく作成したLambda関数の* Layers セクションまでスクロールし、 Add a layer *をクリックします。

    この画像は、AWS Lambda機能コンソールのレイヤー追加ボタンを示しています。

  4. の下にある[新しいレイヤーを作成する]*をクリックします

  5. 2つのレイヤー(リクエスト用に1つ、Paramiko用に1つ)を作成し、* Requests.zip ファイルと Paramiko.zip ファイルをアップロードします。互換性のあるランタイムとして Python 3.9 を選択し、 Create *をクリックします。

    "この画像は、AWSコンソールの[Create New Layerウィンドウを示しています。"]

  6. AWS Lambda * Add Layer > Custom Layers *に戻り、paramikoとrequestsレイヤーを次 々 に追加します。

    この画像は、AWS Lambda関数コンソールのレイヤーの追加ウィンドウを示しています。

    この画像は、AWS Lambda関数コンソールに追加されたレイヤーを示しています。

  7. Lambda関数の* Configuration タブに移動し、 General Configuration Edit をクリックします。[タイムアウト]を[ 5分]に変更し、[保存]をクリックします。

  8. Lambda関数の* Permissions タブに移動し、割り当てられたロールをクリックします。ロールの権限タブで、*権限の追加>*インラインポリシーの作成*をクリックします。

    1. JSONタブをクリックし、GitHubリポジトリからpolicy.jsonファイルの内容を貼り付けます。

    2. ${aws::AccountId}はすべて自分のアカウントIDに置き換えて、*[Review Policy]*をクリックしてください

    3. ポリシーの名前を指定し、*[ポリシーの作成]*をクリックします

  9. AWS Lambda Function Code Sourceセクションの* fsxn_monitoring_resizing_lambda.py の内容をgitリポジトリから lambda_function.py *にコピーします。

  10. lambda_function.pyと同じレベルに新しいファイルを作成し、vars.py*という名前を付けて、vars.pyの内容をgitリポジトリからlambda関数vars.pyファイルにコピーします。vars.pyの変数値を更新します。以下の変数定義を参照し、 Deploy *をクリックします。

    * 名前 *

    * タイプ *

    * 概要 *

    * fsxMgmtIp *

    文字列

    (必須)AWSのFSx for ONTAP コンソールから「管理エンドポイント- IPアドレス」を入力します。

    * fsxId *

    文字列

    (必須)AWSのFSx for ONTAP コンソールから「ファイルシステムID」を入力します。

    ユーザー名

    文字列

    (必須)AWSのFSx for ONTAP コンソールからFSx for ONTAP の「ONTAP administrator username」を入力します。

    * resize_threshold *

    整数

    (必須)しきい値のパーセンテージを0~100の範囲で入力します。このしきい値は、ストレージ容量、ボリューム、LUNの使用率を測定するために使用され、使用率がこのしきい値を超えるとサイズ変更アクティビティが発生します。

    * sender_email *

    文字列

    (必須)SESに登録されている電子メールIDを入力します。このIDは、監視とサイズ変更に関する通知アラートを送信するためにlambda関数で使用されます。

    * recipient_email *

    文字列

    (必須)アラート通知を受信するEメールIDを入力します。

    * FSX_PASSWORD_SSM_PARAMETER *

    文字列

    (必須)「fsxadmin」パスワードの保存にAWS Parameter Storeで使用するパス名を入力します。

    * WARN_NOTIFICATION *

    ブール値

    (必須)ストレージ容量/ボリューム/ LUNの使用率が75%を超え、しきい値を下回ったときに通知を受け取るには、この変数をTrueに設定します。

    * enable_snapshot_deletion *

    ブール値

    (必須)「snapshot_age_threshold_in_days」で指定した値よりも古いSnapshotに対してボリュームレベルのSnapshotの削除を有効にするには、この変数をTrueに設定します。

    * snapshot_age_threshold_in_days *

    整数

    (必須)ボリュームレベルのSnapshotを保持する日数を入力します。指定した値よりも古いSnapshotコピーは削除され、同じSnapshotコピーがEメールで通知されます。

    * internet_access *

    ブール値

    (必須)このラムダが展開されているサブネットからインターネットアクセスが可能な場合は、この変数をTrueに設定します。それ以外の場合は、Falseに設定します。

    * smtp_region *

    文字列

    (オプション)「internet_access」変数がFalseに設定されている場合は、ラムダがデプロイされている領域を入力します。例:us-east-1(この形式)

    * SMTP_USERNAME_SSM_PARAMETER *

    文字列

    (オプション)「internet_access」変数がFalseに設定されている場合は、SMTPユーザ名を格納するためにAWS Parameter Storeで使用するパス名を入力します。

    * SMTP_PASSWORD_SSM_PARAMETER *

    文字列

    (オプション)「internet_access」変数がFalseに設定されている場合は、SMTPパスワードの保存にAWS Parameter Storeで使用するパス名を入力します。

    この画像は、AWS Lambda関数コンソールのラムダコードを示しています。

  11. [Test]*をクリックし、空のテストイベントを作成してテストを実行し、スクリプトが正しく実行されているかどうかを確認します。

  12. テストに成功したら、* Configuration > Triggers > Add Trigger *に移動します。

    Select a Source: EventBridge
    Rule: Create a new rule
    Rule name: <Enter any name>
    Rule type: Schedule expression
    Schedule expression: <Use "rate(1 day)" if you want the function to run daily or add your own cron expression>

    [Add]をクリックします。

    この画像は、AWS Lambda関数コンソールのイベントブリッジ作成ウィンドウを示しています。

まとめ

提供された解決策 を使用すると、FSx for ONTAP ストレージを定期的に監視し、ユーザ指定のしきい値に基づいて容量を変更し、アラートメカニズムを提供する監視解決策 を簡単に設定できます。これにより、FSx for ONTAP を使用して監視するプロセスがシームレスになり、管理者はビジネスクリティカルな作業に集中できるようになり、必要に応じてストレージが自動的に拡張されます。