Slide 1

Slide 1 text

CDK ♥SAM なかよし 藤原⿇希(フジワラマキ)|

Slide 2

Slide 2 text

⾃⼰紹介 • マキ @makies • 北海道札幌市 • 株式会社ゆめみ • サーバーサイドエンジニア – PHP TechLead – お⼿製 docker on EC2 → ECS Fargate に移⾏ @練⾺ 北海道札幌市

Slide 3

Slide 3 text

With CDK Tools AWS Cloud Development Kit (AWS CDK)

Slide 4

Slide 4 text

想定視聴者 CDK で synth して deploy の流れを理解した CDK => CloudFormation Template API Gateway + Lambda で APIを作ったことがある Node.js(& npm)や TypeScript を使ったことがある

Slide 5

Slide 5 text

AWS SAM LocalStack AWS Amplify AWS Cloud Development Kit (AWS CDK)

Slide 6

Slide 6 text

AW S A m p l i f y 設定を override Export リソース追加 AWS Amplify https://aws.amazon.com/jp/blogs/news/ extend-amplify-backend-with-custom-aws-resource-using-aws-cdk-or-cloudformation/

Slide 7

Slide 7 text

AWS SAM LocalStack AWS Amplify AWS Cloud Development Kit (AWS CDK)

Slide 8

Slide 8 text

AWS Cloud Development Kit (AWS CDK) https://www.terraform.io/cdktf

Slide 9

Slide 9 text

AWS SAM LocalStack AWS Amplify AWS Cloud Development Kit (AWS CDK)

Slide 10

Slide 10 text

• ローカル開発・テスト⽤ • Serverless系サービス、DB • Feature Coverage • ★ ★〜 ★ ★ ★中⼼ • Proライセンス • WebUI Dashboard • 対応サービス数 約2倍 • Dockerコンテナ • AWS公式ではない https://localstack.cloud/

Slide 11

Slide 11 text

AWS SAM LocalStack AWS Amplify AWS Cloud Development Kit (AWS CDK)

Slide 12

Slide 12 text

AWS SAM Serverless application model • CloudFormation ベース • サーバーレス構成でよく使われるサービスを Cloud Formation より簡単に書ける – API Gateway, Lambda, DynamoDB Step Functions, Event Bridge – 上記以外は Cloud Formation 形式で記述 $ sam build $ cdk synth Cloud Formation template.yaml

Slide 13

Slide 13 text

AWS SAM CLI brew tap aws/tap brew install aws-sam-cli // インストール sam init // 初期ファイル生成 cd sam-app && sam build // YAMLをCloudFormationテンプレートに変換 // Functionのビルド https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/ serverless-getting-started-hello-world.html

Slide 14

Slide 14 text

AWS SAM CLI sam local invoke –e event.json MyFunction // LambdaFunctionをlocalで実⾏ sam local generate-event // Lambdaのevent.jsonを⽣成 sam local start-api –p 3000 // localでHTTPサーバーを⽴てる alexa-skills-kit / alexa-smart- home / apigateway / batch / cloudformation / cloudfront / cloudwatch / codecommit / codepipeline / cognito / config / dynamodb / kinesis / lex / recognition / s3 / ses / sns / sqs / stepfunctions サービス名 https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/ developerguide/sam-cli-command-reference-sam-local-generate-event.html

Slide 15

Slide 15 text

CDKアプリ作成・デプロイフロー cdk bootstrap cdk init app --language typescript npm run build cdk synth (中略) cdk deploy ここで発⽣する Lambda関数の開発

Slide 16

Slide 16 text

SAM CLI with CDK sam local invoke –e event.json –t ./cdk.out/HelloCdkStack.template.json MyFunction // LambdaFunctionをlocalで実⾏ sam local start-api -t ./cdk.out/CdkSamExampleStack.template.json // localでHTTPサーバーを⽴てる https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-cdk-testing.html

Slide 17

Slide 17 text

• Public な http/https URLを発⾏ • Private なIPしか持てない環境 に転送可能 • ⼿元のコードが動く AWS Lambda AWS Cloud HTTP sam local start-api Amazon API Gateway https://ngrok.com/

Slide 18

Slide 18 text

SAM or CDK • 単⼀YAML • サーバーレスアーキテクチャメイン • ⼩規模 • ポリシーテンプレート • TypeScript, Python, Go … • CDKの対応サービスは多い • サーバーレスはもちろん ネットワークやEC2、ストレージ etc • 中〜⼤規模向け AWS CDK Local開発 / デバッグ

Slide 19

Slide 19 text

CDK ♥ SAM