終電23時11分って早くね?

都内のIT企業で働くカラオケ大好きエンジニアの雑記

AWS CDKのHello World Tutorialをやってみた

phpcon.hokkaido.jp


PHPカンファレンス北海道 2019最高でしたね!!
参加者のみなさま、スピーカーのみなさま、スポンサーのみなさま、スタッフのみなさま、本当にありがとうございました!!

yumemi.connpass.com

そして、アフターハックに参加していますなう!
株式会社ゆめみさん会場提供ありがとうございます!!

AWS CDKのはなし

@kaz_29さんの発表の中で出てきて、アンカンファレンスでもお話いただいたAWS CDKがとても気になったので触ってみました!

AWS CDK ?

aws.amazon.com

AWS CDKのインストール


npm install -g aws-cdk

cf. Getting Started With the AWS CDK - AWS Cloud Development Kit (AWS CDK)

Hello World Tutorial

docs.aws.amazon.com

公式にチュートリアルがあるので、その通りにやってみる。

1. Create the app directory.

mkdir ~/hello-cdk
cd hello-cdk

2. Initialize the app.

cdk init --language javascript

TypeScriptでやりたいが「使い慣れたプログラミング言語」ではないので一旦JavaScriptで試す。
JavaScriptが使い慣れているのか?と言われるとあやしいですが)

cdk ls

を実行すると HelloCdkStack がデフォルトで存在するのがわかります。

3. Add code to the app.

@aws-cdk/aws-s3をインストール
npm install @aws-cdk/aws-s3
lib/hello-cdk-stack.jsを編集
const cdk = require('@aws-cdk/core');
const s3 = require('@aws-cdk/aws-s3');

class HelloCdkStack extends cdk.Stack {
    constructor(scope, id, props) {
        super(scope, id, props);

        new s3.Bucket(this, 'MyFirstBucket', {
            versioned: true
        });
    }
}

module.exports = { HelloCdkStack }


Bucketを作るのかな?

4. Compile the app, if necessary.

JavaScriptコンパイルいらない。

cdk synth

たぶん、AWS CloudFormationのファイル(?よくわかっていない)が cdk.outディレクトリの下に吐かれている(のだと思う)

5. To deploy the resources defined in the app.

cdk deploy

でぷろぉぉぉい!

f:id:blue_goheimochi:20190922133809p:plain
cdk deploy

S3のバケットできてた!!

6. Test the app.

Test?S3のバケットができてたからOKやな??

7. If there are any issues, loop through modify, compile (if necessary), deploy, and test again.

lib/hello-cdk-stack.jsを変更してみる
new s3.Bucket(this, 'MyFirstBucket', {
  versioned: true,
  encryption: s3.BucketEncryption.KMS_MANAGED
});

encriptionの設定を追加。

cdk diff

で差分が確認できるけどわかりやす。

f:id:blue_goheimochi:20190922135220p:plain
cdk diff

再度deploy
cdk deploy

f:id:blue_goheimochi:20190922135945p:plain

ちゃんと暗号化が有効になった!

まとめ

S3のバケットを作成するという簡単なサンプルだったけど雰囲気はつかめました!
ある程度慣れた言語ということもあり見通しもとてもよく感じます。IDEがそのまま使えたりしてコードを追うのも普段のようにできる感じっぽさがあります。

docs.aws.amazon.com

APIリファレンスも充実しているっぽい(一部非対応のものbetaのものがある)ので、リファレンスをみながら色々試行錯誤してみようと思います。