AWS EC2にiOSのAPNsプッシュ通知のためのサーバーを構築する

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

iOSアプリにPHPからプッシュ通知(APNs)したいため、AWS EC2にPHPが動作するサーバーを立ち上げる手順MEMO。

iOSアプリにPHPからプッシュ通知(APNs)したいため、XserverのVPSにPHPが動作するサーバーを立ち上げる手順MEMO。(iO...

ほぼ上記の流れと同様ですが、AWSの画面についてやセキュリティ関連、ドメイン設定部分について補足追加しておきます。

上記MEMO内の

  • ドメイン
  • パケットフィルタ設定
  • DNS
  • MySQL & おまけ:MySQL Driver

部分がAWSだと以下に置き換わるかなと思います。

AWS にアカウントを作り、コンソールにサインイン後、EC2のダッシュボードに移動。インスタンスを起動で、Ubuntu(Ubuntu Server 22.04 LTS (HVM), SSD Volume Type。インスタンスタイプを選ぶ際、最低でもメモリは1GB以上必要)をセットアップし、SSHでアクセスできるようになっている前提です。

インバウンドルールの設定

EC2ダッシュボードから「インスタンス(実行中)」を選び、対象となるインスタンスIDを選ぶ。インスタンス概要ページの下部にある「セキュリティ」を選択し、セキュリティグループという下のリンクをクリック。インバウンドのルールを編集。「HTTP」「HTTPS」を選び、「Anywhere-IP4v」を選択し「ルールを保存」。

これをしておかないとApacheを起動してもブラウザからアクセスできません。

Route 53 ホストゾーンの作成

コンソールのサービスから「Route 53」を検索し「Route 53 ダッシュボード」を表示。「ホストゾーンの作成」を選ぶ。

「ドメイン名」に上記のインスタンスに設定したいドメイン名を入力。タイプは「パブリックホストゾーン」。「ホストゾーンの作成」をクリックすると、タイプ「NS」 の値に

  • ns-xxxx.awsdns-xx.org
  • ns-xxx.awsdns-xx.net
  • ns-xxxx.awsdns-xx.co.uk
  • ns-xxx.awsdns-xx.com

と表示されます。

ムームードメインでネームサーバを登録

ドメイン管理しているサービスでネームサーバを登録します。以下はムームードメインの例です。

ムームードメインのコンパネで対象となるドメインを選択し、「ネームサーバ設定変更」をクリック。「取得したドメインで使用する」でネームサーバ1から4までに上記で表示されたアドレスを入力。最後にピリオドがついてますが、そこまで入力するとエラーになるので、最後のピリオドはなしで。

1日程度、浸透するのを待ってから(設定直後に浸透する場合もありそう)、バーチャルホスト設定以降の設定に戻る。

浸透しているかを確認するには、

nslookup -type=NS example.com

を行ってanswerにawsdnsのアドレスが表示されるかを確認します。

Elastic IP の割り当て

EC2ダッシュボードの左メニュー内「Elastic IP」を選択。右上の「Elastic IP アドレスを割り当てる」をクリックし、そのまま「割り当て」。アクションメニューから「Elastic IP アドレスの関連付け」を選択し、リソースタイプ「インスタンス」でインスタンス欄の「インスタンスタイプを選択します」というところから選択できる「xxx – running」という項目を選択し「関聯付ける」をクリック(プライベートIPアドレス欄は空欄のままにしました)

Aqs01

Aqs02

これでEC2のインスタンス概要を見ると、「自動的に割り当てられたIPアドレス」だったものが「Elastic IP アドレス」(再起動するなどしても変動しないIPアドレス)となるはず。

A レコードを作成

Route 53の対象とするホストゾーン詳細画面で「レコードを作成」。「レコードをクイック作成」画面で以下の値で空白のままと「www」とで二つのレコードを作成。

  • 空白のままと「www」
  • レコードタイプ:A
  • 値:Elastic IP アドレス
  • TTL:1時間(3600)
  • ルーティングポリシー:シンプルルーティング

MySQL(Amazon RDS)

Amazon RDSのダッシュボードから「データベースの作成」で「簡単に作成」を選びます。以下の選択肢で

  • エンジンのタイプ:MariaDB
  • DBインスタンスのサイズ:開発/テスト
  • DBインスタンス識別子:任意(db-mskgapps-hoge)
  • マスターユーザー名:admin
  • マスターパスワード:任意
  • EC2コンピューティングリソースに接続
  • EC2インスタンス:上記で作成したEC2インスタンスを選択

この場合のデータベース接続情報は、Amazon RDSダッシュボード>DBインスタンスから作成したDB接続子のリンクを押して表示される「エンドポイント」のアドレス。ポートは3306、ユーザーはadmin。SSHトンネルを使用して接続。