AWS Lambda および Task Scheduler を使用して、Amazon EC2 で実行されている SQL Server Express エディションのデータベースタスクを自動化する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda および Task Scheduler を使用して、Amazon EC2 で実行されている SQL Server Express エディションのデータベースタスクを自動化する

Subhani Shaik (Amazon Web Services)

概要

このパターンでは、SQL Server Express Edition (SQL Server の無料バージョン) でデータベースタスクをスケジュールし管理する方法について紹介します。ただし、SQL Server Express Edition には、自動化されたデータベースオペレーションを処理する SQL Server エージェントサービスは付いていません。このパターンでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行されている SQL Server Express Edition でデータベースタスクを自動化する代わりに、Task Scheduler と Lambda を使用する方法について説明します。

Task Scheduler は、ルーチンタスクの自動実行を容易にする組み込みの Windows システムユーティリティです。自動化されたオペレーションをスケジュールし管理するための仕組みを提供して、反復的なプロセスに手動で介入する必要性をなくします。AWS Lambda は、イベントに応じてコードを自動で実行するサーバーレスコンピューティングサービスで、基盤となるインフラストラクチャの管理は不要です。

前提条件と制限

前提条件

  • アクティブな AWS アカウント

  • Amazon Virtual Private Cloud (Amazon VPC) を使って作成された仮想プライベートクラウド (VPC)

  • Windows Server の Amazon EC2 インスタンス

  • Windows Server の Amazon EC2 インスタンスにアタッチされた Amazon Elastic Block Store (Amazon EBS) ボリューム

  • SQL Server Express Edition バイナリ

制限事項

製品バージョン

  • SQL Server Express Edition を使用できる SQL Server 2016 以降

アーキテクチャ

次の図は、SQL Server Express Edition をインストールした状態で実行されている Amazon EC2 インスタンスを示したものです。インスタンスには、リモートデスクトッププロトコル (RDP) クライアントまたは からアクセスできます AWS Systems Manager Session Manager。 AWS Key Management Service (AWS KMS) は Amazon EBS ボリュームのデータ暗号化を処理して、data-at-restセキュリティを確保します。インフラストラクチャには、Lambda 関数の実行のためのアクセスコントロールを提供し、アクセス許可を管理する AWS Identity and Access Management (IAM) も含まれています。Lambda 関数は Amazon Simple Storage Service (Amazon S3) に保管されています。

プライベートサブネットにインストールされた SQL Server Express Edition を使って実行されている Amazon EC2 インスタンス。

ツール

AWS のサービス

  • Amazon Elastic Block Store (Amazon EBS) は、Amazon EC2 インスタンスで使用するためのブロックレベルのストレージボリュームを提供します。

  • Amazon Elastic Compute Cloud (Amazon EC2) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。

  • AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。

  • AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号化キーの作成と制御に役立ちます。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • Amazon Simple Storage Service (Amazon S3) は、任意の量のデータを保存、保護、取得する上で役立つクラウドベースのオブジェクトストレージサービスです。

  • AWS Systems Manager Session Manager はフルマネージド AWS Systems Manager 型のツールです。Session Manager を使用することで、Amazon EC2 インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) を管理できます。

  • Amazon Virtual Private Cloud (Amazon VPC) は、定義した仮想ネットワークに AWS リソースを起動するのに役立ちます。この仮想ネットワークは、ユーザー自身のデータセンターで運用されていた従来のネットワークと似ていますが、 AWSのスケーラブルなインフラストラクチャを使用できるという利点があります。

その他のツール

  • Microsoft SQL Server Management Studio (SSMS) は、SQL Server コンポーネントへのアクセス、設定、管理など、SQL Server を管理するためのツールです。

  • Python」は汎用のコンピュータプログラミング言語です。こちらを使用すると、AWS クラウド でのアプリケーションの構築、タスクの自動化、サービスの開発を行うことができます。

  • Task Scheduler は、コンピュータでルーチンタスクを自動的にスケジュールするできる Microsoft のツールです。

ベストプラクティス

エピック

タスク説明必要なスキル

Amazon EC2 インスタンスをデプロイします。

Amazon EC2 インスタンスを作成するには、Amazon EC2 コンソールを開き (https://console.aws.amazon.com/ec2/)、Windows Server で使用できるインスタンスのリストから Amazon マシンイメージ (AMI) を選択します。

詳細については、 AWS ドキュメントのAmazon EC2 インスタンスの起動」を参照してください。

DBA、AWS DevOps

SQL Server Express Edition をインストールする

SQL Server Express Edition をインストールするには、次の手順を実行します。

  1. Amazon EC2 インスタンスに接続する、次のいずれかを選択します。

  2. 必要な SQL Server Express Edition をダウンロードするには、Microsoft のウェブサイトの「Microsoft SQL Server のダウンロード」を参照してください。

  3. SQL Server Express Edition をインストールするには、Microsoft のウェブサイトの「Plan a SQL Server installation」の手順に従います。

DBA、AWS DevOps
タスク説明必要なスキル

ルーチンタスクを特定する。

自動化したいルーチンタスクを特定します。例えば、以下のようなタスクは自動化できる可能性があります。

  • データベースのバックアップ (全体、差分、トランザクションログ)

  • インデックスのメンテナンスと再編成

  • 統計の更新

  • アプリケーション特有の操作

  • データのクリーンアップまたはアーカイブ

DBA

SQL スクリプトを作成する。

SQL スクリプトを作成するには、以下を実行します。

  1. メンテナンスタスクごとに SQL クエリを作成します。以下は、特定のデータベースバックアップを実行する T-SQL クエリの一例です。Backup Database <Database_Name> To Disk='C:\Backups\Database_Name.bak'

  2. スクリプトファイルを <File Name>.sql として保存します。次に、スクリプトを Amazon EC2 インスタンスまたはネットワークファイル共有上の、サーバーのローカルドライブにあるアクセス可能な場所に保存します。

DBA

アクセス許可を設定する。

アクセス許可を設定するには、以下を実行します。

  1. 適切なファイルシステムのアクセス許可を設定します。手順については、Microsoft ウェブサイトの「Configure file system permissions for Database Engine access」を参照してください。

  2. SQL Server サービスアカウントに必要なアクセス権があることを確認します。手順については、Microsoft ウェブサイトの「Configure Windows service accounts and permissions」を参照してください。

  3. リモート共有のネットワーク接続を確認します。詳細については、 AWS ドキュメントの「ファイル共有を使用したデータへのアクセス」を参照してください。

DBA
タスク説明必要なスキル

バッチファイルを作成する。

  • バッチファイルを作成するには、テキストエディタを使用して次のコマンドを入力します。パラメータ usernamepassword をユーザー自身の値に置き換えます。その後、ファイルを <Name>.bat として保存します。

sqlcmd -S servername -U username -P password -i <T-SQL query path.sql>
  • SQL タスク用のバッチファイルを作成するには、テキストエディタを使用して次のコマンドを入力します。パラメータ ServerNameDatabaseNameusernamepassword をユーザー自身の値に置き換えます。その後、ファイルを <Name>.bat として保存します。

@echo off sqlcmd -S [ServerName] -d [DatabaseName] -U username -P password -i "PathToSQLScript\Script.sql" -o "PathToOutput\Output.txt"
AWS DevOps, DBA

Task Scheduler でタスクを作成する。

Task Scheduler でタスクを作成するには、次のステップに従います。

  1. Windows 検索で taskschd.msc と入力し、Task Scheduler を開きます。

  2. [アクション] メニューを選択し、[基本タスクの作成] を選択します。

  3. [名前] でタスクの名前を指定し、[次へ] を選択します。

  4. [トリガー] でタスクを開始する時間を選択し、[次へ] を選択します。

  5. タスクの [開始] および [反復] に関する情報を入力し、[次へ] を選択します。

  6. [アクション] のセクションで、[プログラムの開始] を選択し、[次へ] を選択します。

  7. [プログラム/スクリプト] で、前のタスクで作成したバッチファイルのパスを指定し、[次へ] を選択します。

  8. [Finish] を選択してください。

タスクを手動で実行するには、新たに作成したタスクを右クリックし、[実行] を選択します。

DBA

タスクのステータスを表示する。

Task Scheduler でタスクのステータスを表示するには、次のステップに従います。

  1. Task Scheduler から [Task Scheduler ライブラリ] に進みます。ここにすべてのタスクが表示されています。

  2. 前に作成したタスクのステータスを確認するには、タスクを選択し、[履歴] タブに移動します。

DBA、AWS DevOps
タスク説明必要なスキル

ソリューションを実装する。

このパターンのソリューションを実装するには、次のステップに従います。

  1. Lambda 関数を作成する。手順については、 AWS ドキュメントの「最初の Lambda 関数を作成する」を参照してください。

  2. Lambda 関数をスケジュールします。手順については、 AWS ドキュメントの「スケジュールに従って Lambda 関数を呼び出す」を参照してください。

  3. T-SQL クエリを実行します。詳細については、 AWS ドキュメントの「チュートリアル: Lambda 関数を使用して Amazon RDS データベースにアクセスする」を参照してください。このチュートリアルでは、Lambda 関数から Amazon RDS データベースに接続して SQL クエリを実行する方法について解説しています。

AWS DevOps、DevOps エンジニア

トラブルシューティング

問題ソリューション

Lambda の問題

の使用時に発生する可能性のあるエラーや問題のヘルプについては AWS Lambda、 AWS ドキュメントの「Lambda での問題のトラブルシューティング」を参照してください。

関連リソース