【AWS】Reactでアプリ作ってS3とAPI GatewayとCloud Frontで公開する

<はじめに>

この記事ではReactで作ったアプリを

S3とAPI GatewayとCloud Frontで公開する方法を紹介します。


<作業内容>

1.Reactアプリの準備

Reactアプリを準備します。

今回は動けば成功!ということなので、

手っ取り早く試したい方はサンプルをご利用ください。

github.com


2.S3の設定

IAMをかぶせたAPI Gateway経由で公開しますので、

S3は非公開でOKです。

S3_01


ビルドしたReactアプリをこんな感じでアップロードします。

S3_02

以上でS3の設定は完了です。


3.API Gatewayの設定

最低限プロキシリソースでGETメソッドをつくってやればOKです。

API_01

実行ロールにはS3を読み取りできるロールを指定しましょう。

API_02


ここからが少しポイントです。

ヘッダーのマッピングでContent-Typeをマッピングしましょう。

API_03
API_04

ブラウザにファイルの種類を教えてあげていい感じに表示してもらえます。


今回ユーザーには必ずCloud Frontを経由してもらいたいので、

APIキーを指定してCloud Front以外からの通信はAPI Gatewayで弾くようにします。

API_05

以上でAPI Gatewayの設定は完了です。


4.Cloud Frontの設定

カスタムヘッダーにx-api-keyキーを追加しておきましょう。

CL_01

値はAPI Gatewayで設定したAPIキーです。


また、今回はアプリがReactのSPAなので

404エラーが返った時にindex.htmlに転送するようにします。

CL_02

以上でCloud Frontの設定は完了です。


5.完成

XX_01


以上でReactアプリをS3とAPI GatewayとCloud Frontで公開することができました。

オンプレでの構築と比べると、クセが強すぎて若干拒否反応が出ちゃいますが、

慣れると爆速で構築できるので、なんだかんだ言ってAWSすごいと思います。

では!

【AWS】Cloud Front × API Gateway × Lambda でサーバーレスAPI構築

<はじめに>
この記事ではAWS上にサーバーレスでAPIを構築する方法を紹介します。


<作業内容>
1.Lambdaの準備

今回API GatewayのLambda プロキシ統合を利用します。

その際にLambdaに渡される入力形式およびLambdaが返す出力形式は

下記の公式ドキュメントに記載があります。


docs.aws.amazon.com


サンプルのソースコードは下記に置いてあります。

使ってみてください。

github.com


2.API Gatewayの準備

API GatewayではLambda プロキシ統合の使用にチェックを入れて

LambdaリージョンとLambda関数を指定します。


f:id:nomurabbit:20210925045055p:plain


3.Cloud Frontの準備

Cloud Frontは特に気をつけるところはありません。

オリジンとビヘイビアを適切に設定して完成です。


<まとめ>

今回はAWSでシンプルなサーバーレスAPIを構築してみました。

Lambdaの入力形式・出力形式でつまづきやすいので、

ぜひサンプルのソースコードを使って試してみてください。

では!

DNSからはじめる情報セキュリティ

現在、一番よく使われる情報機器は間違いなくスマートフォンです。

 

多くの人は便利な道具として特に意識をせずにスマートフォンを使っています。

 

しかし、中にはウイルス感染や情報漏洩を恐れて、自分のスマートフォンのセキュリティに不安を抱いている人もいるかもしれません。

 

そうした漠然とした不安を抱いている方に、今回はセキュアDNSという仕組みを紹介します。

 

この仕組みは多くの場合無料で、わずかな操作で設定できます。

 

セキュアDNSDNSと呼ばれるインターネット上の住所録にあたる機能を使ったサービスであり、インターネットに接続する誰もが利用できます。

 

基本的にみなさんがDNSを意識することはめったにありませんが、みなさんのスマートフォンにインストールされたアプリはDNSを使ってWebサイトの名前(googleとか、amazonとか)からインターネット上の住所(IPアドレスといいます)を調べます。たとえそのアプリが悪意を持ったものでも例外ではありません。

 

悪意を持ったアプリは多くの場合あなたのスマートフォンと悪意のあるWebサイトを接続し、情報を破壊したり、抜き取ったりします。場合によってはそれがきっかけで大きなトラブルに巻き込まれる可能性もあります。

 

しかし、みなさんがご自身のスマートフォンにセキュアDNSの設定をしていたとしたら、悪意のあるアプリの活動を大幅に制限できます。

 

セキュアDNSは膨大な量の悪意のあるWebサイトの一覧を持っています。そして、セキュアDNSは、たとえWebサイトの名前を聞かれても、それが悪意のあるWebサイトの一覧にある限り決して住所を答えることはありません。

 

つまりセキュアDNSの設定をすることにより、あなたのスマートフォンが悪意のあるWebサイトに接続するリスクを大幅に削減できるのです。これは、あなたのスマートフォンのセキュリティが大きく向上したことを意味します。

 

皆様の中で、自分もやってみたいと思われた方はぜひ以下の手順を試してみてください。

 

セキュアDNS(OpenDNS)の設定方法
iosの場合

 

1.設定からwi-fiを選択します。

f:id:nomurabbit:20200122232835j:image

 

2.チェックの付いているレコードの!マークを選択します。

f:id:nomurabbit:20200122232845j:image

 

3.DNSを構成の自動(もしくは手動)を選択します。

f:id:nomurabbit:20200123073938j:image

 

4.手動を選択し、DNSレコードに下記の2つのIPアドレスを追加します。

以上で設定は完了です。

208.67.222.222

208.67.220.220

f:id:nomurabbit:20200125125221j:image

 

5.悪意のあるウェブサイトにアクセスしようとすると、警告画面に差し替えられます。

f:id:nomurabbit:20200123074207p:image

 

OpenDNSのwebサイトは以下です。

https://www.opendns.com

Linux環境構築(CentOS5.11)~その5~

<はじめに>
Linux環境構築シリーズ(CentOS5編)その4です。

気が向いたのでPostfixをインストールして、

Outlook2007をメーラーとして自分から自分宛にメールを送れるところまでやります。


<作業内容>
何はともあれPostfixをインストール

Postfixの設定ファイルは下記なので、

適当に設定を行います。

/etc/postfix/main.cf

myhostname = ほげほげ

mydomain = ふがふが.local.jp

myorigin = $mydomain

inet_interfaces = all
※よくわかりませんが、allでないと動きませんでした。

home_mailbox = Maildir/

smtpd_banner = $myhostname ESMTP unknown

smtpd_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_sasl_mechanism_filter = plain

smtpd_sasl_local_domain = $myhostname

smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

message_size_limit = 10485760

SMTP-Auth認証を利用するので、cyrus-saslをyumかなんかでインストールして起動!

/usr/lib/sasl2/smtpd.confをこんな感じに編集して、

pwcheck_method: saslauthd
mech_list: CRAM-MD5 PLAIN LOGIN

新規ユーザー作成時にメールボックスも作成されるようにします。

mkdir -p /etc/skel/Maildir/{new,cur,tmp}
chmod -R 700 /etc/skel/Maildir/

これでPostfixを起動させればおkのはず。

あと、POPサーバーとしてdovecotyumかなんかでインストールして、

/etc/dovecot.confを下記のように編集

protocols = imap imaps pop3 pop3s

mail_location = maildir:~/Maildir

そしてdovecotを起動

ユーザーの追加は普通にuseraddで追加して、

useradd -s /sbin/nologin centos

パスワード決めて、saslに登録してやって

saslpasswd2 -p -u ほげほげ.ふがふが.local.jp -c ユーザー名

sasldb2のグループを変えてやればおk!

chgrp postfix /etc/sasldb2

あとはメーラーでアカウント作ってテストして、

ちゃんと送受信できればおk!

<まとめ>
とりあえずPostfixの触りだけですが、

一応構築ができました。

メールサーバーが立つとそれなりにログもたまるので、

(/var/log/maillog)

次回はいよいよ、いかにログを可視化し、監視できるかというのをやっていきます。

まずはCGIで作って、最終的にはZABBIX入れるとかそんな感じでやるつもりです。

Linux環境構築(CentOS5.11)~その4~

<はじめに>
Linux環境構築シリーズ(CentOS5編)その4です。


<作業内容>
そういえば、時間がめちゃくちゃで気持ち悪かったので、
yumでntpのインストールだけ実施。

ntpサーバーはntpd.confにて、
ひとまずntp.nict.jpを指定。

/sbin/ntpdateでntp.nict.jpに時計を合わせた上で
ntpdを起動させました。

chkconfigに追加しておk…と思いきや、
sudoコマンド実行時に『タイムスタンプが未来すぎますよ』的な
エラーが発生するようになりました。

とりあえずサーバーの再起動で直りました!


<まとめ>
今日はここまで、
次はsyslogとかも少しずつ手出していくつもりです。

Linux環境構築(CentOS5.11)~その3~

<はじめに>
Linux環境構築シリーズ(CentOS5編)その3です。


<作業内容>
apacheを起動させてみます。
外には公開しないので、
横着してselinuxiptablesを切ります。

selinux
 /etc/selinux/configを修正
 setenforce 0にて停止
iptables
 /etc/init.d/iptables stopにて停止

加えてhttpd.confにて、
サーバーのホスト名を修正しておきます。
これではれてhttpdをスタートです。

/etc/init.d/httpd start

このままアクセスすると下記のようなエラーが発生します。
1)ドキュメントルートにindexファイルがないよ!
2)indexファイルの代替のnoindexファイルで指定されている
powered_by_rh.pngがないよ!

1)のエラーはともかく2)のエラーはどうかと思いますが、
ちゃんとindex.htmlをドキュメントルートに配置して、
細かい点には目をつぶることにします。
※index.htmlファイルだけだとさらにfavicon.icoがないと怒られます。


<まとめ>
ここまででapacheが無事(selinuxiptablesを切っている時点で微妙ですが…)
動きました。続けることが大切と信じて、少しずつ何かしら書いていきます。

Linux環境構築(CentOS5.11)~その2~

<はじめに>
Linux環境構築シリーズ(CentOS5編)その2です。


<作業内容>
yumリポジトリ理研のサーバーに変更します。
変更するファイルは下記の通り。

・/etc/yum.repos.d/CentOS-Base.repo

変更する内容としては『baseurl』の
『mirror.centos.org』ってところを
ftp.riken.jp~』という具合に5か所程。


変更が終わったらひとまず管理者権限でyum updateを実施します。


ユーザーをひとつ作成してsudoをインストールし、
作成したユーザーにvisudoで権限を割り当てます。
ちなみにvisudoは/usr/sbin/visudoにあります。


次に、コンパイラをインストールします。
現時点で必要かどうかはわかりませんが、
いずれ必要になると思うのでベタですがgccをインストールしてみました。


きっとWebサイトを作るとテンションもあがるので、
httpdperlもインストールします。
yumで入れたらhttpdは2.2がインストールされました。
perlはすでに5.8がインストール済みでした。


httpdをOS起動時に立ち上げたいので
chkconfigを使って/etc/rc3.dにシンボリックリンクを作成しておきます。


ここでふと思い立って/var/logを覗いてみると、
yum.logに興味がわいてきたので、
とりあえずyumでインストール、アップデート等した
各ソフトウェアの状況をWebで見れるようなプログラムでも書いてみることにします。


<まとめ>
いつになるかはわかりませんが、
次回以降、少しずつ進めていきたいと思います。