AWS CDK 超入門編 アプリケーションをデプロイしよう
あいさつ
こんにちは。Webエンジニアのノッパクンです。
本記事ではCDKでアプリケーションをデプロイする方法について学んでいきます。
一度CDKの味を知ってしまうと、もうCloudFormationのtemplate.yaml管理には戻れないと思います!
ササッとお試しできるので、ぜひ最後までお付き合いください。
CDKとは?
AWSのリソースをソースコードで定義して管理する事ができる技術です。いわゆるIaCと呼ばれる領域になります。
馴染みの言語(TypeScriptやPythonなど)で記述できたり、ファイルの分割が可能だったり、リソースを抽象化して独自のコンポーネントを作成できたりと、メリットは多々あります。
なにより、触っていて楽しく、エンジニアフレンドリーです!
本記事で作成するもの
CDKでアプリケーションをデプロイする事がゴールです。
アプリケーションはLambdaがあるだけのシンプルな構成となります。
イメージ
前提
構築にあたり、以下のものを先にインストールしてください。※バージョンは参考程度に
node(npm)
$ node --version
v16.14.2
$ npm --version
8.5.0
aws-cli
$ aws --version
aws-cli/2.2.10 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
cdk
$ cdk --version
2.21.0 (build 3f74a81)
おおまかな構築の流れ
- IAMユーザー作成
- 資格情報の設定
- CDKプロジェクト作成
- アプリケーションスタック作成
- デプロイ
それでは、構築していきましょう!
1. IAMユーザー作成
まずはじめに、aws-cliコマンドやCDKコマンドなどを実行する際に必要となるIAMユーザーを作成します。IAMユーザー作成直後に認証情報が記載されたcsvをダウンロードできます。後述の手順で必要となるためダウンロードして無くさないようにしましょう!
設定1
- ユーザー名
ここでは「my-cdk」と設定します。 - アクセスキー - プログラムによるアクセス
CDKコマンドなどを実施するために必要となります。 - パスワード - AWS マネジメントコンソールへのアクセス
本記事では必要ないためチェックは外してください。
設定2
- 既存のポリシーを直接アタッチ
AdministratorAccess
をアタッチしてください。
2. 資格情報の設定
次に、作成したIAMユーザーをaws-cliコマンド、cdkコマンドで使用できるように設定していきます。aws configure
コマンドでプロフィールと呼ばれるものを作成しましょう。
aws configureコマンド
プロフィール作成時にアクセスキー等の入力が求められるので、先ほどの手順でダウンロードした認証情報のcsvを参考に入力しましょう。
プロフィール名はIAMユーザーにあわせ「my-cdk」とします。
$ aws configure --profile my-cdk
AWS Access Key ID [None]: XXX
AWS Secret Access Key [None]: XXX
Default region name [None]: ap-northeast-1
Default output format [None]: json
動作確認
プロフィールの作成が終わったら、ユーザー情報を取得するaws-cliコマンドを、プロフィール付きで実行できるか確認してみましょう。--profile
オプションで、作成したプロフィールを指定します。このオプションはcdkコマンドでも使用可能です。
$ aws sts get-caller-identity --profile my-cdk
{
"UserId": "XXX",
"Account": "XXX",
"Arn": "arn:aws:iam::XXX:user/my-cdk"
}
3. CDKプロジェクト作成
プロフィールの準備が完了したら、次はcdkのプロジェクトを作成します。プロジェクトの作成はcdk init
コマンドで行います。任意のフォルダを作成して、お好みの言語でプロジェクトを作成してください。ここではTypeScriptを指定します。
フォルダ作成
$ mkdir my-cdk-app
$ cd my-cdk-app
cdk initコマンド
$ cdk init app --language typescript
4. アプリケーションスタック作成
プロジェクトを作成すると、libフォルダ配下に自動でアプリケーションスタックが作成されます。今回の場合はlib\my-cdk-app-stack.ts
がアプリケーションスタックにあたります。
アプリケーションスタックにLambda本体を新たに定義します。Lambdaの処理内容はsrcフォルダを作成して、その配下に用意していきます。
Lambda本体の定義作成
アプリケーションスタックにLambda本体を定義しましょう。
import { Stack, StackProps } from "aws-cdk-lib";
import { Construct } from "constructs";
import * as lambda from "aws-cdk-lib/aws-lambda";
export class MyCdkAppStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const sampleFunction = new lambda.Function(this, "SampleFunction", {
runtime: lambda.Runtime.NODEJS_12_X,
handler: "index.handler",
code: lambda.Code.fromAsset("src/lambda/SampleFunction"), ★ここでLambdaの処理内容のソース配置場所を指定
});
}
}
Lambdaの処理内容作成
以下のサンプルを参考にindexファイルを新規に作成しましょう。処理内容はコンソールに「hello world!」を出力するだけの簡単なものとします。
exports.handler = async function () {
console.log("hello world!");
};
5. デプロイ
ソースの準備が整ったら、ついにデプロイです。順番にコマンドを実行してアプリケーションスタックをデプロイしましょう!
cdk bootstrapコマンド
デプロイに必要なIAMロールやS3などを自動で作成してくれるコマンドです。このコマンドは初回に1度だけ実行します。コマンド実行時はプロフィールの指定を忘れないように!
$ cdk bootstrap --profile my-cdk
npm run buildコマンド
cdkプロジェクトに既定で用意されているnpm run buildコマンドを実行します。このコマンドは、tscによってtsファイルをjsにトランスパイルしています。今後もLambdaのソース(srcフォルダ配下)を修正した際には、デプロイの前にこのコマンドを実行しておきましょう。
ちなみに、アプリケーションスタック(libフォルダ配下)は、後述のcdk deployコマンド実行時に裏側で自動的にビルド・トランスパイルされるため、アプリケーションスタック"だけ"を修正した場合はnpm run buildコマンドの実行は不要です。
$ npm run build
cdk deployコマンド
ソースのビルド・トランスパイルまで完了したら最後にcdk deployコマンドでアプリケーションスタックの内容をデプロイしていきます。ここでもコマンド実行時のプロフィール指定を忘れないように!
$ cdk deploy --profile my-cdk
デプロイコマンドを実行してしばらくすると、以下の画像ようにデプロイ内容の確認が求められるので、内容に問題がなければ「y」を入力してデプロイを続行しましょう。
動作確認
↑CloudFormationにアプリケーションスタックが作成されてますね!
↑アプリケーションスタックに定義したLambdaも作成されてます!
↑Lambdaを実行すると「hello world!」もコンソール出力されました!
お疲れ様でした
お疲れ様でした。本記事の内容はこれで終わりです。
もう少し触ってみたい方は、公式リファレンスを参考に、アプリケーションスタックに様々なリソースを定義してみると良いと面白いと思います。
それでは!
Author And Source
この問題について(AWS CDK 超入門編 アプリケーションをデプロイしよう), 我々は、より多くの情報をここで見つけました https://zenn.dev/onir/articles/7eedd1de64925f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol