Lambda
用途
- Mattermost起動に必要な初期データをデータベースに作成するためにLambdaを使います。ただLambdaを使いたいが為に使います。
- EC2からデータベースに接続してデータを作成する場合はskipしてもOKです。難易度がかなり高いので演習ではLamdbaはskipします。次は Mattermost構築の流れ(手動編)Part5 EC2 - ジャギ様の部屋 です。
Lambda用のセキュリティグループの作成
- AWSコンソール画面の検索窓に「セキュリティグループ」と入力→
セキュリティグループ
をクリック→セキュリティグループを作成
ボタンをクリック
画面 | 設定項目 | 設定値 |
---|---|---|
基本的な詳細 | セキュリティグループ名 | mattermost-lambda-sg |
説明 | Security group applied to Mattermost Lambda | |
VPC | mattermost-vpc | |
インバウンドルール | - | - |
アウトバウンドルール | - | - |
タグ - オプション | キー | Name |
値 - オプション | mattermost-lambda-sg |
Lambda用のIAMロールの作成
- AWSコンソール画面の検索窓に「IAM」と入力し、
IAM
をクリックする。 - 左メニューの
ロール
をクリック→ロールを作成
ボタンをクリック - 設定項目は以下
画面 | 設定項目 | 設定値 |
---|---|---|
信頼されたエンティティを選択 | 信頼されたエンティティタイプ | AWS のサービス |
ユースケース | Lambda | |
許可を追加 | 許可ポリシー | AmazonRDSFullAccess AWSLambdaVPCAccessExecutionRole |
名前、確認、および作成 | ロール名 | mattermostRdsAccessRole |
説明 | This is the role that holds access to RDS and applies to Lambda. | |
タグを追加 | キー | Name |
値 - オプション | mattermost-lambda-role |
関数(Lambda Function)の作成
- AWSコンソール画面の検索窓に「Lambda」と入力し、
Lambda
をクリックする。 - 左メニューの
関数
をクリック→関数の作成
ボタンをクリック→一から作成
を選択する。
画面 | 設定項目 | 設定値 |
---|---|---|
基本的な情報 | 関数名 | mattermost-create-initdata |
ランタイム | Python 3.9 | |
アーキテクチャ | x86_64 | |
デフォルトの実行ロールの変更 | 既存のロールを使用する | |
既存のロールを使用する | mattermostRdsAccess | |
詳細設定 | VPC を有効化 | チェックを入れる |
VPC | mattermost-vpc | |
サブネット | mattermost-subnet-private1-ap-northease-1a mattermost-subnet-private2-ap-northease-1c |
|
セキュリティグループ | mattermost-lambda-sg |
コード修正
lambda_function.py
を開き、このコードに書き換えます。- 書き換えた後、
Ctrl + s
で保存します。 - その後、
デプロイ
ボタンをクリックします。関数 mattermost-create-initdata が正常に更新されました。
と画面上部に表示されればOKです。
Cloud9
用途
- Cloud9でLambdaの実行に必要なpymysqlモジュールをインストールします。Cloud9を使わなくても可能ですが、利用機会がないので使います。
- 使い方がよくわからず、かろうじて使えてるといった手順になります。
Cloud9の画面起動
- AWSコンソール画面の検索窓に「Cloud9」と入力し、
Cloud9
をクリックする。 Create environment
ボタンをクリックします。
Cloud9の設定画面
Name environment
画面が起動するので以下の設定を行い、Next step
ボタンをクリックします。
Environment name and description
設定項目 | 設定値 |
---|---|
Name | mattermost-cloud9 |
Description | (デフォルトのままでOK) |
Environment settings
- 続いて
Configure settings
画面が起動します。設定は全てデフォルトのままでNext step
ボタンをクリックします。
Review
- 続いて
Review
画面が起動します。さらっと設定内容に目を通し、Create environment
ボタンをクリックします。Cloud9はすぐ削除するので設定内容は気にしなくてOKです。
ここからCloud9の画面(コンソール)の操作
Cloud9の画面が起動したら
左メニューのAWS
→Lambda
→mattermost-create-initdata
→右クリック
→Download
をクリックします。Select a workspace folder for your project
にはmattermost-cloud9
をクリックします。
するとダウンロードが始まるので、
左メニューのEnvironment
→Lambda
→mattermost-create-initdata
があることを確認します。画面下部のコンソールで以下のコマンドを実行します。インストール後はzipコマンドで圧縮します。pymysqlはdbにアクセスするために必要なモジュールです。インストールするとCloud9のエクスプローラ上にフォルダが作成されていることが確認できます。
$ cd mattermost-create-initdata $ pip install pymysql -t ./ $ zip -r mattermost-create-initdata.zip *
左メニューのAWS
→Lambda
→mattermost-create-initdata
→右クリック
→Upload Lambda
→Zip Archive
→mattermost-create-initdata.zip
選択→Open
ボタンクリック→Yes
ボタンクリック- Lambdaの画面を見て、pymysqlフォルダが確認できればOK
S3にmattermost-create-initdata.zipアップロード
- 手動編の手順では使わないのですが、自動編の手順で使うのでここでアップロードしておきます。
- Cloud9からバケットの作成とファイルのアップロードが可能です
- S3の画面でアップロードされたことを確認しましょう。
テストイベントを設定
Test
ボタンを押下します。するとテストイベントを設定
画面が起動しますので以下のように設定します。
設定項目 | 設定値 |
---|---|
イベントアクションをテスト | 新しいイベントを作成 |
イベント名 | mattermost-createdata |
イベント共有の設定 | プライベート |
テンプレート - オプション | (デフォルトのままでOK) |
イベント JSON | (デフォルトのままでOK) |
- 保存ボタンをクリックします。
環境変数の設定
設定項目 | 設定値 |
---|---|
DB_NAME | mattermost |
DB_PASSWORD | adminadmin |
DB_USER | admin |
DB_WRITER_ENDPOINT_ADDRESS | (RDSのエンドポイントを設定します。RDSの画面からコピーしてください。書き込みの方です。読み取りの方はNG) |
Lambda実行
Deploy
ボタンの押下が必要かも。押せる状態なら押しておく。Test
ボタンをクリックし、以下のような出力があれば実行は成功です。time outで失敗するときはセキュリティグループの設定が悪い、別のVPCに所属していることを疑います。- 実際にデータベースのデータを見るのはEC2の手順内で行います。
Cloud9の削除
AWSコンソール画面の検索窓に
CloudFormation
と入力し、CloudFormation
を選択するCloud9から削除しましょう。