何となくわかった気になる週刊AWS - 2021/9/6週

## はじめに

こんにちは、なじむです。
先週は別件で検証系のブログを書いていたら書く時間も気力もなくなっていました。。
というわけで今週は張り切ってやっていきましょう！AWS Japan さんがまとめている[週刊AWS](https://aws.amazon.com/jp/blogs/news/tag/%E9%80%B1%E5%88%8Aaws/)で確認した内容の自分用メモ。
今回は[9/6週](https://aws.amazon.com/jp/blogs/news/aws-weekly-20210906/)のアップデートです。

## 9/6(月)

米国がレイバー・デー (Labor Day) のため、この日は発表がありませんでした。
ちなみに、レイバー・デーは「労働者の日」という意味で毎年9月の第一月曜日と決まっているようです（Wikipediaより）
日本だと勤労感謝の日でしょうか（知らんけど）

## 9/7(火)

### [Cloud9 がさらに 2 つのリージョンで利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/cloud9-available-more-regions/)

ブラウザベースの IDE (integrated development environment, 統合開発環境) である Cloud9 が大阪リージョンでも利用可能になりました。ブラウザ上でコーディングやコードの実行等、様々なことができるので活用できるようになると開発が捗るかもしれません。

実際の画面は以下です。正常に作成できました。
![20210918_164225.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/4bfbad60-1093-2327-7ab5-621b87b190b7.jpeg)

~~正常に作成できたんですが、作成時に t2.micro を指定すると「大阪リージョンでは t2.micro をサポートしていないよ！」と怒られ作成できませんでした（EC2 の画面を見るとサポートしてるように見えるんだけどなぁ…）~~
エラーをよくみると「その AZ は対応してないよ！AZ-a を使ってね！」と書いてありました。AZ-a で再度試したところ、正常に構築できました。
なので先の構築した画面は t3.small で作成しています。ちなみに、Cloud9 は裏で CloudFormation が動いて環境を構築しているため、エラーの原因を見たいときは CloudFormation のスタックを参照してください。

- Cloud9 でのエラー画面
![20210918_163619.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/49ba54fb-6800-71f2-0aca-91152b91c730.jpeg)

- CloudFormation で確認したエラーの原因
![20210918_163602.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/90ec0900-a090-0766-b022-1a840a7de22f.jpeg)

東京、大阪の両方で使用可能になったので、DR 対策もばっちり(？)でしょうか。

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

### [Amazon CodeGuru Reviewer に新しい不整合検出機能が追加](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-codeguru-reviewer-inconsistency-detectors/?nc1=h_ls)

機械学習を用いてコード（python, Java）のバグやパフォーマンスの低下を招いている行を特定し、修正案を提示してくれる Code Guru で、不具合を特定する機能が強化されました。

強化された一つの機能は以下だと読み取りました（合っているのかは分からず…）
ある関数に変数を入力する際、常に Null チェックを入れていたリポジトリにおいて、一部のコードで Null チェックを忘れていた場合に検知できない問題を修正

実際に以下のようなコードを CodeCommit に格納して見たのですが、普通にチェックに取ってしまい、何か違うんだろうな…分からん、となっていました。分かる方がいたらサンプルコードほしいです…

```python:検知しない.py
def sum (num1, num2):
    num = num1 + num2
    return num

a = 3
b = 10

if ((a is not None) and (b is not None)):
    x = sum (a, b)
    print (x)

x = sum (a, b)
print (x)
```

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：未対応 ※CodeGuru 自体に未対応

## 9/8(水)

### [Amazon と三菱商事、日本初の再生可能エネルギー購入契約を締結](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-and-mitsubishi-corporation-announce-first-corporate-ppa-for-renewable-energy-in-japan/)

Amazon と三菱商事が、日本の22メガワット（MW）太陽光発電プロジェクトでの電力購入契約を締結したことを発表しました。

MC リテールエナジー（三菱商事の電力小売事業子会社）は 2022 ～ 2023 年にかけて太陽光発電設備を多数稼働予定のようなのですが、Amazon はそこから電力購入を積極的に行うようです。Amazon では 2030 年までに全世界の事業を 100% 再生可能エネルギーで賄うという取り組みを行っているようで、今回の契約締結もその一つです。
技術的なアップデートではなく、CSR 活動の一環だと思いますが、再生可能エネルギーを積極的に利用するというような内容に見えるため、良い活動かなと思いました（小並感）

### [Amazon Elastic Kubernetes Service Anywhere が一般利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-elastic-kubernetes-service/)

kubernetes のマネージドサービスである EKS をオンプレ上（現時点では VMware vSphere 上）にデプロイできるようになる EKS Anywhere が GA されました。

構築方法は AWS ブログを参考にしてみてください。環境構築が大変なので検証はしませんでした。。
(参考) [Amazon EKS Anywhere — オンプレミスで Kubernetes クラスターの作成と管理が広く利用可能になりました](https://aws.amazon.com/jp/blogs/news/amazon-eks-anywhere-now-generally-available-to-create-and-manage-kubernetes-clusters-on-premises/)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

### [Amazon Elasticsearch Service が Amazon OpenSearch Service となり、OpenSearch 1.0 のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-elasticsearch-service-amazon-opensearch-service-opensearch-1-0/)

Amazon ElasticSearch Service が、後継サービスである Amazon OpenSearch Service になりました。
OpenSearch は Elasticsearch からフォークした OSS です。大人の事情で今回のようなことになりましたが、背景は以下を参照して頂けると良いかと思います。プロジェクトの詳細は [OpenSearch](https://opensearch.org/) を参照ください。
(参考) [AWSをElasticが名指しで非難　ElasticsearchとKibanaのライセンスを、AWSが勝手にマネージドサービスで提供できないように変更へ](https://www.itmedia.co.jp/news/articles/2101/22/news098.html)

また、今回の変更に伴い API の名称も変更になっています。下位互換はあるようなので既存のものは変更しなくても大丈夫ですが、今後設定する場合は "Elasticsearch" の名称は入れられなくなるかと思います（おそらく） 
- (変更前) CreateElasticsearchDomain
- (変更後) CreateDomain

実際の画面は以下です。
![20210918_205033.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/6e39ad19-906c-7ab9-63c7-93286e113372.jpeg)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

### [新しいビジュアルレポート機能である OpenSearch Dashboards Notebooks が Amazon OpenSearch Service (Amazon Elasticsearch Service の後継サービス) で利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/opensearch-dashboards-notebooks-amazon-opensearch-service/)

上述の Amazon OpenSearch Service でライブデータやクエリからレポートを作成できるようにする OpenSearch Dashboards Notebooks が利用可能になりました。

何を言っているのかよく分からなかったので、とりあえず環境を構築してみました。OpenSearch 環境を構築し、画面に表示される URL をクリックするとダッシュボードにアクセスできます。
![20210918_215051.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/877e5a1a-b7dc-0d99-5872-f069e1da55ff.jpeg)

アクセスすると最初はサンプルデータを選択できるので、必要に応じてデータを投入します。今回は ecommerce のデータを参照しました。
![20210918_215000.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/94de22b0-6c14-8cb8-8557-fcbdc677bac3.jpeg)
![20210918_215128.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/c30d0c7e-0f20-9740-25d4-e90832cc0d15.jpeg)

データを投入した後は、左のメニューから Notebooks を選択し、Notebook を作成します。
![20210918_215233.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/d2a769f6-a167-8b32-13f4-82ffd24aaeb2.jpeg)
![20210918_215349.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/8d42a786-bb66-cb16-13b1-cf604dd226f6.jpeg)

Notebook を作成した後はコマンドを実行していきます。[Feature Deep Dive: OpenSearch Dashboards Notebooks](https://opensearch.org/blog/feature/2021/07/feature-highlight-opensearch-dashboards-notebooks) を参照すると、サンプルのコマンドやできることが分かるかと思います。
![20210918_215934.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/bcd54b23-0e56-a0d8-d50f-fb341a2db155.jpeg)
![20210918_220021.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/533b2dea-0e56-efcd-7a1f-e0db84c1a8a4.jpeg)

ElasticSearch 自体あまり使ったことがないので活用方法を考えるのが私は難しいですが、分かる人には良い機能なのだと思います。

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

## 9/9(木)

### [Amazon EC2 がインスタンスのネットワーク帯域幅の拡大を発表](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-ec2-increases-instance-network-bandwith/)

vCPU が 32 以上のインスタンスで、インターネットゲートウェイや Direct Connect、リージョン間のトラフィックに対してネットワーク帯域幅の拡大されました。

これまでは、それらのトラフィックに対する帯域幅はすべてのインスタンスで最大 5Gbps でした。今回のアップデートで、最大でネットワーク帯域幅の 50% を利用できるようになりました。例えば、c5n.9xlarge のインスタンスはネットワーク帯域幅が 50Gbps のため、最大で 25Gbps 使えるようになりました。
C5n のインスタンスだと、赤枠のところが今回のアップデートの対象です。
![20210918_171716.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/866f4cf2-0c00-269c-ead0-c1c36b08d451.jpeg)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

### [Amazon EC2 Hibernation adds support for Red Hat Enterprise Linux 8, CentOS 8, and Fedora 34](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-ec2-hibernation-red-hat-enterprise-linux-8-centos-8-fedora-34/)

仮想マシンのサービスである EC2 の RHEL8, CentOS, Fedora34 でハイバネーションができるようになりました。
ハイバネーションは EC2 を一時停止する機能で、メモリの情報をルート EBS に保持し、次回起動時にその情報をメモリに読み込み、シャットダウン前と同じ状態で起動することができます。

実際の画面は以下です。インスタンスの作成時に設定します。今回は Fedora34 と c5d.large で設定しました。

![20210918_172627.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/76639577-911c-81e0-fa98-fb0f8923005b.jpeg)

大阪リージョンは Hibernation に未対応なんですよね。何ででしょう。

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：未対応

### [AWS Amplify が Amplify CLI コマンドの実行時にカスタムスクリプトを実行するためのコマンドフックを発表](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/aws-amplify-command-hooks-custom-scripts-cli/)

認証基盤やストレージ等、バックエンドを手軽に構築でき、Web アプリやモバイルアプリの開発に注力できる Amplify を CLI で操作するための Amplify CLI でカスタムスクリプトを実行できるようになりました。

要点は以下です。

- amplicate/hooks ディレクトリ配下にカスタムスクリプトを配置することで、amplify コマンドの実行前、実行中、実行後の任意のタイミングでカスタムスクリプトを実行できる
- いつ実行するかはスクリプトの名前で決めることができる
  - 詳細は [How to name command hook scripts](https://docs.amplify.aws/cli/usage/command-hooks/#how-to-name-command-hook-scripts) を参照

例えば、以下のような pre-push.js を amplicate/hooks ディレクトリ配下に格納します。
※ amplify CLI のメジャーバージョンが 5 未満の場合に異常終了するスクリプト
その場合、***amplify push*** コマンドを実行すると、その前に pre-push.js が実行され、amplify CLI のメジャーバージョンが 5 未満の場合は後続の処理を中断することができます。そうすることで、チームメンバー全員が同じ Amplify CLI バージョンを使用するように強制することができます。
その他の使い道も多数ありそうですが、深夜二時には思いつきませんでした。

```js:pre-push.js
const fs = require('fs');
const parameters = JSON.parse(fs.readFileSync(0, { encoding: 'utf8' }));

// Get the running Amplify CLI major version number
const currentCLIMajorVersion = parameters.data.amplify.version.split('.')[0]
console.log('Amplify CLI major version: ', currentCLIMajorVersion)

const MINIMUM_MAJOR_AMPLIFY_CLI_VERSION = 5
console.log('Minimum required Amplify CLI major version: ', MINIMUM_MAJOR_AMPLIFY_CLI_VERSION)

if (currentCLIMajorVersion < MINIMUM_MAJOR_AMPLIFY_CLI_VERSION) {
  // Non-zero exit code will stop the Amplify CLI command's execution
  console.log('Minimum CLI version requirement not met.')
  process.exit(1) 
} else {
  console.log('Minimum CLI version requirement met.')
  process.exit(0) 
}
```

具体的な使用方法は以下の公式ドキュメントが参考になります。
(参考) [Command Hooks](https://docs.amplify.aws/cli/usage/command-hooks/#managing-third-party-dependencies)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：未対応 ※Amplify 自体に未対応

### [Elastic IP アドレスの逆引き DNS をカスタマイズする機能が Virtual Private Cloud のお客様向けに追加のリージョンで利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/dns-elastic-ip-addresses-virtual-private-cloud/)

EIP の逆引き DNS のカスタマイズが、東京/大阪リージョンでも AWS への申請なしでできるようになりました。
EC2 から E メールを送信する場合、メールサーバがスパム認定を受けないよう、逆引き DNS を設定し、メール配信を安定させることができます。これまではこちらの [Elastic IPの逆引き設定を解除してみた](https://blog.denet.co.jp/elastic-ip-rdns-removed/) にあるように都度 AWS に申請が必要でしたが、それがコンソールからできるようになりました。
※[2021/2/3 に発表されたアップデート](https://aws.amazon.com/jp/about-aws/whats-new/2021/02/amazon-virtual-private-cloud-vpc-customers-customize-reverse-dns-elastic-ips-eip/?nc1=h_ls)が、ついに東京/大阪でも対応したという内容です。

実際の画面は以下です。EIP のアクションから解除できるようになっています。
![20210918_223846.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/0442f26c-2def-48d2-4a07-a27f50f2f369.jpeg)
![20210918_223856.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/a927f82b-e25f-ee25-d6b4-94cf18ef9691.jpeg)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

### [AWS Gateway Load Balancer が PCI DSS コンプライアンスを実現](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/aws-gateway-load-balancer-pci-dss-compliance/)

Gateway Load Balancer が PCI DSS (Payment Card Industry Data Security Standard) に対応しました。

Gateway Load Balancer はサードパーティのセキュリティ製品（Firewall や IPS, IDS 等）を AWS で利用する場合に、構成をシンプルにしてくれるサービスです。詳細はクラメソさんの以下の記事が参考になりました。
(参考) [[新サービス]セキュリティ製品等の新しい展開方法が可能なAWS Gateway Load Balancerが発表されたので調査してみた](https://dev.classmethod.jp/articles/introducing-aws-gateway-load-balancer/)

また、PCI DSS はクレジットカードの会員データを安全に取り扱う事を目的として策定された企画です。AWS で言えば、各種ログにクレジット番号が残らないようにする等が該当するかと思います。PCI DSS の詳細は以下が参考になりました。
(参考) [PCI DSSとは](https://www.icms.co.jp/pcidss.html)

今回は Gateway Load Balancer が PCI DSS に対応したとのことなのですが、具体的にどのような対応が入ったのかは理解していないので、知っている方がいたら教えてほしい…転送するデータにクレジットカード番号が入っていたらマスクするとかなのかな…

AWS と PCI DSS の関係は以下に載っていますので、ご覧ください。
(参考) [PCI コンプライアンス – アマゾン ウェブ サービス (AWS)](https://aws.amazon.com/jp/compliance/pci-dss-level-1-faqs/)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：対応

## 9/10(金)

### [Amazon Aurora が、supports AWS Graviton2 ベースのX2g インタンスをサポートするようなりました](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-aurora-supports-aws-graviton2-based-x2g-instances/)

MySQL と PostgreSQL 互換のマネージド DB である Aurora で X2g のインスタンスタイプをサポートするようになりました。
X2g を利用することにより、R6g インスタンスと比較して、vCPU あたり 2 倍のメモリ容量を使用可能なりました。比較表は以下です。料金は東京にきていないので調査していません。

| インスタンスタイプ | R6g |  | X2g | |
| --- | --- | --- | --- | --- |
| xlarge | 4 vCPU | 32 GiB | 4 vCPU | 64 GiB |
| 2xlarge | 8 vCPU | 64 GiB | 8 vCPU | 128 GiB |
| 4xlarge | 16 vCPU | 128 GiB | 16 vCPU | 256 GiB |
| 8xlarge | 32 vCPU | 256 GiB | 32 vCPU | 512 GiB |
| 12xlarge | 48 vCPU | 384 GiB | 48 vCPU | 768 GiB |
| 16xlarge | 64 vCPU | 512 GiB | 64 vCPU | 1024 GiB |

ただし、X2g データベースインスタンスは、 以下のバージョンでのみサポートされているので注意です。

- Aurora MySQL
  - 2.09.2 以降
  - 2.10.0 以降
- Aurora PostgreSQL
  - 11.9 以降
  - 12.4 以降
  - 13.3

実際の画面は以下です。バージニアリージョンでは利用可能になっていました。ただ、東京/大阪リージョンは表示がなかったので未対応のようです。

![20210918_173613.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/396510/fc31277f-e057-7a86-109d-4d820b026318.jpeg)

なお、X2g と 同時に T4g も Aurora に対応していますが、こちらも同様に東京/大阪は未対応です。
(参考) [Amazon Aurora が、 AWS Graviton2 ベースの T4g インスタンスをサポートするようになりました](https://aws.amazon.com/jp/about-aws/whats-new/2021/09/amazon-aurora-supports-aws-graviton2-based-t4g-instances/)

- 日本リージョン対応状況
  - 東京：未対応
  - 大阪：未対応

### [AWS ParallelCluster3の紹介](https://aws.amazon.com/jp/blogs/hpc/introducing-aws-parallelcluster-3/)

※日本語訳のブログもありましたので参考に。
(参考) [AWS ParallelCluster 3のご紹介](https://aws.amazon.com/jp/blogs/news/introducing-aws-parallelcluster-3/)

AWS ParallelCluster というものがるようです（初耳）
AWS ParallelCluster は、AWS がサポートするオープンソースのクラスター管理ツールで、AWSでハイパフォーマンスコンピューティング (HPC) クラスターをデプロイして管理することを容易にするものです。

ver.2 からの大きな変更点は以下です（よく分かっていないので詳細はブログへ…）

1. 新しい柔軟なAWS ParallelCluster API
1. EC2 Image Builderを利用したカスタムAMIの作成
1. コンフィグファイルの新しいフォーマット
1. ネットワーク設定オプションの簡素化
1. 細かい粒度でのIAM権限
1. ランタイムカスタムスクリプト

やってみた系は、ちょっと古いですがクラスメソッドさんのブログが参考になるんだろうと思います。
(参考) [AWS ParallelClusterでHPCクラスタをお手軽に構築してみる](https://dev.classmethod.jp/articles/getting-started-aws-parallelcluster/)

BlackBelt の資料もありましたので参考に。
(参考) [AWS ParallelCluster ではじめるクラウドHPC](https://d1.awsstatic.com/webinars/jp/pdf/services/20200408_BlackBelt_ParallelCluster.pdf)

- 日本リージョン対応状況
  - 東京：対応
  - 大阪：不明。

## 感想

OpenSearch Service に変わったのが大きなトピックでしたね。略すと Amazon OSS (Open Search Service) になるのは何か狙っているんでしょうか。
来週は ANS の試験を受けるので、残りの時間しっかり勉強したいと思います。