チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【AWS+GoogleCloudPlatform】でスマホのプッシュ通知とかチャットサービスとかのインフラ周り

実際のプログラム周りのことは触れてないので割愛するけど、とりあえず初めての事で勉強になったので今回やったインフラ周りの事をメモ。

やること(ほぼAWS。結構多い。。)

VPC環境構築(RDSはマルチAZ)
・ElastcBeanstalk環境構築
・ElastiCache設定(チャット用)
・S3構築
・IAM設定
SNS設定(iOS
SNS設定(Android)←実はこれだけ先にFirebaseプロジェクト作成、GoogleCloudPlatformの設定が必要


1.VPC環境構築(RDSはマルチAZ)

セキュリティを考慮しVPCを導入。
RDS、ElasticBeanstalk、EC2等はVPC内で接続される。
RDSの機能である Multi-AZを利用。

2.ElastcBeanstalk環境構築

①アプリケーション作成
②アプリケーション内に環境を作成
③各環境設定

○アプリケーションの作成
アプリケーションとは1つのソースで動作する物で、ここでは HOGEHOGE と言う名前にする。

○環境を作成
HOGEHOGE では Webサーバ と ワーカー 環境が必要。
WebサーバはアプリとのAPI部分、管理画面等が動作。
ワーカー ではプッシュ通知の配信等、時間の掛かる処理を担当。
それぞれ分かりやすい名前の環境名で作成。

各環境の設定
Webサーバの設定

・スケーリング
オートスケーリングの設定。
任意。

インスタンス
任意。

・ソフトウェア設定
ドキュメントルート: /public

・メモリ制限: 512M
・表示エラー: Off
・環境プロパティにプロパティ名 FUEL_ENV 、プロパティ値に production を入力

VPC
RDSと同じVPCを指定。ここが違うとデータベースにアクセス出来なくなります。

ワーカーの設定
基本的に下記以外は Webサーバ と同じ設定です。

ワーカー設定
読み取り元となるSQSキューを指定する
HTTPパスを /worker/top にする



ーーーーーーーーーー
○チャット用
新しいアプリケーションの作成
ElasticBeanstalkのコンソールから新しいアプリケーションを作成。
尚、インスタンスは特に大きいサイズも必要ないので、 t1.micro で大丈夫。

○環境の作成
1. アプリケーションを作成したらアクションから 環境の作成 を選択
2. 環境枠は ウェブサーバ環境 を選択
3. 環境名、ドメイン、説明は任意の値を入力
4. プラットフォームを Node.js にし、更にオプションを選択 ボタンを押下
5. VPC等の設定を行って下さい。※ push-mng 等と同じVPC
6. 環境の作成 ボタンを押下


3.ElastiCache設定(チャット用)

チャットサーバの為にElasticBeanstalkを、
チャットデータの一時保存とTwitter、LINEログイン情報の一時保存の為にElastiCacheが必要になる。

4.S3構築

普通に作成。バケット名が必要なのでメモ。

5.IAM設定

IAMとはAWSユーザーに対して AWSのリソースへのアクセスできる範囲やアクセス方法を安全に制御するためのウェブサービス
IAM により、どのユーザーが AWS リソースを使用できるか、また、それらのユーザーがどのリソースをどのような方法で使用できるかを制御。
Webサーバ、ワーカーのソースコードをデプロイする為に必要。

○設定方法
IAM > グループの追加 > 適当な名前をつける。
ポリシーで AWSElasticBeanstalkFullAccess をアタッチ。
ユーザの追加 > アクセスの種類を プログラムによるアクセス にして > ユーザをグループに追加。
追加が完了した画面に アクセスキーID と シークレットアクセスキー が表示されるのでメモ。

6.SNS設定(iOS

プッシュ通知の送信に必要。

トピックの作成
Topic name Display name を入力
作成すると ARN が発行されるのでメモ。

アプリケーションの作成
Create platform Application から
Application name : 分かりやすい名前
Push notification Platform を Apple production に
Push certificate type を iOS push certificate に
Choose file から別途お送りした production_shoumei.p12 ファイルを選択
パスワードは何も入力せず Load credentials from file ボタンを押下
Certificate と Private key が自動的に入力されるので Create platform application ボタンを押下
ここでも ARN が発行されるのでこちらもメモ。

7.SNS設定(Android

Redisクラスタが必要。
1. 左メニューの Redis を選択
2. 作成 ボタンを押下
3. 名前、説明は任意の値を入力
4. ノードのタイプは cache.t2.micro にしておく。
5. レプリケーション数は なし
6. サブネットグループは新規作成するか既存のサブネットグループを割り当て
7. 作成完了後 プライマリエンドポイント のURLをメモ。

7-2.CloudWatchによるログ監視

1.SNS画面で対象のアプリケーションを選択
2.配信ステータス選択
3.IAMロールを作成
4.任意のロールを選択するか、新規作成。この時iOSAndroidを分けて作る必要はないので共通のものを利用する。
つまりxxxx-develop-xxxxxというロールを使いまわしてよい。
5.許可
6.設定を保存、にするとpublish扱いとなり公開状態。
7.CloudWatchを開いてロググループが作成されていく。ログないと作成されないぽい。



8.Googleアカウント作成

9.Firebaseプロジェクト作成

https://console.firebase.google.com/
上記URLよりプロジェクトを追加


FirebaseプロジェクトにAndroidアプリを追加
登録過程でgoogle-service.jsonをダウンロードできる画面に遷移。
この画面よりダウンロードを行い、ダウンロードできたファイル(google-service.json)を保管しておく。

10.ServerKey作成(取得)

https://console.cloud.google.com/
に遷移
画面右より認証情報を押下
Server key (auto created by Google Service)
のキー名を記録する


11.アプリケーションの作成(取得)AWSSNS)の設定

Create platform Applicationを押下
Application nameを分かりやすい名前で設定
Push notification platformのセレクトボックスでgoogle cloud messaging(GCM)を選択
API kEYにさきほど記録したServerKeyを設定
Applicationが作成される。
ARNをメモ。

12.FCM 用のSender IDAPI Keyの確認方法

Tapjoyからプッシュ通知を配信する為にリンク先にもある「サーバーキー」と「送信者ID」が必要なので下記通りでいけた。
FCM 用のSender IDとAPI Keyの確認方法 - Tapjoy Developers