サーバー専門のフリーランスエンジニアです。クラウドサービスを利用してWebサイト、ITシステムのサーバー構成設計とサーバー構築を行います。Auroraクラスターの停止、開始機能がリリースされました。データベースクラスタの停止、開始へのサポートを開始https://aws.amazon.com/jp/about-aws/whats-new/2018/09/amazon-aurora-stop-and-start/※この停止機能は、クラスターの機能ですので、Auroraクラスターに複数のリードレプリカが存在する場合、マスターとリードレプリカがすべて停止します。2018年12月時点では、マスターや特定のリードレプリカのみを停止することはできないようです。それまでは、Aurora以外のDBエンジンのRDSについては停止が可能でしたが、このリリースにより、Auroraも停止可能となりました。開発環境などでは、使用しない間は、一時的に停止することでコスト削減ができます。ここでは、Lambda関数を使用して、自動的に、平日営業時間帯のみ起動し、夜間・休日は停止するよう設定する方法を記載します。Lambda関数を使用したAuroraクラスターの自動停止方法については、すでに他の方が公開されています。古くて、そのままではAuroraクラスターの停止・起動が実行できないため、最新のboto3パッケージとLambda関数を含めたうえでzipファイルを生成し、Lambdaにデプロイする必要がありました。その方法で、やりたいことは実現できるのですが、AWSマネジメントコンソールでソースコードを確認、編集できず、デプロイ→テスト→直し→再デプロイ→テストといったフローで少し使い勝手がよくありません。(ふだんからAWSマネジメントコンソールをあまり使わず、AWSCLIで操作している方ならそれでもよいのでしょうが。Layersという機能がリリースされました。ブログhttps://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-use-any-programming-language-and-share-common-components/この機能により、今回のように最新のSDKや、複数のLambda関数で使用する共有ロジックを「レイヤー」として外出しして配置し、本来の目的のみLambda関数で実装することができるようになりました。今回は、最新のboto3パッケージをレイヤーとして設定し、Auroraクラスターを自動停止・起動するロジックのみをLambda関数として作成することにします。するAuroraクラスターは、DBクラスター名を指定するのではなく、タグで判断するようにしてみました。boto3パッケージをレイヤーとして設置する方法は、次の記事を参考にしました。Auroraクラスターを停止・起動する。停止、起動にする関数はそれぞれ別に作成する(変数で工夫してひとつにまとめてもよいでしょう)。Auroraクラスターは、タグのキーが「AUTO_STARTSTOP」、値が「true」のものとする。したい「DBクラスター」に対して、次のタグを設定します。trueDBインスタンスのタグではなく、DBクラスターのタグに設定するのがポイントです。最新のboto3パッケージを作成し、レイヤーとして設定します。適当なPCもしくはサーバー環境のディレクトリに、最新のboto3をインストールします。※僕は手持ちのLinuxサーバーで実行しました。urllib3-1.24.1--Lambdaのレイヤーとしてアップロードするため、zipファイルを生成します。レイヤーを作成します。レイヤー設定で、「名前」にわかりやすくboto3のバージョンを含め、先ほど生成したレイヤーzipファイル「boto3-1.9.61.zip」をアップロードします。実行ロール、ポリシー設定Lambda関数に付与するIAMロールのカスタムポリシーは以下のようにします。StopDBCluster権限の指定は、最近追加されました。Auroraクラスターと同じリージョンでLambda関数を作成します。Auroraクラスターを停止する。Lambda関数の環境変数で以下を設定する。Auroraクラスターを起動する。Lambda関数の環境変数で以下を設定する。作成したLambda関数のDesigner画面で、「Layers」のアイコンをクリック。「Layerの追加」ボタンをクリック。レイヤーの選択で、先ほど追加したレイヤー「python-boto3-1-9-61」を指定します。Auroraクラスターのタグを環境変数で指定します。※AWSアカウントIDは、タグで対象リソースを絞り込む際に必要となります。true基本設定メモリはデフォルトの128MBのままでOKです。タイムアウトは、リトライをする場合はデフォルトの3秒では短かすぎてエラーすることがあるので、10秒や30秒などに変更します。Eventを指定して、スケジュールのルールを設定します。以下は「日本時間の月-金の19時に自動停止」するスケジュール設定です。「スケジュール式」の時刻はUTCで指定することに注意します。*)以下は「日本時間の月-金の9時に自動起動」するスケジュール設定です。設定が完了したら、Lambda関数をテストして、正しく動作することを確認します。Logsのログも確認しましょう。Auroraクラスターを自動停止、起動する方法を紹介しました。Layersの機能を利用しました。開発環境のコスト削減に、有効な設定だと思います。DesignInaba【お問い合わせ】お名前または法人名・団体名、メールアドレスと、簡潔な内容で構いませんので、お問い合わせ内容をご記入ください。折り返しご連絡いたします。※いただいた情報は他の目的には使用いたしません(個人情報の取り扱いについてはこちらのプライバシーポリシーをご参照ください)。(必須)↑お問い合わせ内容をご確認のうえ、チェックを入れてから「送信」してください。