More Related Content
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx PDF
40歳過ぎてもエンジニアでいるためにやっていること PDF
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について PDF
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話 PDF
What's new in Spring Boot 2.6 ? PDF
What's hot
PDF
NetflixにおけるPresto/Spark活用事例 PDF
マルチテナント化で知っておきたいデータベースのこと PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!― PDF
PDF
PDF
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 PDF
Supabase Edge Functions と Netlify Edge Functions を使ってみる – 機能とその比較 – PDF
PPTX
比較サイトの検索改善(SPA から SSR に変換) PDF
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか PDF
入社1年目のプログラミング初心者がSpringを学ぶための手引き PDF
PDF
PPTX
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best... PDF
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは PDF
PDF
AWS CDKに魅入られた PHPer がオススメする
- 1.
@chatii - ちゃちい- 2022-09-24 at PHPカンファレンス2022
AWS CDK に魅入られた PHPer が
オススメする IaC から入る
インフラの話
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
AWS CDK でインフラとふれあう
AWS Cloud DevelopmentKit (AWS CDK) は、使い慣れたプログラミング
言語を使用してクラウドアプリケーションリソースを定義するためのオープ
ンソースのソフトウェア開発フレームワークです。
引用元: https://aws.amazon.com/jp/cdk/
• Infrastructure as Code って?
• インフラの構成をコードで表現する
• 手作業(手順書)をコードにすることでメンテしやすく・構築しやすくする
• クラウドに限らない、オンプレミスだって IaC でできる
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
EC2 インスタンスの作り方
import * ascdk from 'aws-cdk-lib';
import {Construct} from 'constructs';
import {Instance, InstanceClass, InstanceSize, InstanceType, MachineImage} from aws-cdk-lib/
aws-ec2;
export class CdkStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// EC2 インスタンスを作る
const ec2Instance = new Instance(this, 'EC2Instance', {
instanceType: InstanceType.of(
InstanceClass.T2,
InstanceSize.MICRO
),
// Preview版のAmazon Linux
machineImage: MachineImage.fromSsmParameter('/aws/service/ami-amazon-linux-latest/
al2022-ami-kernel-5.15-x86_64'),
vpc: undefined // これはなんぞや?
})
}
}
- 25.
- 26.
- 27.
- 28.
VPC の作り方
export class CdkStackextends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// VPC を作る
const vpc = new Vpc(this, 'Vpc')
// EC2 インスタンスを作る
const ec2Instance = new Instance(this, 'EC2Instance', {
instanceType: InstanceType.of(
InstanceClass.T2,
InstanceSize.MICRO
),
machineImage: MachineImage.fromSsmParameter('/aws/service/ami-amazon-linux-
latest/al2022-ami-kernel-5.15-x86_64'),
vpc: vpc
})
}
}
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
EC2インスタンスをパブリックサブネットへ
// EC2 インスタンスを作る
constec2Instance = new Instance(this, 'EC2Instance', {
instanceType: InstanceType.of(
InstanceClass.T2,
InstanceSize.MICRO
),
machineImage: MachineImage.fromSsmParameter('/aws/service/ami-
amazon-linux-latest/al2022-ami-kernel-5.15-x86_64'),
vpc: vpc,
// 追記
vpcSubnets: vpc.selectSubnets({
subnetType: SubnetType.PUBLIC,
}),
})
- 37.
- 38.
- 39.
- 40.
セキュリティグループを作成し、EC2インスタンスに適用する
const httpSecurityGroup =new SecurityGroup(this, 'AllowHTTPSecurityGroup',
{
vpc: vpc,
})
httpSecurityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(80))
httpSecurityGroup.addIngressRule(Peer.anyIpv6(), Port.tcp(80))
const sshSecurityGroup = new SecurityGroup(this, 'AllowSSHSecurityGroup', {
vpc: vpc,
})
sshSecurityGroup.addIngressRule(Peer.anyIpv4(), Port.tcp(22))
sshSecurityGroup.addIngressRule(Peer.anyIpv6(), Port.tcp(22))
ec2Instance.addSecurityGroup(httpSecurityGroup)
ec2Instance.addSecurityGroup(sshSecurityGroup)
- 41.
- 42.
- 43.
- 44.
- 45.