simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

AWSでWebサーバーを立てるには?

■前置き
2017/7/2 にこの記事の下書きをしていたのを見つけたので、書き上げてあげることにした。
のですが、色々勉強してついに完成せず、やっと次の記事のときに AWS で安全にアクセス制限した Web ページが完成(もー覚えること多すぎ)
simplestar-tech.hatenablog.com


■本題
こちらを参考になぞってみます。
qiita.com

■予備知識1
Amazon Virtual Private Cloud (Amazon VPC)

情報の通信量に応じてネットワークの構成を組み替えたいので、ネットワークも仮想化したいというのが Amazon の狙いだとか

詳しく知りたい人はこちら
docs.aws.amazon.com

■予備知識2
サブネット?

サブネットは、VPC の IP アドレスの範囲
お客さまのAWS リソースは、指定したサブネット内でしか起動することができません。

パブリック、プライベート があります。インターネットにつながるリソースにのみパブリックを使用しましょう。
サブネットの単位で、複数のセキュリティレイヤーを使用できます。
安全に作ってください。

詳しく知りたい人はこちら
docs.aws.amazon.com

1 つのサブネットが複数のVPC内のゾーンにまたがることはできません。
嬉しいことですよ、アベイラビリティゾーンとは、他のアベイラビリティーゾーンで発生した障害から切り離すために作られたので、個別のアベイラビリティーゾーンでインスタンスを起動することにより、障害が波及しません。

■予備知識3
Classless Inter-Domain Routing(CIDR、サイダー)

インターネット上のルーターにおけるルーティングテーブルの肥大化速度を低減させるための機構
Domain Name System (DNS) が考案されてから約10年間、IPアドレスをクラス分けして割り当て、ルーティングする方式はスケーラブルでないことが明らか
Classless Inter-Domain Routing(CIDR) は「可変長サブネットマスク (VLSM)」に基づき、IPアドレスのプレフィックスを可変長で割り当て可能にする。

■予備知識4
CIDRブロック

IPアドレスをグループ化して格納できるCIDR。
このようなアドレスのグループをCIDRブロックと呼び、IPアドレスを二進法で表したときの先頭の何ビットかが共通になっている。

■予備知識5
パブリック IPv4 アドレス

パブリック IPv4 アドレス (このトピックではパブリック IP アドレスと呼ばれる) を自動的に受信するかどうかの設定がすべてのサブネットに存在します。
有効になっているサブネットに対してインスタンスを起動すると、パブリック IP アドレスが割り当てられます。

サブネットのトラフィックがインターネットゲートウェイにルーティングされる場合、そのサブネットはパブリックサブネットと呼ばれます。
パブリックサブネット内のインスタンスIPv4 を介してインターネットと通信することが必要な場合は、そのインスタンスにパブリック IPv4 アドレスまたは Elastic IP アドレス (IPv4) が割り当てられている必要があります。

パブリック IPv4 アドレスの詳細を知りたい人はこちら
docs.aws.amazon.com

■予備知識6
パブリック IPアドレスは固定できない。

パブリック IP アドレスは、Amazon のパブリック IP アドレスプールにあるアドレスです。
パブリック IP アドレスとインスタンスとの関連付けを解除すると、そのアドレスは解放されてプールに戻り、それ以降お客様はそのアドレスを使用できなくなります。

固定パブリック IP アドレスをお客様のアカウントに割り当てる必要がある場合は、Elastic IP アドレスを使用します。

詳細については、「Elastic IP アドレス」を参照してください。
docs.aws.amazon.com

■メモ
dev.classmethod.jp

■最初にやること

クレジットカード番号と住所連絡先を使ってAWS のアカウントを作成し、案内に従って10分程度のチュートリアルをこなします。(日本語でチュートリアルできる)
aws.amazon.com

私が行ったチュートリアル
Linux 仮想マシンの起動→作った Linuxssh の認証システム使って GitBash から入れた→Linux インスタンスを terminate するところまで確認
Windows 仮想マシンの起動→Windows 仮想マシンを作成し、設定し、接続することができました。
・"Hello, World!" をサーバーレスで実行するAWS Lambda を使用します→最初の AWS Lambda 関数が作成されました。ここでは、サーバーのプロビジョニングや管理をせずにアプリケーションを実行する方法の最初のステップを学習しました。(外部から呼び出す方法までは追ってない)
・Docker コンテナのデプロイ→クラスターに乗ったサービスに乗ったタスクに乗ったコンテナが起動するところまで確認、しかし、DNSの代わりの名前で http アクセスするがそんなドメイン名は無いとさ、そりゃ時間かかるだろうけど、確認する前に消した。クラスターの消し方消し方がずいぶんチュートリアルと異なる。時間を要する

■必要になった知識1
各 Lambda 関数には、関連付けられた IAM ロール (実行ロール) があります。
なのでLambda 関数を作成するときに、その IAM ロールを指定します。

IAMロール?
詳細はこちら
docs.aws.amazon.com
IAM ロールは、AWS で許可/禁止する操作を決めるアクセス権限ポリシーが関連付けられている AWS ID であるという点で、ユーザーと似ています。ただし、ユーザーは 1 人の特定の人に一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。
ユーザーがロールを引き受けた場合、一時的セキュリティ認証情報が動的に作成され、ユーザーに提供されます。

ロールを使用して、通常は AWS リソースへのアクセス権のないユーザー、アプリケーション、サービスにそのアクセス権を委任できます。
たとえば、AWS アカウントのユーザーに、通常はないリソースへのアクセス権を付与したり、ある AWS アカウントのユーザーに、別のアカウントのリソースへのアクセス権を付与したりできます。

ロールに関連するアクセス権限を付与する必要があります。

テスト以外でLambda 関数を呼び出すには?