AWS CDK とは
概要
AWS Cloud Development Kit (AWS CDK) は、コードでクラウド インフラストラクチャを定義し、AWS CloudFormation を通じてプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです。
AWS CDK は、2 つの主要な部分で構成されています。
■AWS CDK コンストラクト ライブラリ
コンストラクトと呼ばれる、事前に記述されたモジュール式で再利用可能なコードのコレクション。これを使用して、変更し、統合することで、インフラストラクチャを迅速に開発できます。AWS CDK コンストラクト ライブラリの目的は、AWS でアプリケーションを構築するときに、AWS サービスの定義と統合に必要な複雑さを軽減することです。
■AWS CDK Command Line Interface (AWS CDK CLI)
CDK アプリを操作するためのコマンドライン ツールです。CDK CLI を使用して、AWS CDK プロジェクトを作成、管理、およびデプロイします。
※公式から抜粋(翻訳しました)
なんとなく分かるようで分からない。。
個人的な理解
Webでぽちぽち設定するよりも、コードで書いて設定する方が楽で管理もしやすいだろ
ということかと。つまりIaC化の一種です。
※IaC(Infrastructure as Code):従来手作業でおこなわれていたサーバーやネットワーク機器などの設定、管理をコード化し、自動化する技術のこと
実際に使ってみる
概要
今回は、IAM Roleの作成を対象とします。(緑四角の部分)
AWSのサービスを使う場合は、各サービスへ権限を設定する必要があります。
その権限のグループをロール(赤帽子)、権限単体をポリシー(緑の鍵)と言います。
- IAMロール(Role)
「AWSのリソースに付与するもの」で、実態はIAMポリシーをグルーピングしたもの - IAMポリシー(policy)
「AWSリソースにアクセスするための権限設定」で、AWSが最初から用意してくれている
[参考]https://qiita.com/montama/items/90bb8a3973d101be4690
手動の場合
このように画面遷移に合わせて手動で設定することができます。
CDKを用いた場合
前提として、AWS CLIというツールをインストールして設定済
-
ディレクトリの作成とcdkのインストール
mkdir make-iam-role && cd $_ npx -y cdk@latest init --language typescript --generate-only npm install -D @types/source-map-support npm install
以下のコマンドを実行
npx cdk list # "フォルダ名"Stackと表示されればOK
cdk用のフォルダが作成されている
-
~/bin/xxxx.tsを編集する
今回は環境変数でデプロイ先を指定します。(アカウントとリージョンを指定)
#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { MakeIamRoleStack } from '../lib/make-iam-role-stack'; const app = new cdk.App(); new MakeIamRoleStack(app, 'MakeIamRoleStack', { /* Uncomment the next line to specialize this stack for the AWS Account * and Region that are implied by the current CLI configuration. */ env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }, /*↑をコメントアウト*/ /* Uncomment the next line if you know exactly what Account and Region you * want to deploy the stack to. */ // env: { account: '123456789012', region: 'us-east-1' }, /*↑こちらは直接指定方式*/ });
-
~/lib/xxxx.tsを編集する
以下を記載する。内容についてはまた別の機会に。。import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as iam from 'aws-cdk-lib/aws-iam'; export class MakeIamRoleStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); new iam.Role(this, 'MyCdkProjectStack-cdk-lambda-full-access', { assumedBy: new iam.AccountPrincipal(this.account), managedPolicies: [ iam.ManagedPolicy.fromAwsManagedPolicyName('AWSLambda_FullAccess') ], roleName: 'cdk-lambda-full-access' }) } }
-
デプロイ
AWSに反映させるデプロイは以下のコマンドを実行する。npx cdk deploy
ロール確認
IAMにてロールを確認すると手動と同様のものが作成できている
最後に、cdkはdestoryコマンドにて削除することも可能
npx cdk destroy
参考
この記事は以下の情報を参考にしています。