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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
53
JAWS-UG札幌_opening_35
sasakidenki
0
47
JAWS-UG札幌_opening_30
sasakidenki
0
83
JAWS-UG札幌_opening_31
sasakidenki
0
68
JAWS-UG札幌_opening_32
sasakidenki
0
62
JAWS-UG札幌_opening_33
sasakidenki
0
76
JAWS-UG札幌_opening_34
sasakidenki
0
70
Other Decks in Technology
See All in Technology
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
150
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.9k
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
440
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.6k
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
220
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
3.2k
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.6k
kaonavi Tech Night#1
kaonavi
0
110
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
270
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
The Cult of Friendly URLs
andyhume
79
6.9k
First, design no harm
axbom
PRO
2
1.2k
Making the Leap to Tech Lead
cromwellryan
135
10k
BBQ
matthewcrist
89
10k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
The untapped power of vector embeddings
frankvandijk
2
1.8k
Building Adaptive Systems
keathley
44
3.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
970
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