Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IaCを使って楽々構築、IaCとお友達になろう
Search
Kota Sasaki
October 07, 2024
Technology
87
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IaCを使って楽々構築、IaCとお友達になろう
IaCを使って楽々構築、IaCとお友達になろう
Kota Sasaki
October 07, 2024
More Decks by Kota Sasaki
See All by Kota Sasaki
AWS re:Invent 2025 re:Cap
sasakidenki
0
110
JAWS-UG横浜 #80 AWS re:Invent 2024 re:Cap Serverless 〜サーバレスの変革 〜
sasakidenki
0
90
AWS re:Invent 2024 re:Cap AZ障害に対応する
sasakidenki
0
47
JAWS-UG札幌_opening_35
sasakidenki
0
45
JAWS-UG札幌_opening_30
sasakidenki
0
79
JAWS-UG札幌_opening_31
sasakidenki
0
67
JAWS-UG札幌_opening_32
sasakidenki
0
62
JAWS-UG札幌_opening_33
sasakidenki
0
75
JAWS-UG札幌_opening_34
sasakidenki
0
70
Other Decks in Technology
See All in Technology
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
rlifchitz
0
200
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
190
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.5k
入門!AWS Blocks
ysuzuki
1
190
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
0
140
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
20
7.4k
2026 AI Memory Architecture
nagatsu
0
230
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
170
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
410
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
220
徹底討論!ECS vs EKS!
daitak
3
1.7k
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
3
840
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Docker and Python
trallard
47
3.9k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Optimizing for Happiness
mojombo
378
71k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
240
エンジニアに許された特別な時間の終わり
watany
107
250k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
860
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
We Have a Design System, Now What?
morganepeng
55
8.2k
Transcript
IaCを使って楽々構築、IaCとお友達になろう NECソリューションイノベータ株式会社 佐々木 航太
© NEC Corporation 2024 NEC Group Internal Use Only 2
自己紹介 ◼ 佐々木 航太(Kota Sasaki) NECソリューションイノベータ株式会社 普段の業務 AWSの導入支援からSaaSの開発など幅広く対応してます。 AWS Ambassador 2024 Japan AWS TopEnginer 2024/2022/2021 Japan AWS All Certifications 2024 好きなAWSサービス:Lambda、CloudFormation #40歳 #稚内出身 #野球 #AWS歴10年 #ネットワーク #セキュリティ #新製品好き #Soracom
© NEC Corporation 2024 NEC Group Internal Use Only 3
IaCを使って楽々構築、IaCとお友達になろう
© NEC Corporation 2024 NEC Group Internal Use Only 4
まずは質問 普段業務でCloudFormationを使って開発してる人
© NEC Corporation 2024 NEC Group Internal Use Only 5
まずは質問 普段業務でAWS CDKを使って開発してる人
© NEC Corporation 2024 NEC Group Internal Use Only 6
IaC(Infrastructure as Code)とは
© NEC Corporation 2024 NEC Group Internal Use Only 7
IaC(Infrastructure as Code)とは? コードにて、インフラの管理や作成を行うプロセスこと Amazon Elastic Compute Cloud (Amazon EC2) Amazon Bedrock Amazon API Gateway AWS Step Functions
© NEC Corporation 2024 NEC Group Internal Use Only 8
マネージメントコンソール(IaCを導入しない場合)の課題 ・現状の状態を把握することが困難である。 ・人による作業が必要なので、操作ミスをいうリスクが伴う ・再現性がない ・マネージメントコンソールのアップデートが行われ、 手順書の作り直しが必要
© NEC Corporation 2024 NEC Group Internal Use Only 9
IaC導入のメリット ・IaCに書かれている内容を確認すれば環境の確認ができる。 →マネコンから設定変更してたらどうするの?
© NEC Corporation 2024 NEC Group Internal Use Only 10
IaC導入のメリット ・デプロイ時間の削減 →ご飯食べる前に流して、ご飯食べたら完成 ・削除するときも一括で削除 →手順書を逆になぞらなくても大丈夫 ・同じ構成を何回でもデプロイできる →AWSはベストプラクティスをよく使う。Web3層でDockerで あっこの前使ったので行けるかも。
© NEC Corporation 2024 NEC Group Internal Use Only 11
IaC導入のメリット ・人的ミスの排除 →ミスをしない人はいません。 ・CI/CDやバージョン管理も可能 →この前どんな変更したかも一目瞭然
© NEC Corporation 2024 NEC Group Internal Use Only 12
CloudFormationとAWS CDKの概要
© NEC Corporation 2024 NEC Group Internal Use Only 13
AWS CloudFormation ・追加料金なしで利用可能(作成されたリソースについては課金されます) ・記述はJSONとYAMLで記載できるがYAMLの方がおすすめ →コメントがかける ・リリースされたばかりのものなどは作成できないこともある。 →CLI→CloudFormation→CDK AWS CloudFormation Stack Amazon Elastic Compute Cloud (Amazon EC2) Amazon Bedrock Amazon API Gateway AWS Step Functions
© NEC Corporation 2024 NEC Group Internal Use Only 14
AWS CloudFormation ・作成したいリソースがCloudFormationに対応していない・・・ →そんな時にはカスタムリソースが使えます。CloudFormationからLambdaを呼び出すことで、 CLIとかSDKでしか対応してないものにも対応できます。 ただし・・・作成してから数日でCloudFormationが対応することもよくあります。私は1ヶ月以内 に対応したのが3回ほど。あんなに頑張ったのに・・・と。
© NEC Corporation 2024 NEC Group Internal Use Only 15
AWS CloudFormation ・拡張機能というのがあります。標準機能に加えて特定の機能を付け足すことができます。 ーAWS::Include →S3に置いた、別のCloudFormationテンプレートを読み込むことができます。 ーAWS::Serverless-2016-10-31 →サーバレス系のリソースを作成するのに便利な拡張。私はLambdaをデプロイする時は、 これを使ってます。ローカルのパス指定したものをzipにしてS3においてコードの参照先を 格納したS3のパスにしてくれます。 ーAWS::LanguageExtensions →例えば配列のやJSON変換などが可能です。 ーAWS::CloudFormation::Macro ーAWS::CodeDeployBlueGreen 他にもあるので探してみてください。
© NEC Corporation 2024 NEC Group Internal Use Only 16
AWS CloudFormation Resources: WebServerInstance: Type: AWS::EC2::Instance #(...) Properties: ImageId: xxxxxx #(...) UserData: !Base64 Fn::Sub: | #!/bin/bash yum -y install aws-cfn-bootstrap ここにインストールしたいもの /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource xxxx --region ${AWS::Region} /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource xxxxx --region ${AWS::Region} CreationPolicy: ResourceSignal: Timeout: PT15M ・EC2しか使ってません。パッケージのインストールどうするの??
© NEC Corporation 2024 NEC Group Internal Use Only 17
なぜAWS CDKを作成したか https://www.youtube.com/watch?v=AYYTrDaEwLs ・複数のチームが独立して開発・デプロイ可能に するためにモジュール化したい ・繰り返し複雑なものを作成することを避けるために 抽象化したい。 ・JSONやYAMLよりも慣れ親しんだ言語で記述したい。
© NEC Corporation 2024 NEC Group Internal Use Only 18
AWS CDK https://www.youtube.com/watch?v=BmCpa44rAXI&t=8s
© NEC Corporation 2024 NEC Group Internal Use Only 19
AWS CDK https://www.youtube.com/watch?v=BmCpa44rAXI&t=8s
© NEC Corporation 2024 NEC Group Internal Use Only 20
AWS CDK https://www.youtube.com/watch?v=BmCpa44rAXI&t=8s
© NEC Corporation 2024 NEC Group Internal Use Only 21
AWS CDK https://cloud.nri-net.com/reports/aws-cdk-report-2404/
© NEC Corporation 2024 NEC Group Internal Use Only 22
AWS CDK https://cloud.nri-net.com/reports/aws-cdk-report-2404/
© NEC Corporation 2024 NEC Group Internal Use Only 23
AWS CDK https://cloud.nri-net.com/reports/aws-cdk-report-2404/
© NEC Corporation 2024 NEC Group Internal Use Only 24
AWS CDKのメリット CDK何がいいのかは、YAMLを直接記述するよりも記述量が減る Ssequence: Type: AWS::DynamoDB::Table Properties: TableName: xxxx BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: name KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true Muser: Type: AWS::DynamoDB::Table Properties: TableName: yyyy BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: name KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true Muser: Type: AWS::DynamoDB::Table Properties: TableName: tttt BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: name KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true Muser: Type: AWS::DynamoDB::Table Properties: TableName: zzzz BillingMode: PAY_PER_REQUEST AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: name KeyType: HASH StreamSpecification: StreamViewType: NEW_AND_OLD_IMAGES PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true 4つのDynamoDBを作成するYAML for(const name of [”xxxx”, ”yyyy”, “tttt”, ”zzzz”]) new dynamodb.Table(this, 'Sample-table', { tableName: "samble-table", partitionKey: { name: 'id’, type: dynamodb.AttributeType.STRING, }, sortKey: { name: 'name’, type: dynamodb.AttributeType.STRING, }, billingMode: dynamodb.BillingMode.PAY_PER_REQUEST, pointInTimeRecovery: true, timeToLiveAttribute: 'expired', removalPolicy: cdk.RemovalPolicy.DESTROY, }); } 同じ処理をCDKだとこれぐらい
© NEC Corporation 2024 NEC Group Internal Use Only 25
AWS CDKのメリット CloudFormationでS3を削除する場合 new aws_s3.Bucket(this, 'MyBucket', { bucketName: `test-bucket`, removalPolicy: RemovalPolicy.DESTROY, autoDeleteObjects: true, }); AWS CDKの場合 Amazon Simple Storage Service (Amazon S3) コンソールかCLI からオブジェク トを削除 AWS CloudFormation Stack Stackを削除する この記述だけあれば cdk destoryで自動でオ ブジェクトを削除して くれる。 仕組みはさっき登場し たCloudFormationのカ スタムリソース
© NEC Corporation 2024 NEC Group Internal Use Only 26
実際のプロジェクトではどうしてるか?
© NEC Corporation 2024 NEC Group Internal Use Only 27
実際のデプロイ構成例 Client
© NEC Corporation 2024 NEC Group Internal Use Only 28
CloudFormationとAWS CDK使う時の家訓
© NEC Corporation 2024 NEC Group Internal Use Only 29
家訓1 特に最初に作成するときは、パラメータを指定する 作業があるのと、一つもリソースが作成されない場 合は、一度削除して再度作成が必要になります。 失敗しにくいリソースはSNS! 確実に作成できるものだけに絞って流す方が、 後戻りは少ない。 「石橋は叩いて渡る」
© NEC Corporation 2024 NEC Group Internal Use Only 30
家訓2 RDSなどは作成に30分程度かかる。作成された後に、 APサーバを作って・・・エラーになってロールバック 削除にも30分かかり、やり直してトータル2時間・・・ 着実に一つづつ進んでいく方が効率がいいです。 「急がば回れ」
© NEC Corporation 2024 NEC Group Internal Use Only 31
家訓3 着実に進んできて出来上がったら一度削除を。 構築する順序性などで、本番環境作成しよう とそのまま実行するとエラーに。 家訓1、2を守った場合は、壊して再作成! 「一気通貫」
© NEC Corporation 2024 NEC Group Internal Use Only 32
家訓4 CloudFormationにはスタック間で値を参照できる ExportValueとImportValueという機能がありま すが、便利だと思い多用すると痛い目に、 ImportValueされている値は参照元で変更できな くなります。このような場合は ImportValueを やめて参照してる値を直接書いて更新して、 ExportValueしているリソースを修正して、元に 戻してー使う場合は変更がないもの(VPCとか) に限定する方が苦労することは少ないかと。AWS CDKはExportValueとImportValue になるパター ンが多いので注意してください! 「ご利用は計画的に」
© NEC Corporation 2024 NEC Group Internal Use Only 33
家訓5 Lambdaのバージョン全然あげてなかったなー最 新にしよう。あれーエラーになったけどロールバ ックがうまくいかない・・・ 現状のLambdaが新規作成対象外のバージョンの 場合はロールバックできずにどうしようもなくな ります。一度削除して再作成が必要に・・・ 「後の祭り」
© NEC Corporation 2024 NEC Group Internal Use Only 34
家訓6 よく設定内容分からないという場合は、一度マネ ージメントコンソールから設定してみましょう( 特にClooudWatch、StepFunctionもかな)。設定 した後、CLIで設定内容をとると大体同じ内容設 定になってるのでなんの設定入れたらいいかわか りやすいです。 「・・・・」 AWS Management Console
© NEC Corporation 2024 NEC Group Internal Use Only 35
家訓7 最後の最後はサポートに連絡です。 丁寧に何が問題か、または修正してくれるでし ょう。 「神様、仏様、サポート様」
© NEC Corporation 2024 NEC Group Internal Use Only 36
生成系AIを使うことでさらに効率化
© NEC Corporation 2024 NEC Group Internal Use Only 37
生成系AIの活用 AmazonQといいたいですが、まだ東京リージョンに来てないので Bedrockで
© NEC Corporation 2024 NEC Group Internal Use Only 38
生成系AIの活用
© NEC Corporation 2024 NEC Group Internal Use Only 39
生成系AIの活用
© NEC Corporation 2024 NEC Group Internal Use Only 40
まとめ ・IaCを活用することで、効率化、コストダウン、作業ミス軽減 に繋がる。 ・使うコツがあるので注意して使おう。 ・生成系AIを活用したら、さらに効率的!
© NEC Corporation 2024 NEC Group Internal Use Only 41
JAWS FESTA 2024
None