Slide 1

Slide 1 text

AWSのインフラ構築ツールを 比較してみよう おほり @ 6/24 インフラ技術基礎勉強会 #3 1

Slide 2

Slide 2 text

おしながき 1. 自己紹介 2. ツールの紹介 2.1. Rain 2.2. SAM / SAM CLI 2.3. CDK / CDK Toolkit 2.4. Copilot CLI 3. まとめ 4. おわりに AWSが(発端や主体となって)開発しているインフラ構築ツール・フレームワークをご紹介 2

Slide 3

Slide 3 text

1. 自己紹介 おほり (Ayumu Horii) ● 理工系出身 ● クラウドアーキテクト歴 3年+ ● IaC コンテナ技術が好き ● 推し: こぎみゅん(サンリオキャラ) ● 趣味: お散歩、バイク、VRChat … 3

Slide 4

Slide 4 text

2. ツールのご紹介 4

Slide 5

Slide 5 text

2.1 Rain aws cli の使いづらさを解消 5 https://github.com/aws-cloudformation/rain ● CloudFormation を操作するためのCLIツール ● “aws cloudformation” コマンドの上位互換的な 存在 ○ ひな形生成 ○ テンプレート整形 ○ イケてるログ表示 ○ イケてるリソース一覧表示 ● 巷の情報は少ない(が、シンプルなので別に困ら ない)

Slide 6

Slide 6 text

2.1 Rain (ひな型の生成) AWSTemplateFormatVersion: "2010-09-09" Description: Template generated by rain Resources: MyInstance: Type: AWS::EC2::Instance Properties: AdditionalInfo: CHANGEME # Optional Affinity: CHANGEME # Optional AvailabilityZone: CHANGEME # Optional BlockDeviceMappings: - DeviceName: CHANGEME Ebs: # Optional DeleteOnTermination: false # Optional … 6 $ rain build AWS::EC2::Instance

Slide 7

Slide 7 text

2.2 SAM CFn + サーバレスアーキテクチャ特化 7 https://github.com/aws/aws-sam-cli ● SAM (Serverless Application Model) ● サーバレスリソース用の短縮記法 ○ 通常 CFn 記法の拡張 ○ 短く読みやすい ○ AWS がネイティブ対応 ○ サーバレス系のみ(Lambda, DynamoDB, …) ● テストツールが充実 ○ コマンド一発でローカルLambdaをデプロイしてテ スト実行 ○ CFn を介さずに Lambda を更新する SAM Acceralate ● パイプライン構築もかんたん ○ sam pipeline

Slide 8

Slide 8 text

2.2 SAM (記述量の削減) HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.9 Architectures: - x86_64 Events: HelloWorld: Type: Api Properties: Path: /hello Method: get Environment: Variables: TABLE_NAME: !Ref Table TABLE_ARN: !GetAtt Table.Arn Policies: - DynamoDBCrudPolicy: TableName: !Ref Table Table: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: hello AttributeType: S BillingMode: PAY_PER_REQUEST KeySchema: - AttributeName: hello KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES 8

Slide 9

Slide 9 text

2.3 CDK 豊富なライブラリとコミュニティ 9 https://github.com/aws/aws-cdk ● AWS CDK (Cloud Development Kit) ● インフラをプログラミング言語で記述 ○ TypeScript, Python 等 ■ TypeScriptなら型の恩恵を享受できる ○ プログラミング言語と同じ開発体験 ○ ライブラリを扱える ■ 抽象化で記述量を大幅削減 ○ 最終的に CFn テンプレートに変換 ● 管理負荷は高め ○ かなり頻繁な更新(良いこと) ○ Node.js の管理 ● 学習コストも高め ○ CFnに加え、言語の知識が必要 ● コミュニティが超活発 ○ Construct Hub: 様々なライブラリが大量に公開 ○ JAWS にも CDK 支部が存在

Slide 10

Slide 10 text

2.3 CDK (Construct Hub) 10

Slide 11

Slide 11 text

2.4 AWS Copilot CLI 誰でも簡単コンテナデプロイ 11 https://github.com/aws/copilot-cli ● AppRunner と ECS へのデプロイに特化したCLI ツール ○ GitHub Copilot とは無関係 ● インフラを意識せずコンテナをデプロイ ○ 対話形式 ○ ベストプラクティスな構成を自動適用 ● 独自のリソース概念とテンプレート記法 ○ AWSリソースを抽象化 ○ 最終的には CFn でデプロイ ● 拡張も可能(その気になれば) ○ CFn テンプレートを追加してカスタムリソース を追加

Slide 12

Slide 12 text

2.4 Copilot CLI (対話形式) 12

Slide 13

Slide 13 text

3. まとめ 13

Slide 14

Slide 14 text

まとめ (むりやり比較表) Rain SAM CDK AWS Copilot こんな人向け CloudFormation を もっと便利に使いたい サーバレス開発を 加速させたい プログラミング言語と コミュニティの恩恵を 受けたい コンテナを楽に デプロイ・運用したい 汎用性の高さ ★★★ ★★★ ★★★ ★★ 運用負荷の低さ ★★★ ★★★ ★★ ★★★ 難易度の低さ ★★ ★★ ★ ★★★ コミュニティの 活発さ(主観) ★★ ★★ ★★★ ★★ 14

Slide 15

Slide 15 text

4. おわりに 15

Slide 16

Slide 16 text

おわりに 16 ● それぞれ用途が違うので、目的に合わせて選ぶと良い ○ SAMとCDKを組み合わせる手法も存在 ● 食わず嫌いは損!なんにせよ触ってみよう ● 今回紹介できなかった方々 : Amplify CLI, CloudFormation CLI

Slide 17

Slide 17 text

弊社について 17 株式会社エーピーコミュニケーションズ(APC) ● クラウドネイティブ環境の内製化・自動化支援 ● 洒落たイベント会場(@神田本社) 貸し出してます ● 最近 ○ カプセルトイを企画・発売(?) ○ APN Certification Distinction 100 に認定