AWS Cloud Development Kitをためしてみる (Javascript)

AWS Cloud Development Kitをためしてみる (Javascript):

AWS Cloud Development Kitを試してみます。


参考

https://github.com/awslabs/aws-cdk
https://awslabs.github.io/aws-cdk/
https://awslabs.github.io/aws-cdk/getting-started.html
https://awslabs.github.io/aws-cdk/reference.html


Getting startedをベースに試してみる

$ npm install -g aws-cdk 
/Users/atsum/.nodebrew/node/v9.11.1/bin/cdk -> /Users/atsum/.nodebrew/node/v9.11.1/lib/node_modules/aws-cdk/bin/cdk 
+ aws-cdk@0.18.1 
added 265 packages in 30.324 
$ cdk --version 
0.18.1 (build 9f7af21) 
プロジェクトを作成する

mkdir hello-cdk 
cd hello-cdk 
git init 
npm init -y 
 
$ npm init -y 
Wrote to /Users/atsum/Work/cdk/hello-cdk/package.json: 
 
{ 
  "name": "hello-cdk", 
  "version": "1.0.0", 
  "description": "", 
  "main": "index.js", 
  "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
  }, 
  "keywords": [], 
  "author": "", 
  "license": "ISC" 
} 
依存関係の追加

npm install @aws-cdk/cdk 
 
npm notice created a lockfile as package-lock.json. You should commit this file. 
npm WARN hello-cdk@1.0.0 No description 
npm WARN hello-cdk@1.0.0 No repository field. 
 
+ @aws-cdk/cdk@0.18.1 
added 10 packages in 3.275s 
AWS CDK Appの定義

$ emacs index.js 
 
const cdk = require('@aws-cdk/cdk'); 
 
class MyStack extends cdk.Stack { 
    constructor(parent, id, props) { 
        super(parent, id, props); 
    } 
} 
 
class MyApp extends cdk.App { 
    constructor(argv) { 
        super(argv); 
 
        new MyStack(this, 'hello-cdk'); 
    } 
} 
 
new MyApp().run(); 
クレデンシャル設定

$ aws configure 
AWS Access Key ID [****************XHSQ]: ************ 
AWS Secret Access Key [****************f4/2]: ************** 
Default region name [ap-northeast-1]:  
Default output format [None]:  
デフォルトで実行するappを指定する

$ emacs cdk.json 
{ 
  "app": "node index.js" 
} 
stackの確認

$ cdk ls -l 
- name: hello-cdk 
  environment: 
    name: 793493288704/ap-northeast-1 
    account: "793493288704" 
    region: ap-northeast-1 
テンプレートの元となるスクリプトを記載する

emacs index.js 
const cdk = require('@aws-cdk/cdk'); 
 
class MyStack extends cdk.Stack { 
    constructor(parent, id, props) { 
        super(parent, id, props); 
    } 
} 
 
class MyApp extends cdk.App { 
    constructor(argv) { 
        super(argv); 
 
        new MyStack(this, 'hello-cdk'); 
    } 
} 
 
new MyApp().run(); 
jsからテンプレートに変換

$ cdk synth hello-cdk 
Resources: 
  CDKMetadata: 
    Type: AWS::CDK::Metadata 
    Properties: 
      Modules: "@aws-cdk/cdk=0.18.1,@aws-cdk/cx-api=0.18.1,hello-cdk=1.0.0" 
デプロイする

$ cdk deploy 
hello-cdk: deploying... 
hello-cdk: creating CloudFormation changeset... 
 0/2 | 16:17:37 | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | hello-cdk User Initiated 
 0/2 | 16:17:42 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata | CDKMetadata  
 0/2 | 16:17:45 | CREATE_IN_PROGRESS   | AWS::CDK::Metadata | CDKMetadata Resource creation Initiated 
 1/2 | 16:17:45 | CREATE_COMPLETE      | AWS::CDK::Metadata | CDKMetadata  
 2/2 | 16:17:47 | CREATE_COMPLETE      | AWS::CloudFormation::Stack | hello-cdk  
 
 ✅  hello-cdk 
 
Stack ARN: 
arn:aws:cloudformation:ap-northeast-1:793493288704:stack/hello-cdk/ad103a90-ee26-11e8-a16d-0a5da605f772 


image.png



S3バケットを作成

$ cat index.js  
const cdk = require('@aws-cdk/cdk'); 
const s3 = require('@aws-cdk/aws-s3'); 
 
class MyStack extends cdk.Stack { 
    constructor(parent, id, props) { 
        super(parent, id, props); 
 
        new s3.Bucket(this, 'MyFirstBucket', { 
        versioned: true 
            }); 
    } 
} 
 
 
class MyApp extends cdk.App { 
    constructor(argv) { 
        super(argv); 
 
        new MyStack(this, 'hello-cdk'); 
    } 
} 
 
new MyApp().run(); 
$ npm install @aws-cdk/aws-s3 
npm WARN hello-cdk@1.0.0 No description 
npm WARN hello-cdk@1.0.0 No repository field. 
 
+ @aws-cdk/aws-s3@0.18.1 
added 6 packages in 3.993s 
$ cdk synth hello-cdk 
Resources: 
  MyFirstBucketB8884501: 
    Type: AWS::S3::Bucket 
    Properties: 
      VersioningConfiguration: 
        Status: Enabled 
    Metadata: 
      aws:cdk:path: hello-cdk/MyFirstBucket/Resource 
  CDKMetadata: 
    Type: AWS::CDK::Metadata 
    Properties: 
      Modules: "@aws-cdk/aws-codepipeline-api=0.18.1,@aws-cdk/aws-events=0.18.1,@aws-c\ 
        dk/aws-iam=0.18.1,@aws-cdk/aws-kms=0.18.1,@aws-cdk/aws-s3=0.18.1,@aws-c\ 
        dk/aws-s3-notifications=0.18.1,@aws-cdk/cdk=0.18.1,@aws-cdk/cx-api=0.18\ 
        .1,hello-cdk=1.0.0" 


image.png



約束

投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)