はじめに

ソリューション開発部2に所属している上間と申します!

主な業務内容としてはグーネット沖縄・グーバイク沖縄・グーホーム・グーホーム賃貸のPLで、サイトの運用と開発を行っています。

営業の方からAWSの費用を少しでも抑えられないかと依頼があったため、そちらの紹介をしたいと思います。

やること

指定の時間になったらAWS Lambdaで複数のEC2サーバーを起動・停止させます。

以下がざっくりとした概要になります。

1. IAMポリシー・ロールの作成

2. Lambda関数の作成・実装・テスト

3. Amazon EventBridgeで Lambdaを実行する時間を指定

1.IAMポリシー・ロールの作成

まずはIAMのポリシーを作成しましょう!

IAMのコンソールを開き、「ポリシー」を選択します。

次に「ポリシーを作成」を押下し、「JSON」タブを選択します。

ポリシーエディタに以下を記述します。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Start*",
                "ec2:Stop*"
            ],
            "Resource": "*"
        }
    ]
}

「次へ」を押下し、ポリシー名を入力して「ポリシーの作成」で作成完了です。

本記事では例として「ServerStartStop」をポリシー名とします。

作成したポリシーをロールにアタッチします。

IAMのコンソールから、「ロール」を選択し、「ロールを作成」を押下します。

信頼されたエンティティタイプは「AWSのサービス」、ユースケースは「Lambda」を選択し、「次へ」を押下します。

許可ポリシーは先ほど作成したポリシーを検索し、選択後に「次へ」を押下します。

ポリシーと同様にロール名と説明に何をするロールなのかを分かるように記述をして「ロールを作成」で作成完了です。

2.Lambda関数の作成・実装・テスト

Lambdaのコンソールを開き、「関数」を選択します。

次に「関数の作成」を押下し、「一から作成」を選択します。

関数名の入力と実行ロールを「既存のロールを使用する」にします。

作成したロールを選択後に「関数の作成」で作成完了です。

作成した関数の実装になります。

「コード」タブのlambda_function.pyに以下を記述します。

「region」には起動・停止したいEC2サーバーのリージョンを記述し、「instances」にはインスタンスIDを指定してください。

「Deploy」を押下し、コードを保存します。

※ 後ほどのテストで実際に起動・停止を行うので、開発など停止していいインスタンスを指定してください。


import boto3
import os
region = 'ap-northeast-1'
instances = ["i-xxxxxxxxxxxxxxx","i-xxxxxxxxxxxxxxx"]

def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    action = event["Action"]

    if action == "Start":
        ec2.start_instances(InstanceIds=instances)
        print('started instance')
    elif action == "Stop":
        ec2.stop_instances(InstanceIds=instances)
        print('stopped instance')
    else:
        print('Lamdba function could not be executed.')

Lambdaの設定は完了となりますが、実際にテストをして起動・停止できるか試してみましょう!

「テスト」タブにて、イベントアクションを「新しいイベントを作成」にします。

イベント名を設定し、イベントJSONには以下コードを記述します。

【インスタンスを起動する場合】


{
  "Action": "Start"
}

【インスタンスを停止する場合】


{
  "Action": "Stop"
}

「保存」でテストイベントを保存し、「テスト」を押下すると実行されます。

EC2のコンソールから対象のインスタンスを確認して、起動 or 停止していれば成功となります!

3.Amazon EventBridgeで Lambdaを実行する時間を指定

EventBridge のコンソールを開き、「ルール」を選択します。

次に「ルールを作成」を押下します。

まずはサーバー起動のルールを作成しましょう!

名前を入力し、ルールタイプは「スケジュール」を選択します。

問題なければ「続行してルールを作成する」を押下します。

起動したい時間に設定します。私は朝の9時にしたいので、「cron(0 0 ? * * *)」で設定します。

時間はUTCなので、時差を考慮してください。

設定したら「次へ」を押下します。

ターゲットタイプは「AWSのサービス」を選択します。

ターゲットを選択では、「Lambda関数」と作成した関数名を設定し、「次へ」を押下します。

タグについては今回は設定せず、「次へ」を押下します。

確認画面になりますので、問題なければ「ルールを作成」を押下します。

これでサーバー起動の設定は完了です。

停止のルールも同じように作成すれば全ての設定は完了となります!

これで時間通りに自動でサーバーの起動・停止できるようになりました!

最後に

私は9時に起動・18時に停止の設定をしました。

その結果、24時間起動だったサーバーが9時間の起動になりましたのでかなりコストの削減になりました!

関数を複製し、他のサーバーに適用するともっと削減できるかと思いますので試してみてくださいー!!

参考

EC2インスタンス起動/停止をLambdaで自動化してみた

一つのLambdaで複数のEC2 インスタンスを起動・停止を行う

プロジェクトマネージャー

プロジェクトマネージャー

沖縄本社では、一緒に働くITエンジニアを募集しています

AIエンジニア、システムエンジニア、その他多数募集中!

こんにちは、プロトソリューションの福田です。

沖縄も旅行客を多く見かけるようになり、いよいよ夏本番。すでに7月前半で最高気温は33.3度を超えました!

夏は海水浴や旅行、花火大会などワクワクするイベントが満載ですが、日差しが強いので熱中症対策として水分をしっかりと摂ること。ポイントは「喉が乾く前に飲む」だそうです◎

さて、アツいといえば我々プロトソリューションがスポンサードしているFC琉球も激アツです!

今回は、7/8タピック県総ひやごんスタジアムにて行われた冠試合「プロトソリューション プレゼンツ グー沖縄・グーホームSPECIAL MATCH」の応援と、スタジアム場外特設ブースに、CYCY(サイサイ)の試乗コーナーを設置したので、その取材に行って来ました!

■CYCYとは?

icon_cycy


icon_cycy


株式会社プロトソリューションが2019年10月より開始したシェアサイクル事業です。ICTを活用し、地域に根ざしたシェアサイクル事業を行うことで、観光客の利便性向上を図り、交通渋滞緩和、環境への配慮を目指します。なお、本サービスは、OpenStreet株式会社が提供する自転車シェアリングシステム「HELLO CYCLING」を活用して行います。

沖縄のシェアサイクル CYCY(サイサイ)の利用方法はこちら


■タピック県総ひやごんスタジアムに到着

会場は既に、イベントを楽しむ方の熱気で包まれていました!
試合開始までの間、キッチンカーでお腹を満たします。食べ歩きをするのも一つの楽しみ♪



武敏さん、いたー!!!!

CYCYブースに到着。CYCYを運営する武敏さんが元気に迎えてくれます!



CYCYブースでは無料試乗会を実施!

この機会にCYCYの電動アシスト自転車の推進力を体験できちゃう♪

無料で試せて、冷た〜いドリンクももらえる試乗会♪



イベント会場を歩く方へ声をかけて、CYCYを体験してもらいます!

CYCY試乗会への呼び込みをする、グー沖縄とグーホームメンバー



たくさんの人が試乗に来てくれました!

グー沖縄、グーホームメンバーでサポートしながら安全に乗ってもらいます♪



そして今回、タピック県総ひやごんスタジアムにCYCYで来てくれた先着10名の方にCYCY割引クーポンとCYCYステッカーをプレゼント!

CYCY割引クーポンとオリジナルステッカーをGETしたユーザーの方々♪

■その他のブース

イベント会場では、FC琉球のマスコットキャラクター「ジンベーニョ」の缶バッジ作りが体験できたり、ミニ動物園にてリクガメやヤギ、モルモットにヨナグニウマなど、多種多様な動物とふれあえるブースも♪



そして、毎度お馴染みの抽選会へ!

前回は2等をひいたラッキーボーイ福田だが・・・!?

今回は「ご来場有難うございます」をいただきました!!

綺麗な字でしたためられた抽選くじに感動する福田

■イベントを終えて


たくさんの方がブースに来てくれました。

CYCYを体験してもらえて、私たち運営メンバーも心から嬉しいです!

■試合会場の様子

さて、試合会場はというと・・・!?

試合会場の様子



すごい熱気と盛り上がりです!

この日の来場者は4,396人。

そして、試合結果は『2-1』で最高の逆転劇をみせてくれたFC琉球の勝利!!

最後は打ち上げ花火が上がりました♪

■最後に

今回「シェアサイクル CYCY OKINAWA」の試乗会では、たくさんのお客さんにCYCYを体験してもらい、CYCYを知ってもらうことが出来ました!

CYCYを試乗頂いた皆さま、暑い中有難うございました!

そして当社のメディア事業部推進室、グーホーム、グー沖縄の社員の皆さん、ブース設営から実施まで本当にお疲れ様でした!!

今後もプロトソリューションはFC琉球を応援していきます!

icon_福田

icon_福田

この記事を書いたひと:福田 聡樹(ふくだ さとき)

株式会社プロトソリューション Webソリューション部所属。自社ホームページ編集長。ブログ/インタビュー/動画などのコンテンツを使ってプロトソリューションの取り組み、サービスやタレント情報の発信をしています。
好きなもの:爬虫類、犬、本のにおい、オヤジギャグ。


<プロトソリューション団体観戦エリアの様子>

■7月8日(土)FC琉球 対 松本山雅FC

プロトソリューションは、2023年7月8日(土)タピック県総ひやごんスタジアムにて開催された「明治安田生命J3リーグ」ホーム戦において、FC琉球の冠試合を開催いたしました。

グーネット沖縄・グーホームpresentsでの冠試合で、シェアサイクル「CYCY」の試乗コーナーを設置するCYCYブースを設け、試乗者に向けたプレゼントキャンペーンなどを実施し、50名を超えるお客様にお越しいただきました。

ご来場いただいた皆さま、誠にありがとうございました。

今シーズン、ホーム戦最多となる4,396人の来場者数の中、2-1の逆転劇で見事勝利をおさめました。

弊社は、スポーツを通して地域社会とのつながりを深め、今後も地域に根差した活動を通じて地域・社会に貢献して参ります。

■FC琉球
https://fcryukyu.com/

■クルマ情報メディア「グーネット沖縄」
https://ok.goo-net.com/

■不動産情報メディア「グーホーム」
https://goohome.jp/

■グーネット沖縄・グーホームpresents 冠試合の様子

<キックインセレモニーの様子>
<FC琉球選手の皆さんもCYCYブースへお越しくださいました!>
<会場の様子>
<CYCY試乗コーナー>

2023年7月2日(日)、宮古島新城(アラグスク)海岸にて開催された、海辺のミライをみんなで守ろう「ほっとけないプロジェクト」に協賛し、活動に参加いたしました。

・イベント1
「海辺のミライ教室」
スペシャルゲスト「ココリコ・田中さん」を迎え、海洋ゴミや宮古島の海洋生物について学ぶ

・イベント2
「ビーチクリーン」
宮古島のビーチのゴミを拾い、みんなのチカラで宮古島のビーチをクリーンにする

プロトソリューションは、おきなわSDGsパートナーに参画し、SDGs達成に向けた取組みを推進しております。
本イベントでの学びと理解を活かし、実践につなげることで、沖縄の地域・社会への貢献してまいります。

<イベントの様子> ※プロトソリューション社員撮影

ページトップへ戻る