スキップしてメイン コンテンツに移動

AWSのサービス理解 - CDK, Cognito

仕事で久しぶりに本格的にAWSを使うことになるので、Black Belt等々の資料を見て知識を蓄え直す。
情報の取得元は基本的にここの記事に。

* AWS クラウドサービス活用資料集 Top https://aws.amazon.com/jp/aws-jp-introduction/
* サービス別資料 | AWS クラウドサービス活用資料集 https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/

CDK

CDK = Cloud Development Kit。
CDKの意義は、

* 始めるのが簡単で
* 繰り返し可能で
* 抽象化可能

ということで、ソースコードからCloudFormationテンプレートが作れる。

手動操作、スクリプト(SDK, CLI)、プロビジョニングツール(CloudFormationやTerraformなど)、Document Object Models(CloudFormationなどのテンプレートを生成)、そして、CDK、という順に管理レベルがMatureになっているイメージ。

AWSのベストプラクティスが定義されたライブラリを使えるので少ないコードで記述ができる。
TypeScript, Python, Java, .NETが対応している。

CDKの内部ではAWS CLIを使用している。
また、CDKがデプロイのためにS3バケットも使用するのでリージョンごとにbootstrapと称した処理を呼びS3バケットを作成する必要がある。


CDKのコアコンセプトは次の6つ
* App:CloudFormationテンプレートの生成に使う最上位要素, 複数のStackとその依存関係を定義
* Stack:CloudFormation Stackに該当するデプロイ最小単位でリージョンとアカウント情報を保持する
* Construct:AWSリソースコンポーネント、CloudFormationがリソースを作成するのに必要な情報全てをカプセル化してるらしい
* Environment:デプロイ先となるアカウントとリージョンの組み合わせ
* Context:各種パラメーターのKey-Value、JSONファイルで保存
* SSM ParameterStore / SecretManager:CloudFormationテンプレート生成時・デプロイ時に値を取得する

CDKではアクセス許可設定については次の通り。
* 操作主体(User, Role, サービス, アカウントなど)をPrincipalsと称する
* S3/Dynamoなどアクセス対象となるConstructはアクセス許可を与えるためのメソッドを持っている

次も参考になりそう。

* GitHub - kevinslin/open-cdk: This guide is an opinionated set of tips and best practices for working with the AWS Cloud Development Kit https://github.com/kevinslin/open-cdk
* What is the AWS CDK? - AWS Cloud Development Kit (AWS CDK) https://docs.aws.amazon.com/cdk/latest/guide/home.html
* GitHub - aws-samples/aws-cdk-examples: Example projects using the AWS CDK https://github.com/aws-samples/aws-cdk-examples

なんとなく、インフラ系を取り回すのにTypeScriptで、っていうのは個人的には抵抗感があるんだけど、例を見ていると圧倒的にTypeScriptが多い。


Cognito

Cognito = API ベースで実装されるモバイルアプリや Web アプリに ユーザ認証機能を提供するサービス。
アプリへのアクセスに利用できるトークンを提供するユーザープールとAWSにアクセスできるクレデンシャルを提供するIDプールがある。

サインインに使用できる情報は後から変更できない。
MFAの利用についても後から変更ができない。


ユーザープールについては呼び出し元(一般と管理者)によって異なるAPIが用意されている。

トークンの種類:

  • IDトークン
    • IDトークンはCognito ID プールにアクセスできる+アプリケーションのAPIやAPI Gw, AppSyncにアクセスできる。
  • アクセストークン
    • アクセストークンはアプリケーションのAPIやAPI Gw, AppSyncにアクセスできる+Identity Provider APIにユーザーとしてアクセスできる。
  • 更新トークン
    • 更新トークンは、IDトークン、アクセストークンを更新。

実装方法はIdP API Admin, IdP API 非Admin、Auth API& Hosted UIがあるが、パスワード変更のように、Auth APIだけでは実現できない操作もある。

Cognito API呼び出しはCloud Trailにログが記録される。

それにしても、AWSはAWSの人が出している資料もたくさんあってわかりやすいしJAWSのようなユーザーグループでの発表資料もしっかりしていて参考になるし、その上クラスメソッドみたいにブログであっさり読めるレベルのもあって、学習環境が整っているなあ。