カテゴリ:13.実際にやってみる > 13.8 AWS

(1)AWSについて
EC2(Elastic Compute Cloud)は、仮想サーバを構築することができます。VPSと思ってもいいでしょう。Elasticは「弾力性がある」という意味で、規模を拡大したり数を増減させたりが柔軟なクラウドと考えればいいでしょう。
その他、ストレージサービスのS3(Simple Storage Service)、データベースサービスのRDS(Relational Database Service)があります。※参考ですが、SQLを使わないDBのDynamoDBというものもあります。

(2)アカウントの作成
AWSを利用するには、アカウントを作るところから開始します。
無料枠を使って進めます。ただ、残念なのが、必ずクレジットカード情報を入れる必要があることです。IBMクラウドなどはその必要がありません。なので、偽名などで登録することは実質不可能です。
上記URLの画面右の「まずは無料で始める」をクリックして開始します。
aws1
aws2クレジットカード情報や住所を正しくいれます。たしか、電話番号のSMSによる認証もあったかと思います。
また、アカウント名を作成しますが、ログインには使いません。

(3)ログイン
アカウントができたら、早速ログインしましょう。
①ログイン画面にアクセス
aws3
②メールアドレスとPWでログインをする

③AWS マネジメントコンソール の画面が表示されます。
 ・左上のAWSのアイコンは、ホームボタンのような役割をしています。
 ・サーバを起動するには、真ん中あたりの「ソリューションの構築」の「仮想マシンを起動する」から行います。
 または、上のメニューの「サービス」>「コンピューティング」>「EC2」から起動します。
 ・メニューの「アカウント名(皆さんが設定したもの)」をクリックすると、アカウント管理のメニューになります。
 
(4)最初の設定 ※主にセキュリティ
①接続するサーバの場所を変更
 リージョンとエンドポイントを変更します。
 メニューバーの右の方に、「米国東部 (バージニア北部)」などとなっている部分です。日本に変更しましょう。具体的には、アジアパシフィック (東京)にします。
 ※詳細は以下

②アカウントの設定
メニューバーで、自分のアカウントをクリックして「マイアカウント」

→たくさんあるので、次の節で。

③認証の強化
二段階認証 MFA(Multi-Factor Authentication)を入れる
以下から実施する。
または、「サービス」メニューの「セキュリティ、ID、およびコンプライアンス」>「IAM」を開く
ここで、「ルートアカウントの MFA を有効化」から2段階認証を実行する。
詳しくは、以下

※ログインしたらメールで通知してほしいが、簡単にはできなさそうである。残念

(5)アカウントの設定
メニューバーで、自分のアカウントをクリックして「マイアカウント」
①お支払い通貨の設定
→JPNに変更。手数料が安くなるような噂
aws4
②Billingの設定
それぞれチェック
・電子メールでPDF版請求書を受け取る
・無料利用枠の使用のアラートの受信
・請求アラートを受け取る

(6)請求に関して
①毎月の請求額の確認
 無料で使えるといっても、アカウントが乗っ取られるなどして、大量に使われるリスクもあります。
 請求額の確認は、「マイアカウント」>「Billing」>「請求書」
②リアルタイムの料金を表示
「マイアカウント」>「Cost Management」>「Cost Explorer」
でコストエクスプローラを有効にします。
 少し時間がかかります。 

③請求の上限設定
・「マイアカウント」>「Budgets」で「Create a budget」ボタンを押します。
aws5
・「コスト予算」を選択します。
aws6
間隔:月別、定期予算、で上限を$20に設定しました。
→次のページで80%(Alert threshold)で通知する設定をしました。80という数字は、あらかじめ入っているように見えましたが、自分で設定が必要です。
aws7
④料金計算
EC2の料金は複雑と言われます。コア数やメモリにもよります。不要なインスタンス(サーバ)は停止しておきましょう。(※削除しなくても、停止だけで課金はされないはず)。それ以外に、ストレージ(EBS)や、通信量によっても課金されます。インバウンドの通信は無料のようすだが、Dos攻撃をくらうと同時にアウトバウンドも増えるので、費用が怖い。いわゆるEDoS攻撃である。

(1)EC2でのサーバの構築に関して
今回は、Linux(基本はCentos7)サーバをAWS上に構築します。ローカルにサーバを持つ必要はなく、インストールも不要。とても便利です。

(2)ネットワーク構成とVPC
・作成するサーバは、Amazon上の閉じられたネットワークに配置されます。
・ネットワーク構成に関して、VPCの理解が必須です。
以下のサイトの内容をよく読みましょう。これで概念がわかってもらえると思います。
-------------
Virtual Private Cloud (VPC) は、AWS アカウント専用の仮想ネットワークです。VPC は、AWS クラウドの他の仮想ネットワークから論理的に切り離されており、AWS のリソース(例えば Amazon EC2 インスタンス)を VPC 内に起動できます。VPC の IP アドレス範囲を指定して、サブネットを追加し、セキュリティグループを関連付けて、ルートテーブルを設定できます。
-------------
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html

・もう少し詳しく説明します。
以下の画像を見てください。
まず、AWSの中に、ユーザのアカウントに紐づけられたVPCが
作成されます。Regionの中に入っています。
つまり、RegionごとにVPCが作成されます。ですから、北米
で作るサーバと日本で作るサーバは、別のVPC上に作成されます。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/images/default-vpc-diagram.png
・VPCの中で、サーバを構築します。内部からアクセスするプライベートIPアドレスとグローバルIPアドレスが割り当てられます。
IPアドレスは表示されますので、公開サーバとしてアクセスしたい場合は、そのグローバルIPアドレス(またはFQDN)にアクセスします。
※ifconfigで見ると、eth0しかありません。なので、両者は同一のIFであり、グローバルIPアドレスにNATされています。
・確認のため、VPCを見てみましょう。
https://console.aws.amazon.com/vpc/
・ネットワーク(サブネット)も、適宜作成されます。

(3)サーバの構築
前置きが長くなりましたが、サーバを構築してみましょう。
①EC2のダッシュボードを開く
これが、サーバの構築です。
どこのリージョンかを選択した上で、「サービス」
>「コンピューティング」>「EC2」を選択します。

②インスタンスの作成

aws8
「インスタンスの作成」ボタンをクリック。
検索画面で「Windows」と入れれば、WindowsOSが出てきます。
Amazon Linux 2 AMIで作成しましょう。
ちなみに、Amazon Linux 2はCentOS7をベース、Amazon LinuxはCentOS6をベースにしています。

※AMIは、「Amazon マシンイメージ」のことです。

・無料枠の「Amazon Linux 2 AMI (HVM)」を選択します。
aws9


③インスタンスタイプの選択
T2が検証用には向いているでしょう。CPUやメモリによって
nano、microなどが変わりますが、microのt2.microを選びます。

④その他、詳細な設定を進めます。
まあ、デフォルトのままでもいいでしょう。

(⑤セキュリティグループ)
FWの機能が実現できる。
デフォルトでは、外からの通信はSSH以外は全て拒否、内からの通信は全て許可になっています。SSHを止めてしまうと、このサーバに接続できなくなってしまいます。

⑥キーペアの作成
適当に名を付けて作成します。
また、自分がSSHで接続するには必要なので、このキーをファイルとして保存します。
aws10


⑦「インスタンスの作成」
ボタンを押して、作成します。
エラーが出て止まる。
Your request for accessing resources in this region is being validated, and you will not be able to launch additional resources in this region until the validation is complete. We will notify you by email once your request has been validated. While normally resolved within minutes, please allow up to 4 hours for this process to complete. If the issue still persists, please let us know by writing to aws-verification@amazon.com for further assistance.

→しばらくすると接続できます。

(5)SSHでの接続
AWSのコンソール画面から接続する方法があります。
※おそらく、この場合はコンソールにログインしているので、さきほどのキーは不要です。

TeraTermなどの通常のSSHで接続する方法を紹介します。
①TeraTermの起動
②接続先として、作成したインスタンス(サーバ)のグローバルIPアドレスに接続します。
③ユーザ名はec2-user (※デフォルトで作成されているユーザです)、パスワードを入れる必要はありません。RSA/DSA/ECDSA/ED25519鍵を使うのところで、先ほどの秘密鍵を入れて接続します。
aws11
★デフォルトのec2-userは変更すべきという考えもあるので、そこは必要に応じて変更する
④Linuxのコマンドプロンプトが表示されれば、接続成功です。

(6)AWS上での操作
基本的にCentOS7なので、CentOS7のコマンドが実行できます。
管理者権限になるには
sudo su - (sudo -iの方が簡単 )
※ec2-userはsudo権限が有効になっている。普通に su - でrootになろうとすると、rootのパスワードが求められる。

(7)使わないインスタンスは停止しておこう
インスタンスを選択し、「アクション」>「インスタンスの状態」>「停止」で停止します。無駄な料金が
発生しませんし、このサーバには誰もアクセスできません。

(8)作成したインスタンスの削除(サーバの削除)
インスタンスを選択し、「アクション」>「インスタンスの状態」>「終了」で削除します。すぐには消えないかも。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/terminating-instances.html#termination-overview

(9)その他:トラブルシュートなど
・トラブル系
EC2のWebコンソールで、文字入力ができない場合、IMEが日本語「かな」になっていないか確認

■Webサーバの構築
①インスタンスにもよるが、デフォルトではWebサーバ(httpd)は入っていないと思う。
②yumでインストールしましょう。
http://sm.seeeko.com/archives/15877187.html
③サービスを起動します。
④セキュリティグループでHTTPを許可します。
 インスタンスのセキュリティグループを開き、インバウンドとしてHTTPを許可します。
⑤該当サーバのグローバルIPアドレスにアクセスすれば、Apacheのトップページが見えるはずです。
⑥必要に応じてコンテンツを変更しましょう。
たとえば、/var/www/html 配下にindex.htmlファイルを作り、「Hello!」とでも入力すると、それが表示されます。
※参考
サーバのiptableは使う必要が無い。(効いていないので、全通しだと思われる)。
2重管理の必要はないので、わかりやすいセキュリティグループだけで管理すればいいだろう。

■AWSをインストール直後に、Webサーバを立ち上げ、index.htmlを作るまで
以下、コピペで行けると思います。
#ユーザをrootに切替
sudo -i
#ソフトウェアのUpdate
yum update -y
#apacheのインストール
yum -y install httpd
#apacheのサービスを開始
systemctl start httpd
#apacheのサービス状態を確認
systemctl status httpd
#apacheのサービスを自動起動にする
systemctl enable httpd
cd /var/www/html
#初期ファイルの作成(中身はhelloのみ)
echo hello>index.html

■AWSのタイムゾーン
タイムゾーンを日本にする。
設定ファイルをみてみよう。

/etc/sysconfig/clock
ZONE="UTC"
UTC=true

なので、ZONE="Japan"にする
https://warpbutton.com/blog/tips/709/
流し込むなら以下。

date
cp /etc/sysconfig/clock /etc/sysconfig/clock.org
sed -i /etc/sysconfig/clock \
-e "/ZONE=\"UTC\"/a ZONE=\"Japan\"" \
-e "/^ZONE/ s/^/#/"
cat /etc/sysconfig/clock
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
reboot

※sedでファイルを操作する。
・-i 上書き保存、-eで複数の変換ができる。
・aをつけると、指定した行の後ろに追加(add)できる。
・^は行の先頭という意味
・\はエスケープ
・-e "/^ZONE/ s/^/#/" \ のところは、先頭に#を入れるだけなので、全部書く必要はないので、先頭のZONEだけにした。

TeraTermで接続するといいでしょう。
以下の記事の(5)SSHでの接続 です。
http://sm.seeeko.com/archives/18733856.html

接続した後は、TeraTermの画面の「ファイル」>「SSH SCP」を開き
From にWindows上のファイルを指定し、ToにAWSのLinux上パスを指定します。
そして、「Send」を押すだけです。

※デフォルトのままだと、/home/ec2-user/ のフォルダにUploadされることでしょう。

※残念ながら、フォルダごとのUploadはできません。なので、やる場合は圧縮が必要です(※未実施)

■1.方針
AWSのLightsailを使う。
以下を参考にした。
https://briarpatch.co.jp/wordpress-aws

以下のAWSのサイトにも、Lightsailが便利だと記載されている。
https://aws.amazon.com/jp/getting-started/tutorials/launch-a-wordpress-website/

(2)費用
AWSのLightsailは、サーバスペックにもよるが、最小で月額3.5ドル。初回1ヶ月は無料。AWSの料金とは別に3.5ドルではなく、込みの値段だと思っている(が、真実は不明)

■2.作り方
①AWSにログイン

②検索画面でLightsailと入力
または、コンピューティングのEC2のすぐ下にあるはず。

③設定画面
・日本語を選択
・インスタンスの作成
 →日本(東京)、Linux、アプリ+OS、Wordpress (※Multisiteではない方)
・料金プラン(インスタンスプラン)は3.5ドル/月を選択
・インスタンス名をつける「-SS」と付けた
・「インスタンスを作成」ボタンでインスタンスが作成
できた →超簡単だ!!

④起動
・作成したインスタンスをクリックする。
・パブリック IP が表示されていて、そこにアクセス
すれば、デフォルトのページが表示される。
 →IPアドレスは変わらないはずだ。インスタンスを落としても変わらないのか、試してみよう。→停止するとIPアドレスが変わる。なので、基本的には停止しないようにする必要がある。
・SSHで接続すれば、接続できる。
→なぜかコマンドが入力できない。
※一つ前のインスタンスの画面で「…」から「接続」
を押したらうまくいった。
・以下でPWを表示 (rootにはならないこと)
$ cat bitnami_application_password

⑤WPへログイン
http://パブリック_IP/wp-admin

ここで、ユーザ名は「user」、先ほどのPWを入力すればログインできる。
めちゃくちゃ簡単だ。すごい!!

■WordpressでHP作成
①WPへログイン
先と同様の方法でログインする

②とりあえず、UpdatesですべてUpdateしておいた。
精査はしていない。

③「Settings」でSiteLanguageを「日本語」に。タイムゾーンなども変更

④タイトルの変更
HPのタイトルや説明などを記載する

⑤テーマを選ぼう
「外観」「テーマ」から「テーマを追加」
検索窓で「lightning」を入れて実行
「インストール」→「有効化」をする

これで、なんとなくHPらしくなる。

■独自ドメインの設定
①ドメインの取得
②DNSの設定で、AWSのIPアドレスと、FQDNを対応させる。
ちなみに、私は以下を使っている。
https://www.value-domain.com/

■Wordpress
habakiriをつかってみた。
habikriに関しては、以下が詳しい
https://mominoco.com/habakiri3/

・右下のロゴを消す
https://qiita.com/MosamosaPoodle/items/24ae64627820e557790b

・CSS
外観>テーマエディター 追加CSS から変えられる。

・上の管理バーを消す
ユーザー>あなたのプロフィール
から設定できる。
サイトを見るときにツールバーを表示するのチェックを
外す

・地図を埋め込むこともGoogleマップから簡単に行える
Googleの地図を埋め込むのはとても簡単。まず、住所を入れてGoogleで地図を表示します。
そして、左側にある「共有」を押して、「地図を埋め込む」というタブのHTMLをサイトに貼るだけです。

・問い合わせフォーム
メールが送信できるように事前にWP Mail SMTPのプラグインを入れておく
作り方などは、以下あたりを参考にした
https://newstd.net/user_manual/mwwpform
https://xn--t8jc2c0hs41uof6d.com/responsive-inquiry-form/

・下のバーにある「Habakiri theme by モンキーレンチ Powered by WordPress」を消させていただく。
AWSのlightsailを使っているので、AWSのコンソールから接続。
なぜか、コマンドがうまく入らない。右下のドキュメントっぽいアイコンを押して、何か入力してからカーソルに戻ると、入力できた。対処療法でしかないが…。もしかすると、全角になっていただけかも。
sudo -i でsuの権限にする。
/opt/bitnami/apps/wordpress/htdocs/wp-content/themes/habakiri/modules/copyright.php から編集します。
以下にあるように、ソースをゴッソリ入れ替え
https://mominoco.com/habakiri3/
?>が無かったので、足してみた。

・テンプレート
私は、メニューページが無いものにしたかった。そこで、固定ページのテンプレートを「サイドバー無し」というのにした。
https://habakiri.2inc.org/demo/habakiri-coco/?page_id=2179
設定は、固定ページのクイック編集からできる。

■バックアップ
Lightsailの場合、スナップショットがいいだろう。
価格も安い。月額 0.05 USD/GB が適用されるので、
20Gの場合、月1ドル。
https://aws.amazon.com/jp/lightsail/faq/
また、Wordpress上でバックアップを取ってもいいかもね。
BackWPupのプラグインを使おう
https://saruwakakun.com/html-css/wordpress/backup
プラグインをインストールし、
ジョブを新規で作成。
デフォルトのままで、宛先は「ファイル」にして保存し、「今すぐ実行」
「ジョブ・ログをチェック」ではなく、「作成した
ジョブを実行」から、右の方で「ダウンロード」
そして、該当するファイル(恐らくZIP)をダウンロードする。

■その他
Wordpressで、目次は自動で作成してくれるプラグインがあるようだ。これが便利かも
https://ferret-plus.com/13648

テーマのお薦めが紹介されていた。
https://ruimaeda.com/wordpress-theme/

AWSのサーバをSSL化する
Let'enryptを入れ、証明書を発行、証明書を入れて、PCからHTTPSで通信できるまでの手順。3か月後に自動更新
※AWSのCentOS7であるが、ちょっとだけややこしい。

ドメインはmomiji.pw
サーバは、https://www.momiji.pw とする。

例えば、手順は以下
https://qiita.com/takahiko/items/a08895550727b95b6c36

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto

だが、証明書を発行しようとすると、AWSのEC2特有の事情によるエラーがでる。※だが、lightsailの方はエラーにならなかった。

certbot-auto certonly --webroot -w /var/www/html -d momiji.pw --email hoge@momiji.pw

Sorry, I don't know how to bootstrap Certbot on your operating system!
・・・

そこで、以下URLの「2. certbot-autoを書き換える」
の部分を以下で進める。インストールされた場所は/home/bin かな?

https://qiita.com/MysteriousMonkey/items/f26316447c1ff390ce21

 elif grep -i "Amazon Linux" /etc/issue > /dev/null 2>&1 || \
   grep 'cpe:.*:amazon_linux:2' /etc/os-release > /dev/null 2>&1; then
  Bootstrap() {
    ExperimentalBootstrap "Amazon Linux" BootstrapRpmCommon
  }
  BOOTSTRAP_VERSION="BootstrapRpmCommon $BOOTSTRAP_RPM_COMMON_VERSION"

※syntaxエラーがでて面倒だった。古いのをコメントアウトではなく消したら
うまくいった。コメントアウトを#ではなく/にしたのが間違っていたのかもしれない。

再度実行

certbot-auto certonly --webroot -w /var/www/html -d momiji.pw --email hoge@momiji.pw --debug
※説明は以下
https://qiita.com/sayama0402/items/011644191dfdbde9c646
※最後の--debug がないと怒られる。

★★-d momiji.pw にすると、https://momiji.pwはOKだが、https://www.momiji.pwはダメ。 -d www.momiji.pw と指定する必要がある。
※ワイルドカードに本当はしたいよね。

途中でメッセージが出る
(agree、noでいったん進む。→完了

成功したようなメッセージ(Congratulation)がでる。
サーバ証明書と秘密鍵は以下に入っているようだ。

 /etc/letsencrypt/live/momiji.pw/cert.pem
 /etc/letsencrypt/live/momiji.pw/privkey.pem

また、同じフォルダにchain.pemも入っている。→これは不要な気がする

・mod_sslをインストール

# yum install mod24_ssl

・設定ファイル(ssl.conf)の設定
上記のパスを記載する。
https://qiita.com/sayama0402/items/011644191dfdbde9c646

#systemctl restart httpd

エラーが出る場合は、以下のコマンドで設定ファイルのテスト

#service httpd configtest

■AWSのLightsailの場合
以下でできるみたい。それと、wwwとwwwなしドメインの両方でいけるようだ。

基本的に以下のサイトの通りで成功する。すごい。
https://qiita.com/yshishido/items/67c57b9faafbda07da81

cd /tmp
curl -s https://api.github.com/repositories/37038121/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -
tar xf lego_v3.3.0_linux_amd64.tar.gz ←バージョンはタブで押せばダウンロードしたものが自動で表示される。
sudo mv lego /usr/local/bin/lego
sudo /opt/bitnami/ctlscript.sh stop

sudo lego --email="{メールアドレス}" --domains="{ドメイン}" --path="/etc/lego" --tls run

--domains="example.com" --domains="www.example.com" の2つを実行

Do you accept the TOS? Y/n
でyと答える。

sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
sudo ln -s /etc/lego/certificates/{ドメイン名}.key /opt/bitnami/apache2/conf/server.key
sudo ln -s /etc/lego/certificates/{ドメイン名}.crt /opt/bitnami/apache2/conf/server.crt
sudo chown root:root /opt/bitnami/apache2/conf/server*
sudo chmod 600 /opt/bitnami/apache2/conf/server*

sudo /opt/bitnami/ctlscript.sh start

■SSLへのリダイレクト
Googleの検索エンジンでもHTTPSが優先されるし、ChromeではHTTPのサイトは警告がでる。
なので、HTTPで通信してきた場合はHTTPSに強制的にリダイレクトされるようにしよう。
以下のサイトの通りにやればできた。
https://www.karelie.net/aws-lightsail-build-wordpress-ssl/#https

/opt/bitnami/apache2/conf/bitnami/bitnami.confに関して、以下の3行を追加する。
 
9行目あたりの以下の下に
DocumentRoot “/opt/bitnami/apache2/htdocs”
以下を追加
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://example.com/$1 [R,L]

Apacheの再起動 →restart httpdは動かなかった。
/opt/bitnami/ctlscript.sh restart apache

■■AWSのSSL
証明書の有効期限は、実際にページにアクセスしてみて、証明書をみたらいいだろう。
証明書の有効期限を見ると、ちょうど3か月後になっている。

以下のサイトの通り
https://qiita.com/yshishido/items/67c57b9faafbda07da81

実行するのは以下の3行
sudo /opt/bitnami/ctlscript.sh stop
sudo lego --email="xxx" --domains="seeeko.com" --domains="www.seeeko.com" --path="/etc/lego" --tls renew
sudo /opt/bitnami/ctlscript.sh start

少し補足
・ sudo /opt/bitnami/ctlscript.sh stop
→3行くらいでて、サービスが止まることが分かる
・sudo lego --email="xxx" --domains="seeeko.com" --domains="www.seeeko.com" --path="/etc/lego" --tls renew
→メールアドレスは、全体と同じにする必要がある。忘れたら、grepででも探せばいいだろう。それと、--tlsが無いと、怒られた。

無事に起動したら、サイトで証明書を確認するのが確実だ。

また、うまくいかなかったら legoコマンドで最後をrenewではなくrevokeにすると、廃棄できるはず。

先のサイトのとおり、Cronにしてみた。自動実行が楽である。
/etc/lego/renew-certificate.sh
#!/bin/bash

sudo /opt/bitnami/ctlscript.sh stop
sudo lego --email="xxxx" --domains="seeeko.com" --domains="www.seeeko.com" --path="/etc/lego" --tls renew
sudo /opt/bitnami/ctlscript.sh start

★注意点は、AWSの場合は、crondではなく、cron

systemctl status cronをみると、動いていることがわかる。

また、書き方にはいろいろあるが、以下が参考になった。/etc/cron.d/にファイルをおきましょう。
http://thoames.hatenadiary.jp/entry/2018/12/30/101021

/etc/cron.d/にファイルを作る。そうすると、実行される
/etc/cron.d/cert_month

0 0 1 * *       root    /etc/lego/abc.sh

※うまく動くか、さてどうだろうか。

(1)概念
サーバを公開する場合は特に難しくないだろう。自動でインターネットに接続できるからだ。
一方、企業ネットワークとしてAWSを活用し、たとえばWorkspacesを使ってPCや社内SVを配置する場合を考える。この場合、社内からインターネットは許可するが、社外からインターネットは拒否する。この設定が、考え方を含めて少し複雑。
 ・サーバの場合は、インスタンスにパブリックIPアドレスを割り当てていた。なので、直接インターネットに出ることができる。→でも、企業LANの場合は違うよね。PC単位でグローバルIPアドレスは割り当てない。
 ・PCの場合は、ネットワーク(VPC)の出口にFWがあり、その1つのグローバルIPアドレスからインターネットに出る。
 ・そのために、NATゲートウェイが必要。NATゲートウェイは、NAPTをする装置。※プラス、インターネットGWも必要。これは、インターネットの出口でIPを1対1でNATする。(個人的にはNATしなくてもいいと思うのだが、そういう仕様のようだ)
 ・構成としては、以下がわかりやすい。
https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/
 ・セグメントとしては、プライベートサブネットに加えて、パブリックサブネットが必要。通常のLANでは不要なので、この辺がわかりにくい。1つにしようとやってみたが、ダメだった。(仕様としてできないらしい)
 ダメだった構成はこんな感じ。パブリックサブネットとプライベートサブネットを1つにし、その中にNAT-GWとiGWを混在させる。
vpc

・正しい姿は、パブリックサブネットにNATゲートウェイを配置する。プライベートサブネットはNATゲートウェイにルーティングを向ける。このとき、NATゲートウェイにはElasticIPなどにより、パブリックIPアドレスが必要。パブリックサブネットは、インターネットGWにルーティングを向ける。

こんな感じ
aws

(2)設定方法
以下がわかりやすいだろう。
https://qiita.com/TK1989/items/5d9bd5d49708c02dff3f

(3)質問形式で。
まず、解説として以下がある。
https://blog.putise.com/aws-nat%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%80%82%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83/

Q.上記のPublicSubnetのサーバは、パブリックIPじゃなくていいんですよね?
A.AWSのインスタンスなので、プライベートIPアドレスを持つ。しかし、インターネットに接続したいのであれば、パブリックIPアドレスを割り当てる必要がある。※Publicサブネットの中にNAT-GWを入れて、そこにパブリックIPアドレスを割当ててもダメ。

Q.PublicSubnetとPrivateSubnetの違いは?どこで設定する?
A.グローバルIPアドレス(=パブリックIP)を持つか、インターネットゲートウェイ(IGW)やNAT-GWを持つたせればPublicSubnetになる

Q.1つ目の図にある、PublicSubnetのInstanceはインターネットに出られますか?
A.パブリックIPを割り当てれば可能。

Q.NATインスタンスとNATゲートウェイがある?
A.そのようだ。詳しくは以下。

Q.インターネットGWとNATゲートウェイの違いは?
以下がとてもわかりやすい。
https://milestone-of-se.nesuke.com/sv-advanced/aws/internet-nat-gateway/

■EC2のインスタンスを違うリージョンにコピーする
AMIを作成し、それを違うリージョンにコピーする
https://beyondjapan.com/blog/2017/12/ami-copy-other-region/
コピーしたAMIから、EC2のインスタンスを起動する
※画面は、AMIの画面から行える。
コピーが終わると、インスタンスのところに表示される。

■AWSでLANを作る
同じVPCの中であれば、プライベートIPアドレス同士でpingが通る。(※もちろん、セキュリティグループでICMPの許可は必要)

■AWSで
複数IPの割当
https://recipe.kc-cloud.jp/archives/6513

■AWSのイメージのバックアップ
AMIかスナップショットのどちらか。
まあ、AMIでいいと思います。
https://mussyu1204.myhome.cx/wordpress/it/?p=739
EC2の画面から該当するインスタンスを選び
アクション>イメージ>イメージの作成

■AWSのrootとec2-userのパスワード
①root
以下をみてもらうとわかるように、PWがありません。
# cat /etc/shadow | grep root
root:*LOCK*:14600::::::

②ec2-user
以下のように!があるので、アカウントロックされた状態です。
# ec2-user:!!:1836・・・
※また、以下を見ると、PasswordAuthentication no なっていて、パスワード認証はできなくなっています。
/etc/ssh/sshd_config

■インスタンスのタイプを変更する。
たとえば、メモリ容量が小さいので、もっと大きいのに変更する。 ※ユーザがあふれて重くなったら、容量を増やせるというのはとても便利だ
https://qiita.com/copei/items/bb09d61a53514e028260

■AWSの脆弱性検査
AWSにはAmazon Inspectorなるものがあり、脆弱性を検査してくれる。ただ、内容はそれほど本格的では無いように感じた。基本はCVEかな。あとは、PWの文字数制限をかけているとか、・・・
https://www.wafcharm.com/blog/amazon-inspector-for-beginners/

■AWS Connect
コンタクトセンタ機能。コールセンタを電話のみとすると、コンタクトセンタは電話だけでなく、チャットも含めたコミュニケーション。
以下の解説がわかりやすい。
https://www.youtube.com/watch?v=Xo02vDxG9p0&feature=youtu.be

(1)仕組み
・電話番号はAWSから発行される。0800のフリーコール(顧客が無料)や050(顧客が負担)の番号。
・処理フローはGUIベースで作成できる。
・ソフトフォンを使うことが可能。→電話代はソフトフォンなので固定なのかもしれない。
・文字(テキスト)を入力すると、その内容を読み上げて応対してくれる。処理の振分け、○なら1、○○なら2という誘導もできる。
・もちろんユーザ管理ができる。AWSの他の機能との連携も可能。AIとも。
・音声の録音機能もある。文字起こしもある。
・コールセンタの機能は非常に多機能であるが、それらの本格的なシステムとの比較は別途必要かと思う。

■AWS Windowsサーバへの接続
(1)パスワードの取得
Linuxサーバの場合は、秘密鍵でSSH接続しました。
一方、Windowsサーバの場合は異なります。
以下にありますように、秘密鍵からAdminstratorのPWを入手します。
EC2の画面からインスタンスを指定し「アクション」>「Windowsパスワードの取得」
秘密鍵をUploadすると、AdministratorのPWを取得できる。

(2)接続
デフォルトでRDPが有効になっているので、RDP接続するとよいだろう。
コマンドプロンプトからmstscと入れて実行
・ユーザ名:administrator ※大文字小文字は区別しない。
・PW:上記で取得したPWを入力
https://dev.classmethod.jp/articles/first-login-to-ec2-windows/

(3)パスワード変更
ログイン後にPWは変更した方がいいだろう。
コマンドプロンプトを起動して、以下を実行。ただし、パスワードの複雑さを満たす必要がある。
net user Administrator "new_password"

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ec2-windows-passwords.html

(4)IEのセキュリティ設定の変更
IEのセキュリティ設定で、インターネットへのアクセスがほぼできない。これを直す。
Server Managerを開く(検索からいくといいと思う)
Local ServerからIE Enhanced Security Configurationで、[On] を変更する。まあ、とりあえずであればOFFで。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-windows-file-download-ie/

■AWSでセキュリティグループの変更
①セキュリティグループの変更
ネットワーク&セキュリティ>ネットワークインターフェース から該当するIF(基本はインスタンスのeth0)を選び、アクションからセキュリティグループの変更
②セキュリティグループの名前を変更
後からはできない。新規に作成して、割り当てを変えるしかない。
③Firewalldがenableになってしまっているので、それを直して、イメージにする
systemctl disable firewalld

■AWSと自社の接続
AWSでクラウドを利用するとしても、自社のサーバやPCが完全になくなるには時間がかかる。しらばらくはハイブリッドクラウドという形を取るだろう。
自社をAWSを接続するには、IPSecによるVPNと、 Direct connectがある。前者はインターネットVPN、後者は専用線である。

■AWSの多種多用なサービス
(1)よく利用されるもの
以下の3つだと思う。
①EC2
②RDS(データベース。EC2でDBを入れるよりもDBエンジンそのものの管理が不要で、管理が楽)
③ストレージS3(EC2に腹持ちするよりも価格面や可用性(冗長性)で優れる)

その他、AMIやVPCなど無料というか当たり前のものも使われる。それ以外には、用途によるが、ELB、Lambdaも多いだろう。

(2)AI機能というかツール
AIがするべき学習などを終えて、そのナレッジを提供してくれるサービスができあがっている
たとえば、AWSであれば、画像認識(Amazon Rekognition)
https://aws.amazon.com/jp/rekognition/
レコメンド(Amazon Personalize)
https://aws.amazon.com/jp/personalize/
チャットボット(Amazon Lex)
https://aws.amazon.com/jp/lex/
翻訳(Amazon Translate)
https://aws.amazon.com/jp/translate/
などのサービスを受けることができる。

(3)AWSとIoT
IoTを使って何かやろうとすると、IoT機器にモジュールやアプリを入れ、IoT機器とクラウドをWifiや5Gなどで接続し、クラウド上のAWSのサービスにデータを保存し、集めたデータを分析、活用する必要がある。
デバイスにIoT Device SDKsを入れて、サーバ側ではAWS IoT Coreで受け付けることができる。あとはAWS Lambdaなどと連携できる。

活用例として、ルンバのiRobotでも活用されている。
https://aws.amazon.com/jp/solutions/case-studies/irobot/

■AWSのClient VPN
リモート環境からAWSに接続する。もちろん認証を強化する必要があり、証明書認証は必須だと思う。
http://blog.serverworks.co.jp/tech/2019/06/10/awsclientvpn/
SSL-VPNシステムの代わりとしても使える。企業にリモートアクセス用のSSL-VPN装置を置かず、AWSにClient VPNで接続してもらう。AWSと企業はVPN接続する。
以下は、シオノギデジタルサイエンスの事例が紹介されている。
https://businessnetwork.jp/tabid/65/artid/7362/page/2/Default.aspx

■インスタンスのスクリーンショット
インスタンスを再起動しているとき、接続が切れているので、どういう状態になっているのか不安なときがある。
そんなときは、インスタンスを選択して「アクション」>インスタンスの設定>インスタンスのスクリーンショットの取得で、現在のスクリーンショットが見える。 
※この項目が表示される場合とされない場合があり、それが不思議。表示されなければ、もう一度インスタンスをチェックし、あらためてやりなおしてみよう

■エンドポイント
EC2インスタンスやRDSは、プライベートIP空間で利用する。(もちろんパブリックIPやElasticIPでグローバルからも接続は可能)
S3はパブリックから利用できるようになっていて、EC2インスタンスとS3をプライベートネットワーク経由で接続するには、エンドポイントを作る必要がある。

■EC2からyumのupdateができない
yum のupdateはAmazon Linux2のリポジトリにアクセスする必要がある。
これは、S3の中に入っている。
よって、エンドポイント経由でS3にアクセスできなければいけない。
エンドポイントがなければ、エンドポイントを作成するところから

①エンドポイントの作成
 サービスカテゴリ AWSサービス
 サービス名で.s3で検索

エンドポイントを作成したいVPCを選択。
同時にルートテーブルも選択する必要がある。

あとは、以下の手順だと思う。
https://qiita.com/polarbear08/items/4031e5f8e494e8cf3fee

→ただ、普通にインターネット経由でyumができると思う。
たとえば、ElasticIPを割り当てて、igwをきちんと設定すれば、yumができた。
このあたりはもう少し調査が必要

■Amazon CLI
https://gihyo.jp/admin/serial/01/awscli_diary/0001
まずはPCにAWS CLIのアプリケーションを入れるとこからスタートのようだ。

ダウンロードは以下の「Windows」のリンクから。
https://aws.amazon.com/jp/cli/

■AWSで動画配信
S3を使うとか、AWS CloudFrontを使う方法もあるが、単にEC2でもできる。
送信元IPアドレス制限はセキュリティグループでやればいいだろう。
①動画のアップロードは以下
http://sm.seeeko.com/archives/21206156.html
②HTML5の設定は以下
http://sm.seeeko.com/archives/23327887.html

■IAMによるユーザやロール、ポリシーの管理
これを使うと、複数人でAWSのインスタンスをセキュリティを保って管理ができる。
IAMユーザを作成し、IAMグループに所属させる。
IAMグループにはIAMポリシーを設定する。

1.S3とは
(1)基本
S3(Amazon Simple Storage Service)は、AWSのストレージサービス
もちろん、EC2インスタンスのディスク上にデータを貯めこんでもいいが、料金が圧倒的に安い。かつ、冗長性・信頼性なども確保されている。

(2)Static Web Hosting
本来はストレージだが、これを使うと激安で静的ページを作成、運用できる
https://blog.web.nifty.com/engineer/2401

2.EBSとの違い
EBS(Amazon Elastic Block Store)は、EC2のインスタンスが持つハードディスクと考えるといいだろう。ただし、EC2インスタンスとは切り離されているので、外付けハードディスクみたいな位置づけだろうか。
EBSは、1つのインスタンスにしか接続できない。

3.S3を使ってみる
(1)S3に動画をUPload
①S3にてバケットを作る
バケット名(S3でユニーク)だけを入れて、次へ。詳細な設定ができるが、2つ先のページの「パブリックアクセスをすべてブロック」を外した。こうしないと、公開できないようだ。 「バケットを作成」を押した。
②作成したバケット名をクリック
 ファイルをUPloadする
 ファイルをクリックし、「概要」タブで「公開する」を押す。
 下の方にURLがある。恐らく、バケット名+AWSのドメインになっている。これをクリックして開けるかを確認しよう。

(2)CloudFrontの設定
・AWSの管理画面でCloudFrontのページを開く
・Create Dsitributionを押す
・Webにある「Get Started」を押す
・Origin Domain Nameに作成したS3バケットを指定(自動で出てくる)して、右下の青いボタン「Create Dsitribution」をおす
・少し時間がかかるのでDeploydになるまで待つ。
以下のように、クラウドフロントのドメインからアクセスできるようになる。
d2hw1td8poatv0.cloudfront.net/get1.mp4
ただし、動画がダウンロードできてしまう。

https://qiita.com/NaokiIshimura/items/46994e67b712831c3016
http://www.dcom-web.co.jp/lab/cloud/aws/serverless_video_streaming_delivery_using_cloudfront_and_s3

★S3 の Static Website Hostingでも動画配信は可能。ただ、やりたいことは、ダウンロード禁止だが、どうやら難しそうだ。

■AWSのLinux(Ubuntu)にGUIでアクセスする

AWSのLinux(Ubuntu)にデスクトップ環境を作り、WindowsのxrdpでGUIでアクセスする

CentOSだといろいろ大変だった。(後述)

Ubuntuの場合は、ハードルが低い。たとえば、以下でできる。
https://qiita.com/osugizmo/items/21578272ae2db05ab001

#ユーザ(user1)を作る
adduser user1
#デスクトップ環境のインストール ※すごく時間がかかる。
sudo apt -y install ubuntu-desktop

動かすだけなら、上記URLにあるxsessionファイルの作成などは不要だと思う。EOFのところが、終わり方がわからなかった。
ただ、GUIがとても重い。インスタンスタイプを大きくしないとしんどいと思う。


■以下はメモ。途中で挫折というか、あきらめた
AWSのLinux(CENTOS系)にGUIでアクセスする

①デスクトップ環境 MATEを入れる 
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-linux-2-install-gui/

※本当はGNOME Desktopを入れたかったが、入らなかった
sudo amazon-linux-extras install mate-desktop1.x
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'

②ユーザを作る
以下にあるxrdpの設定を行う。
https://qiita.com/yamada-hakase/items/a8efe626f598c5eb6f8c

③接続する
上記で作ったユーザのIDとPWを入れればログインできる

④日本語化
以下でできる?
https://dev.classmethod.jp/articles/amazon-linux-2-desktop-mate/
→ログアウトしてログインしたら日本語化された。すごい。

⑤ブラウザを入れるのは難しい
以下の後半に書いてあるけど、手順が少し複雑そうだ。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-linux-2-install-gui/

■まずは用語の確認
(1)ロケーションなど
・リージョン:日本だと東京と大阪(2021までは部分的)。
 + VPC:
  + AZ(アベイラビリティゾーン):リージョンの中のDC群の集まり
   + サブネット
    + EC2インスタンス:仮想サーバ

以下のサイトがわかりやすい
https://avinton.com/academy/aws/

(2)ネットワーク
・IPアドレスには、ElasticIP、パブリックIP、プライベートIPがある。パブリックIPは再起動するたびにIPアドレスが変わる。
・ネットワークインターフェースはENI(Elastic Network Interface)。

■AWSでは、基本的な構成は決まっている。
・出口はIGW(インターネットゲートウェイ)
・VPCの中にAZを2つ作る。(冗長化)
・PublicセグメントとPrivateセグメントに分ける(サブネットで)
・インターネットに接続するには、NAT-GWをそれぞれのAZに配置
・Workspaceなどは、両方のAZに足を出す。(これは必須)。
・企業に接続する場合は、VPN-GWで接続する
・必要に応じてELBでロードバランスする

いくつかのサイトがあるが、どこでも似たような構成図を描いている。
https://avinton.com/academy/aws/
https://www.ntt-tx.co.jp/column/dojo_aws_blog/20171017/


▼サブネット間の通信
AWSでは、サブネット間の通信がデフォルトでは通信可能。サブネットでACLを使うにはNACL

■パブリックIPの割り当て
インスタンス作成時にVPCやサブネットを選択するが、そのときに「自動割り当てパブリック IP」を有効にする。
こうしないと、インターネットからこのインスタンスに接続できない。
ただ、あとからElasticIPを割り当てることは可能。あとからパブリックIPを付与できるかは要調査。

公開サーバに、ドメイン名でアクセスできるようにする。

■Route 53について
Route 53というサービスがあり、ドメインの取得とDNSサーバが運用できる。
他で取得したドメインでも使えるはず。
https://qiita.com/Yuki_BB3/items/effdf1bb38263bfef82a
ただ、別のこの機能を使わなくてもElastic IPアドレスと他のDNSサービスで
取得したドメインおよびドメインの設定で問題ないと思う

■ドメインの取得
まずは、ドメインを取得しよう
momiji.pw

■Elastic IP
(1)概要
Elastic IPアドレスを取得して、固定的にIPアドレスを使う。
使わなくなったり、EC2が実行中でない場合には課金される。
→使わなくなったら、廃止しましょう。
※Elasticとは、弾力がある、という意味

どんな利点があるかというと、サーバを再起動したりしてもIPアドレスが変わらない。
また、IPアドレスを取得しておくと、その割り当てを柔軟に変更できる。途中でインスタンスを変更することも可能。便利だ。

(2)設定
・EC2のメニューの左メニュー、「ネットワーク&セキュリティ」>Elastic IP
「Elastic IPアドレスの割り当て」
・2つの選択肢から、「Amazon の IPv4 アドレスプール」を選択して「割り当て」
すると、パブリックIPアドレス(=グローバルIPアドレス)が割り当てられる
→このIPをメモしておこう18.177.177.50
・次に、割り当てたパブリックIPアドレスをEC2のインスタンスに割り当てる。「Elastic IPアドレスの関連付け」ボタンを押す。「インスタンス」を選択、該当するインスタンスを適用する→関連付けるをクリック
・EC2のインスタンスで、先ほど割り当てたインスタンスに、Elastic IPが割り当てられているかを確認する
※Elastic IPアドレスもリージョン単位で管理されている。

(2)-2 解放するには
該当する「Elastic IP」をクリックで選択して、「Elastic IP アドレスの関連付け解除」
これにより、インスタンスに割り当てられていたIPアドレスが元に戻る
・また、該当する「Elastic IP」をチェックボックスを入れて選択、「アクション」
から「Elastic IPの解放」。これで、Elastic IPが完全に開放された。

(3)DNSの設定
ドメインを取得したDNSレジストラで、Aレコードを設定
a www 203.0.113.124 ←Elastic IPアドレス

(4)試してみる
きちんと、取得したドメインでWebサーバにアクセスできた

(5)メモ Route 53を使わずに実施できたのだが、Route 53のメモ。
ホストゾーンの作成というのがあるが、これが何をしているのか、よくわからない。
ホストゾーンの作成を行わずにうまくいけた気がする。気のせいか。
参考であるが、ホストゾーンの作成は以下。
AWSにて、サービス>ネットワーキングとコンテンツ配信>Route 53
選択するメニューらしきが出たら「ドメインの登録」でいいと思う
左のメニューから、「ホストゾーン」「ホストゾーンの作成」をクリックする
「ドメイン名」を入れる。「作成」ボタンを押す

(1)Amazon Workspacesの概要
AWSが提供するVDI環境。
料金は月単位か時間単位で選べる。月の場合、導入時は日割り。ただ、途中解約でも月末までの費用であるはずだ。
以下の説明がわかりやすい。
https://www.youtube.com/watch?v=5h5mT1dabgg&feature=youtu.be

説明資料
https://d1.awsstatic.com/webinars/jp/pdf/services/20190226_AWS-BlackBelt_Amazon_WorkSpaces.pdf
https://pages.awscloud.com/rs/112-TZM-766/images/TOKAI_20190614.pdf

・Johnson-johnsonやFacebookなどでは大規模にWorkspacesを使っている。安いし、すぐに構築できるし、いつでも止められるし、固定資産を持たなくていいし、拡張も簡単で、最初にサイジング設計も不要。まあ、便利だと思います。
・インターネット直結なので、PCからのインターネットがかなり早いらしい。

(2)認証に関して
・インターネットからAWSの認証Gatewayに。そこからAD Connector(ADをProxyするようなもの)に接続し、社内のADと連携できる。AD Connectorに関しては後述。
・高速セットアップだと、SimpleADで認証基盤が作成される。
・閉域接続も可能。
・認証はMFAによるOTPなどの二要素に対応。ハードウェアトークン、ソフトウェアトークンでもログイン可能。SMS認証は準備中かな。また、クライアント証明書による認証も可能。生体認証はWorkspacesの機能ではできなかったはず。
・VDIのサーバは、WindowsSever2016。アプリをインストールする際には、OSの依存がある。
・PCoIPというプロトコルで画面転送。帯域幅は300kbps~ →今後はクラウド専用のWSP(Workspaces Streaming Protocol)を使うのかな?
・Officeはオプションで利用できる。15ドル/月。BYOL(ライセンスの持込)も可能
・ソフトをインストールしたものをまとめてイメージにすることも可能。
・ログインはAWSのクライアントツールからのログインも可能。
・ChromeBookをシンクラ端末としても使える。基本的には、PCoIPができれば利用できるような気がする。

(3)設定方法
詳細なマニュアルは以下
https://docs.aws.amazon.com/ja_jp/workspaces/latest/adminguide/workspaces-ag.pdf

https://www.ipentec.com/document/amazon-aws-create-amazon-workspaces

・・・作ってみよう
・リージョンは東京を選ぶ。そうしないと、日本語OSが出てこない。しかし、東京リージョンよりバージニア北部などの方が少し安い。
・AWSの検索窓でworkspaceと入力
・とりあえず作ってしまおう。初回は高速セットアップが可能。だが、2回目は出てくれないのが残念。以下に簡易な情報がある。
http://c.itdo.jp/technical-information/aws-cloud/amazon-workspaces/
①ディレクトリの選択 → 新しいディレクトリの作成
 ディレクトリは複数選べるが、まずはAWSのローカルに簡易な認証サーバを建てよう。なので、SimpleADを選ぶ。AD連携もできるはずだが、とりあずはしなかった。
 ・組織名:一意の名をつける必要がある。test12345とか、適切につける。
 ・ディレクトリのDNS名はドメイン名 test.local など
  VPCやサブネットを選択
  ステータスが Requested →どうやら少し時間がかかるようだ。Creatingを経てActive どうだろう。5~10分くらいってとこかな。
・その後、作成したディレクトリを選んで「アクション」>「登録」をする。ここで、VPCのサブネットの選択や、Workdocsを使うかなどを選べる。
#ディレクトリの詳細設定について
 ・ディレクトリで、アクション>詳細の更新 にて、アクセス制御のオプションに、クライアントの証明書認証などが設定できる。
 ・SimpleADにIPアドレスを割り当てることもできる(はず)
 ・「インターネットへのアクセス」において、無効化すると、インターネットには出られないようにもできる。※タイミングの関係で、すぐには反応しないときがあった。が、しばらくすると、出られなくなった。LANとして認識させ、VPC内にあるWorkspaceもサーバ群もすべて同一のインターネットの出口にするには、VPCにNAT-GWの設定をして、パブリックIPを割当て、インターネットに接続させる必要がある。
②Workspaces の起動 を押す
 ディレクトリは作成したものを使う。
 セルフサービスアクセス許可の有効化 →WorkSpaces の再構築と、ボリュームサイズ、コンピューティングタイプ、実行モードの変更をユーザーに許可。普通はNoかな
 Amazon WorkDocs の有効化 →結構便利なので、Yesにした
③ユーザを追加する →SimpleADに追加されるはず
 ユーザを作成するが、そのときにメールアドレスを入れる。Workspacesができるとそこに連絡がいくので、メールアドレスは間違えないように。
あとから招待状を再度送ることも可能。Workspaceを開き、該当ユーザに「アクション」「ユーザの招待」。
 バンドルを選ぶ。 日本語にしておこう
 無料枠のAutoStopを使う
④招待状が届くのでWorkspaceをたちあげる
 まず、ユーザのPWを更新する

⑤Windowsの画面が立ち上がる。
 便利だ。

【ユーザの処理】
・AWSから送られてくる招待状のURLにアクセス。
・PW(複雑さを満たす)を入れて、ログイン。
・WorkspaceConsoleをダウンロートする。対応OSは、MACやiOSもある。ただし、iPhoneはダメだった。
・登録コードを入力し、その後、ユーザ名とPWを入れて接続
・VPCの中にPCが接続されている。インターネットにも接続が可能。
※VPCに関しては、ディレクトリをみれば分かる
・IPアドレスをみると、172.16.のプライベートと、198.のグローバルが割り振られている。グローバルはWorkspaceを接続するためのもの。
※それと、Windows2016サーバで設定されているので、IEのセキュリティ強化が入っている。
それを外したいけど、サーバそのものの設定はどこからいけるんだろう。→Firefoxが使いやすい。
イメージ作成はどうやってやるんだろう。

【サーバを構築してみよう】
・同じVPC内にEC2のサーバを立てればよい。ただ、VPCの中にあるので、外部から接続させようとするには工夫がいるだろう。
・とりあえず、ユーザのPCにTeratermを入れ、秘密鍵も入れ込んで、SSHで接続した。
・ただし、VPCの中のサーバは、そのままではインターネットに接続できなかった。→以下にも記載しているが、「送信元/送信先の変更チェック」を「無効」にすることは必須だと思う。→有効で接続できた。
http://www.viva-fortigate.com/archives/82723794-private.html
・とりあえずLinuxサーバだったので、デフォルトGWとDNSだけ、ローカルのPCと同じものを割り当てた。→たぶん違うね。そう、NWの設計を正しくする必要がある。正解は以下。
http://sm.seeeko.com/archives/23630828.html

(4)ファイル共有としてのWorkDocs
Workspaceを起動してデスクトップ端末にログインすると、Install Amazon WorkDocsというショートカットが表示されている。これをダブルクリックすると、自動でパスを作ってくれる。
D:\Users\user1\WorkDocs
よって、これでファイルサーバのアクセスは可能だ。ファイルを操作する場合には、基本的にはデスクトップにインストールされたアプリを使う。このとき、ファイルをロックして2重更新にならないようにすることも可能(便利だ)
それ以外には、メールと、社内システムにアクセスできれば、大半の業務ができることになるだろう。
workspaceを起動すると、自動でWorkDocsが割り当てられる。https://xxx.awsapps.com/workdocs/などの領域をファイルサーバとして管理するのであるが、xxxは利用企業ごとに異なる。AWSのコンソールにてWorkDocsをみると、自動作成された名前がわかるだろう。

(5)企業ネットワークと接続
VPNで接続する。FortigateとVPN接続する場合は、以下です。
http://www.viva-fortigate.com/archives/83234260.html

(6)雛形を作ってイメージ配信
・イメージの作成
 社員で共通の雛形を作り、その共通雛形を社員で共有することが多いであろう。まずはひな形を作成するために、WorkspacesでOSを起動したあと、作りたいようなソフトやファイルを設置する。
 WorkspacesのWorkspacesから作成した雛形となるWorkspacesを選択して、アクションからのイメージの作成(最大45分かかるとある)
※進捗は「イメージ」で該当イメージを開くと、進捗がたとえば35%などと表示される。
・バンドルの作成
 Workspaces>イメージ で作成したイメージを選択肢、アクションから「バンドルの作成」
 バンドルタイプを「バリュー」などを選び、説明も入れ(必須)、ボリュームサイズを必要なサイズ(たとえば10(G))を入れて、バンドルの作成
・イメージからユーザのWorkspacesの作成
 Workspacesで「Workspacesの起動」
 ディレクトリとして、作成したADを選択
 ユーザの特定にて、「検索」を押すと、ADのユーザを探してくれる。ユーザを選択して「選択項目を追加」→「次のステップ」
バンドルとして、下の方にある「Workspacesバンドルの割り当て」を選ぶ。作成した名前のバンドル名を選択しよう。
※実行モードのAutoStopなどは、すでに組み込まれているので選べなくなっている。

(7)その他もろもろ
・PCからWorkspaceのポータルにログインするときに「設定」から言語を日本語に変更できる。
・Workspacesにもセキュリティグループが存在する。pingなど、標準的な通信は許可されているが、OSのパーソナルファイアウォールではなく、セキュリティグループで設定することが推奨になっているはずだ。
・ログインするとVPCのIPアドレス以外に198.のIPアドレス(イーサネット0かな)がある。これは、VPCなどとは無関係のAWSの裏のネットワークにある管理IFで必須である。PCがWorkspaceに接続するのも、この裏ネットワークで接続する。(この裏口ネットワークにセキュリティの脆弱性があったら大変ですよね)
 以下のサイトのP24にアジア(東京)の場合は、198.19のIPアドレスが使われることが記載されている。https://docs.aws.amazon.com/ja_jp/workspaces/latest/adminguide/workspaces-ag.pdf
・キーボードが102になっているので日本語109に変更すべき
https://engineer.dena.com/posts/2020.01/aws-workspace/
・パッチの管理など(つまりWorkspacesのPCのパッチを一元的にバージョンアップするなど)は、Workspacesの機能ではなく、ADやWSUSなどの別の機能で実現する。
・NWについて補足
 インターネットに出るには、パブリックIPを割り当てなければいけない? →恐らくYes 
 でも、何もしなくても、Workspaceがインターネットに出ることができる。→ディレクトリの設定で、アクション>詳細の更新 「インターネットへのアクセス」において、有効化になっている。これにより、自動でパブリックIPが割り当てられているからインターネットに出ることができる。 無効にすればとりあえずは出られなくなる。 
 私の考えとしては、NAT-GWなどを設定して、ここの設定ではない(=AWSが用意してくれた裏口ではない)ところからインターネットに接続させることがあるべき姿かなあと。詳しくは以下。
http://sm.seeeko.com/archives/23630828.html

(7)AD Connector
AWSの認証を、既存のADサーバに連携することがよくあるだろう。設定はとても簡単である。解説は以下であるが、AD側では、ADサーバ側でユーザを作成し、権限の委譲を行う必要がある。以下のサイトの通りでできる。
AWS側の設定としては以下
・ディレクトリタイプ:AD Connector、スモール
・VPCとサブネット →このとき、AD Connectorは2つのAZ(サブネット)を選ばされる。WorkspacesのPCは2つのAZで均等に分散されて配置される。AD ConnectorのNIC(なのかサーバかは不明)の一方がダウンしても、別のAZにあるAD Connectorで動作する。冗長性が確保されていると言える。
・AD情報:ディレクトリのDNS名 ディレクトリの完全修飾ドメインとあるが、あくまでも「ディレクトリ」のFQDN。たとえば、ADサーバのドメインがexample.localで、サーバのホスト名がsrv1、このホストのFQDNがsrv1.example.localだったとしても、ここで入力するのは、example.local
→数分で完了する(エラーのときは1分もかからずエラーが表示される)
NETBIOS名は記入不要(今は使わないので)

https://dev.classmethod.jp/articles/try-active-directory-connector/  ←わかりやすい
https://dev.classmethod.jp/articles/try-workspaces-using-adconector/
https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/create_ad_connector.html
うまくいかない場合は、以下によるテスト方法があるが、ドメインレベルが2012だったりとか、テストする端末をADに参加させなければいけないなど、意外に面倒。手順通りにやれば、それほど失敗はしないだろう。
https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/prereq_connector.html

↑このページのトップヘ