[AWS re:Invent 2018] バックエンドエンジニア必見の新発表27選

# はじめに
AWS最大の年次カンファレンスイベント「AWS re:Invent 2018」が2018年11月26日〜11月30日に渡って米国ラスベガスで開催されました。re:Inventの一週間程度前からイベント終了までの間に**100を超える新サービス・新機能**が発表されました。
あまりにも多いため追い切れていないという方もいらっしゃると思います。そこで本記事では**バックエンドエンジニアが押さえるべき新サービス・新機能**に絞って紹介したいと思います。
なお、記載している情報は2018年12月4日時点での情報です。最新の情報はAWS公式サイトをご覧ください。

# じっくり見たい方は
以下のAWS公式サイトとクラスメソッドのサイトにほぼ全ての新サービス・新機能がまとまっています。本記事はこれらのサイトを大いに参考にさせて頂きました。

- [AWS re_Invent 2018 で発表された新サービスと機能 _ AWS](https://aws.amazon.com/jp/new/reinvent/)
- [AWS re_Invent 2018 JAPAN PORTAL _ クラスメソッド](https://classmethod.jp/m/reinvent/2018/)

# EC2
### 新しいインスタンスタイプ - A1インスタンス (ARMベースのAWS Gravitonプロセッサーを搭載)
**ARMベースのAWS独自開発の「AWS Graviton」プロセッサーを搭載したインスタンスタイプ**です。
小さなインスタンスのグループにまたがるような、スケールアウト型のワークロードに最適とのこと。例として、コンテナ化されたマイクロサービス、ウェブサーバー、開発環境、キャッシュ層などが挙げられています。
a1.mediumからa1.4xlargeまでの5種類のインスタンスタイプが用意されており、バージニア北部、オハイオ、オレゴン、アイルランドで利用できます。
AWSはとうとうプロセッサーまで自分たちで作ってしまいました。AWSとIntelは蜜月の関係でしたが、これからどうなるんでしょうか。

[新機能 – EC2 A1インスタンス – ARMベースのAWS Gravitonプロセッサーを搭載 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-ec2-instances-a1-powered-by-arm-based-aws-graviton-processors/)

### 新しいインスタンスタイプ - C5nインスタンス (100Gbpsのネットワーク帯域に対応)
C5インスタンスファミリーに追加された次世代のインスタンスで、**100Gbpsのネットワークのスループット**を提供します。ハイパフォーマンスコンピューティングやデータレイク、ネットワーク集中型アプリケーションに適しています。c5n.largeからc5n.18xlargeまでの6種類のインスタンスタイプが用意されており、バージニア北部、オハイオ、オレゴン、アイルランド、AWS GovCloudで利用できます。
A1と違ってGovCloudが対象に入っているので、米国政府とかから要望があったんですかね（勝手な想像）。

[新機能 – 100Gbpsのネットワーク帯域に対応するC5nインスタンス _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-c5n-instances-with-100-gbps-networking/)

# S3
### S3 Intelligent-Tiering (自動的なコスト最適化)
Standard/Standard-IA/OneZone-IA/Glacierに続く新しいストレージクラスです。S3 INTは高頻度アクセス階層と低頻度アクセス階層から構成されます。**S3 INTは、S3オブジェクトのアクセスパターンをモニタし、連続30日間アクセスされていないデータを低頻度のアクセス階層に移動し、データが後でアクセスされた場合は高頻度アクセス階層に自動的に戻します。ストレージ料金は高頻度アクセス階層はStandardと、低頻度アクセス階層はStandard-IAと同じレートになります。**
S3オブジェクトのアクセスパターンが予測できない場合や変わりうる場合はS3 INTが特に有効です。Standardのまま全然変更していないという方はとりあえずS3 INTにしておければ手間なくコスト削減できるはずです。
一方でデータがあまりアクセスされない場合や、あるいは耐久性が多少落ちても問題ないケースではStandard-IAやOneZone-IAの方が有効な選択肢になります。
S3 Intelligent-Tieringは全てのリージョンで利用することができます。
ところで、昔は低冗長化ストレージ (RRS) というストレージクラスもあったはずですが、黒歴史になったんでしょうか。

[新機能- Intelligent TieringによるAmazon S3の自動的なコスト最適化 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-automatic-cost-optimization-for-amazon-s3-via-intelligent-tiering/)

### S3 Object Lock (S3オブジェクトの変更・削除を完全に制限する)
**一定期間もしくは無期限にS3オブジェクトが削除または上書きされるのを防ぐことができる機能**で、バケットのプロパティから設定できます。S3 Object Lockは全てのリージョンで利用することができます。
悲しいかな、現時点ではバケット作成時にしか設定できない＆バージョニングが有効化されたバケットにしか対応していません。今後のアップデートを期待したいところです。

- [(英語) Amazon S3 Object Lock](https://aws.amazon.com/jp/about-aws/whats-new/2018/11/s3-object-lock/)
- [S3オブジェクトのロック（なにをどうやっても改竄削除が不可）がリリースされました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/s3-object-lock/)

# RDS
### Amazon Aurora Global Databases (複数リージョンで単一のAuroraデータベースを利用可能に)
MySQL互換のAuroraの新機能で、**単一のAuroraデータベースを複数のリージョンで利用でき、1秒未満の待ち時間で書き込みをレプリケートできます。**バージニア北部、オハイオ、オレゴン、アイルランドで利用できます。すごすぎて正直意味不明です。

[(英語) Announcing Amazon Aurora Global Database](https://aws.amazon.com/jp/about-aws/whats-new/2018/11/announcing-amazon-aurora-global-database/)

# DynamoDB
### Amazon DynamoDB On-Demand (事前のキャパシティプランニングが不要のリクエスト課金)
これまでDynamoDBは書き込み及び読み込みの処理能力をキャパシティユニットという形でテーブルごとに設定する必要がありました。これからはテーブルの設定で「on-demanmd mode」を有効にすることで、**AWSがキャパシティを自動で調整してくれて使った分だけ課金される**ようになります。全リージョンで利用できます。
AutoScalingも良い機能だったんですがCloudFormationとの相性が最悪でしたから、これは本当に嬉しい機能です。

[Amazon DynamoDB On-Demand – 事前のキャパシティプランニングが不要のリクエスト課金が可能になりました。 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/)

### DynamoDB トランザクション
文字通り**DynamoDBがトランザクションに対応**します！ACID（原子性、一貫性、分離性、永続性）を保証した操作を行うAPI（TransactGetItems, TransactWriteItems）が全リージョンのDynamoDBテーブルで使えます。

- [新機能 – DynamoDB Transactions _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-amazon-dynamodb-transactions/)
- [TransactGetItems - Amazon DynamoDB](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/APIReference/API_TransactGetItems.html)
- [TransactWriteItems - Amazon DynamoDB](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/APIReference/API_TransactWriteItems.html)

DynamoDBはトランザクション機能が無いからRDBを選択あるいは併用するといったことがこれまでありましたが、多くのユースケースをDynamoDB一本で実現できるようになりそうです。
ただ、AWS公式ブログの記述を見るに、例外処理あるいはリトライ処理などの考慮が一応必要そうな感じです。

> Itemはトランザクション中にロックされません。DynamoDB transactionsはトランザクション分離レベルだとserializableになります。トランザクションの進行中にアイテムがトランザクション外で変更された場合、トランザクションはキャンセルされ、例外を発生させたアイテムまたはItemに関する詳細がスローされます。

# Lambda
### AWS Lambda Layer (複数のLambda関数での共通コンポーネントの共有が可能に)
これまでは複数のLambda関数で利用する共通コンポーネント（アプリケーションフレームワークやライブラリ、SDK、機械学習モデルなど）について各Lambda関数にパッケージングしてデプロイする必要がありました。**Lambda Layerの登場により、複数のLambda関数から共通コンポーネントを利用できるようになりました。**
やり方は、共通コンポーネントを1つのZIPファイルに固めてLambda Layerにアップロードし、Lambda関数の設定画面からレイヤーへの参照を追加するだけです。
特にPythonの場合、ライブラリなどをLambda関数用ZIPファイルに同梱するのにあんまり綺麗なやり方が無かったので、Lambda Layerが一つの解になるかもしれません。
また、AWSが提供するパブリックなレイヤーとしてNumPyとSciPyが利用できます。今後もどんどん増えていきそうですね。Lambda Layerは全てのリージョンで利用可能です。

- [(英語) New for AWS Lambda – Use Any Programming Language and Share Common Components _ AWS News Blog](https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/)
- [【速報】【アップデート】Lambdaが複数のファンクションで共有するコードを持てるようになりました(Lambda Layer) #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/reinvent2018-keynote-2-lambdalayer/)

### AWS Lambda Runtime API (好きなプログラミング言語でLambdaの利用が可能に)
古き良きプログラミング言語であるCobolが[Twitterのトレンド入り](http://www.itmedia.co.jp/news/articles/1811/30/news102.html)した原因がこちら。全てのリージョンで、自分でカスタマイズしたランタイムでLambdaが利用できるようになります。
AWSが[C++](https://aws.amazon.com/blogs/compute/introducing-the-c-lambda-runtime/)/[Rust](https://aws.amazon.com/blogs/opensource/rust-runtime-for-aws-lambda/)のランタイムを、パートナーがErlang/Elixir/Cobol/Node.js/PHPのランタイムをオープンソースで公開しています。
これが今後のLambdaの言語サポートの新しい形になるようで、次に紹介するRubyもこの方法でサポートされているとのこと。

- [(英語) New for AWS Lambda – Use Any Programming Language and Share Common Components _ AWS News Blog](https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/)
- [【アップデート】 もう言語で悩まない！AWS LambdaでCustom Runtimeが利用できるようになりました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/lambda-custom-runtime/)

### AWS LambdaのRubyサポート
**LambdaでRuby 2.5がランタイムとして利用できるようになりました。** Rubyistには嬉しいニュースですね。こちらもおそらく全てのリージョンで利用可能です。

- [(英語) Announcing Ruby Support for AWS Lambda _ AWS Compute Blog](https://aws.amazon.com/jp/blogs/compute/announcing-ruby-support-for-aws-lambda/)
- [AWS LambdaのRuby Runtimeを使ってみた #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/lambda-ruby-runtime/)

### Application Load Balancer（ALB）のAWS Lambdaサポート
ALBはECSやEC2をターゲットとして指定できますが、**Lambdaも選択できるようになりました。**簡単なWeb APIであればALB + Lambdaで作れてしまいそうですね。東京を含むほとんどのリージョンで利用できます。

[アプリケーションロードバランサー(ALB)のターゲットにAWS Lambdaが選択可能になりました _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/lambda-functions-as-targets-for-application-load-balancers/)

# 分析
### Amazon Athena Workgroups (Beta)  (グループ単位でAthenaの利用を管理)
まだベータ版のため一般利用できないようですが、個人的に待ちに待った新機能です。AthenaのコンソールからWorkgroupというグループを設定してグループごとにワークロードやコストの管理ができるようです。

- [Amazon Athena_ What's New and How SendGrid Innovates (ANT324) - AWS r…](https://www.slideshare.net/AmazonWebServices/amazon-athena-whats-new-and-how-sendgrid-innovates-ant324-aws-reinvent-2018)
- [レポート]ANT375-R1:Amazon Athena Workgroupsを使ってグループごとのAthena利用を管理 #reinvent
https://dev.classmethod.jp/cloud/aws/ant375-amazon-athena-workgroups/

特に以下のコスト管理機能が良さげです。

<table><tr><td>
<ul>
<li>クエリ単体のデータスキャン量の上限を設定することができ、上限を超えるとクエリがキャンセルされる
<li>利用状況とコストの増加に伴いアラームを飛ばすことができる
<li>全てのクエリが上限を超えた時にグループを無効化できる
</ul>
</td></tr></table>

セッションのSlideShareの該当ページを見ると、スキャンサイズのリミット/時間範囲/アクションをひとまとめで設定できるようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/284925/75cb5e96-2aa4-88d9-303a-ec6291b32e99.png)

### Amazon Redshift concurrency scaling (Preview) (同時実行スケーリング)
まだプレビュー＆AWS公式の記事が公開されていないようなのではっきりした内容は分かりませんが、クラスメソッドさんの記事を見るに『**何千もの同時ユーザーとクエリがあっても一貫して高速のクエリパフォーマンスを提供する**新しい機能です。 「クエリのワークロードをサポートするために、必要に応じて容量を自動的に増減させる」』といった機能のようです。

- [[速報]待望の新機能”Amazon Redshift concurrency scaling”が発表されました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/new-feature-amazon-redshift-concurrency-scaling/)

# コンテナ
### AWS Marketplace for Containers (コンテナのマーケットプレイス)
AWS MarketplaceとAmazon ECSコンソールでコンテナ製品を見つけることができます。また、こちらを利用することで、Amazon ECSやAmazon EKSなどにコンテナ製品を簡単にデプロイすることができます。

- [re_Invent 2018 _ AWS Marketplace for Containersが公開されました。 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-aws-marketplace-for-containers/)

### ECRをソースとしたコンテナイメージのCI/CDサポート
**CodePipelineのソースプロバイダーにECRが指定**できるようになりました。また、**CodeDeployを用いたFargate/ECSへのBlue/Greenデプロイ**がサポートされました。コンテナとCodeシリーズの連携がかなり良くなった感じです。

- [(英語) Build a Continuous Delivery Pipeline for Your Container Images with Amazon ECR as Source _ AWS DevOps Blog](https://aws.amazon.com/jp/blogs/devops/build-a-continuous-delivery-pipeline-for-your-container-images-with-amazon-ecr-as-source/)
- [(英語) Use AWS CodeDeploy to Implement Blue_Green Deployments for AWS Fargate and Amazon ECS _ AWS DevOps Blog](https://aws.amazon.com/jp/blogs/devops/use-aws-codedeploy-to-implement-blue-green-deployments-for-aws-fargate-and-amazon-ecs/)
- [AWS CodeDeploy_AWS CodePipelineでAWS Fargate_Amazon ECSのCI_CDがサポートされました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/aws-developer-tools-support-for-ecs-and-fargate/)

# マルチアカウント管理/セキュリティなど
### Amazon CloudWatch Logs Insights (高速でインタラクティブなログ分析)
CloudWatch Logsを分析・可視化するためのサービスです。今までCloudWatch Logsの内容を検索したり可視化するためにはAmazon Elasticsearch Serviceに連携するのが常套手段でしたが、CloudWatchコンソールで完結するようになります。東京を含むほとんどのリージョンで利用できます。料金はクエリごとに走査したログデータの量に対して発生し、レートはリージョン共通で$0.005/GBになります。Athenaと同じレートですね。

[新機能 – Amazon CloudWatch Logs Insights – 高速でインタラクティブなログ分析 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-amazon-cloudwatch-logs-insights-fast-interactive-log-analytics/)

### AWS Control Tower (Preview) (安全なマルチアカウント環境を迅速にセットアップ)
**マルチアカウント環境を安全にセットアップするためのサービスです。**AWS OrganizationやAWS SSO、AWS CloudTrail、AWS Configなどのアカウントの管理・セキュリティ系サービスの統制機能がControl Towerから提供されるようです。まだプレビューですがマルチアカウント管理の必携サービスになりそうな予感。

- [re_Invent 2018 _ Andy Jassy Keynote _ AWS Control Tower _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-keynote-aws-control-tower/)
- [[新サービス] AWS Control Tower (Preview) が発表されました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/reinvent2018-peview-control-tower/)

### AWS Security Hub (Preview)
AWS Security Hubを使用すると、AWSアカウント全体で優先度の高いセキュリティ警告とコンプライアンスステータスを包括的に確認できます。ファイアウォールやエンドポイントの保護から脆弱性やコンプライアンスまで幅広く強力なセキュリティツールが用意されています。AWSパートナーソリューションだけでなく、Amazon GuardDuty、Amazon Inspector、Amazon Macieなどの複数のAWSサービスから、セキュリティアラートや検索結果を集約、整理、優先順位付けする単一のダッシュボードを提供します。
こちらもプレビューですが待ち遠しいです。

[re_Invent 2018 _ Andy Jassy Keynote _ AWS Security Hub _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-keynote-aws-security-hub/)

# ネットワーク
### AWS Global Accelerator (各種バランシング機能を備えるグローバルロードバランサー)
世界中に利用者がいるようなアプリケーションにおいて、可用性とパフォーマンスを向上するネットワークサービスです。アプリケーションエンドポイントの状態を継続的に監視し、AWSのグローバルネットワークを使って最も近い正常なネットワークのエンドポイントへ経路を変更します。

[re_Invent 2018 Monday NightLive _ AWS Global Accelarator _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-monday-nightlive-aws-global-accelarator/)

### AWS Transit Gateway (オンプレミスとAWSの接続をより簡単に接続可能に)
数千におよぶ Amazon VPC、AWS アカウント、オンプレミスのネットワークとの接続を容易に管理します。AWS Transit Gateway は管理をシンプルにし、オペレーションコストを削減します。それぞれのネットワークは、ただ AWS Transit Gateway に接続すればよく、その時点で他のネットワークからも利用できるようになります。

[新機能 – トランジットゲートウェイでネットワークアーキテクチャをシンプルに _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/new-aws-transit-gateway/)

# 新サービス系/その他
※これらの概略は後日加筆します。

### AWS Step Functions でワークフローの自動化
- [(英語) AWS Step Functions Adds Eight More Service Integrations](https://aws.amazon.com/jp/about-aws/whats-new/2018/11/aws-step-functions-adds-eight-more-service-integrations/)
- [[神アップデート]Step Functionsが新たに8つのマネージドサービスと連携可能になりました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/step-functions-8-service/)

### Amazon Quantum Ledger Database (フルマネージド元帳データベース)
- [re_Invent 2018 _ Andy Jassy Keynote _ Amazon Quantum Ledger Database（QLDB） _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-keynote-amazon-quantum-ledger-database/)
- [[新サービス] フルマネージドの台帳データベースである、Amazon Quantum Ledger Database (QLDB) が発表されました！ #reinvent](https://dev.classmethod.jp/cloud/aws/reinvent2018-amazon-quantum-ledger-database/)

### Amazon Timestream (フルマネージド時系列データベース)
- [re_Invent 2018 _ Andy Jassy Keynote _ Amazon Timestream _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-keynote-amazon-timestream/)
- [【速報】【新サービス】時系列データベースであるAmazon Timestreamが発表されました #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/reinvent-keynote-timestream/)

### AWS Lake Formation (Preview)
- [re_Invent 2018 _ Andy Jassy Keynote _ AWS Lake Formation _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-keynote-aws-lake-formation/)
- [[新サービス] 安全なデータレイクを簡単に設定できる！AWS Lake Formation が発表されました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/reinvent2018-lake-formation/)

### Amazon Managed Streaming for Kafka （Preview）
- [re_Invent 2018 _ Werner Vogels Keynote _ Amazon MSK _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-werner-vogels-keynote-amazon-msk/)

### AWS App Mesh (Beta)
- [AWS App Meshが発表になりました。 _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent2018-aws-app-mesh/)
- [[速報] マイクロサービス向けの新しい監視サービス！AWS App Meshが登場 #reinvent](https://dev.classmethod.jp/cloud/aws/reinvent2018-app-mesh/)

### Amazon Managed Blockchain (Preview)
- [re_Invent 2018 _ Andy Jassy Keynote _ Amazon Managed Blockchain _ Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-jassy-keynote-amazon-managed-blockchain/)
- [【速報】【新サービス】AWS Managed Blockchainが発表されました！ #reinvent ｜ DevelopersIO](https://dev.classmethod.jp/cloud/aws/reinvent-blockchain/)