2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CDK のキホン

Posted at

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):従来手作業でおこなわれていたサーバーやネットワーク機器などの設定、管理をコード化し、自動化する技術のこと

cdk-iac.png

実際に使ってみる

概要

今回は、IAM Roleの作成を対象とします。(緑四角の部分)
AWSのサービスを使う場合は、各サービスへ権限を設定する必要があります。
その権限のグループをロール(赤帽子)、権限単体をポリシー(緑の鍵)と言います。

architecture.png

  • IAMロール(Role)
    「AWSのリソースに付与するもの」で、実態はIAMポリシーをグルーピングしたもの
  • IAMポリシー(policy)
    「AWSリソースにアクセスするための権限設定」で、AWSが最初から用意してくれている

[参考]https://qiita.com/montama/items/90bb8a3973d101be4690

手動の場合

  1. AWSコンソールからIAMの画面を開き、ロールの作成をクリック
    AWSアカウントにロールを作成する
    make-iam-role-00.PNG

  2. AWSLambdaFullAccessを検索して設定
    make-iam-role-01.PNG

  3. ロール名「manual-lambda-full-access」を設定してロールを作成
    make-iam-role-02.PNG
    make-iam-role-03.PNG

  4. ロールが作成されていることを確認
    make-iam-role-04.PNG

このように画面遷移に合わせて手動で設定することができます。

CDKを用いた場合

前提として、AWS CLIというツールをインストールして設定済

  1. ディレクトリの作成と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用のフォルダが作成されている

  2. ~/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' },
      /*↑こちらは直接指定方式*/
    });
    

  3. ~/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'
        })
      }
    }
    

  4. デプロイ
    AWSに反映させるデプロイは以下のコマンドを実行する。

    npx cdk deploy
    

    エラーがでなければ、変更点の内容確認が表示される。問題なければyを入力する。
    make-iam-role-05.PNG

ロール確認

IAMにてロールを確認すると手動と同様のものが作成できている
make-iam-role-06.PNG

最後に、cdkはdestoryコマンドにて削除することも可能

npx cdk destroy

参考

この記事は以下の情報を参考にしています。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?