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
89
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
120
JAWS-UG横浜 #80 AWS re:Invent 2024 re:Cap Serverless 〜サーバレスの変革 〜
sasakidenki
0
97
AWS re:Invent 2024 re:Cap AZ障害に対応する
sasakidenki
0
63
JAWS-UG札幌_opening_35
sasakidenki
0
48
JAWS-UG札幌_opening_30
sasakidenki
0
90
JAWS-UG札幌_opening_31
sasakidenki
0
72
JAWS-UG札幌_opening_32
sasakidenki
0
65
JAWS-UG札幌_opening_33
sasakidenki
0
79
JAWS-UG札幌_opening_34
sasakidenki
0
78
Other Decks in Technology
See All in Technology
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
2
390
全社に広がるMCPサーバーを、 どう安全に管理するか MCPass開発の舞台裏
mtpooh
3
180
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
0
120
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
490
AWSとAzureのマルチクラウド活用における強い味方___AWS_Kiroを使った二刀流スキル作成.pdf
duelist2020jp
1
140
エージェント化するAI:現在地とその先に起きる変化 / AI as Agents: The Current State and the Changes Ahead
ks91
PRO
0
160
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
1
440
IHV like なユースケースへのOpenID Connect 関連仕様の適用事例
optim
0
360
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
3
900
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
2
720
現場の暗黙知を継承するAIエージェント — 対話から生まれる長期記憶と Skills
atsukish
0
130
顧客の要望は2次情報である 〜アンテナを張るFDEの構造論〜
noriakioji
5
1k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
My Coaching Mixtape
mlcsv
0
300
Designing for Performance
lara
611
70k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Abbi's Birthday
coloredviolet
3
9.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Why Our Code Smells
bkeepers
PRO
340
58k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
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