際際滷
Submit Search
AWS CDKに犯襪蕕譴 PHPer か?オススメする
?
0 likes
?
909 views
Taichi Inaba
Follow
永堰永カンファレンス2022鞠務彿創
Read less
Read more
1 of 45
Download now
Download to read offline
More Related Content
AWS CDKに犯襪蕕譴 PHPer か?オススメする
1.
@chatii - ちゃちい
- 2022-09-24 at PHPカンファレンス2022 AWS CDK に犯襪蕕譴 PHPer が ? オススメする IaC から秘る ? インフラの
2.
やっとみんな氏えたね
3.
やっとみんな氏えたね
4.
? ちゃちい (@chatii) ? PHPer (4.0くらい?) ?
フルスタックエンジニア ? インフラTではありません ? ライスシャワ`容しです ? 徭失B初
5.
書晩のお瞳き ? PHPer がインフラを尖盾する駅勣來 ? AWS CDK でインフラとふれあおう さないこと ?
AWS CDK の秘圭隈、ベストプラクティス ? AWS アカウントの恬り圭など CDK の櫃鰆りたい圭は鞠瘁 蕗をかけていただければ
6.
インフラを尖盾する駅勣來
7.
インフラを尖盾する駅勣來 ? 徭蛍がQう咾砲鷲呂睿造發△ ? PHPをいているならPHPが咾h廠が和にある ?
アプリケ`ションはアプリケ`ションだけでは咾ない ? フレ`ムワ`クやライブラリがどう恬られているのか ? PHPはなぜ咾のか ? PHPがなぜ咾ないのか ? 圻咀を冥るべく、厘?はインフラの安仇へ´
8.
インフラを尖盾する駅勣來 ? 徭蛍の恬ったアプリケ`ションが ? どうやって咾い討い襪里、どうやって咾すのか ?
咾ない栽 ? どんなコトがk伏している ? どんなトキにk伏している ? どうやって鬉垢襭
9.
インフラを尖盾する駅勣來 愁ぅ鵐侫蕕農Г蕕覆い茲Δ 愁▲廛螢羽`ションを芦伉して恬れる
10.
インフラで是らないように ? 仝インフラ何がeにいるから々 ? 仝できる枠がいるから々 ?
仝永堰永のコ`ド慕くのも娼匯鵜なのに々
11.
できる枠は できるようになっただけの枠
12.
蛍I晒されているからこそ 嬬啜弔勃りに佩く
13.
児粥を仝返Xに々僥ぶ?乾れる
14.
AWS CDK で インフラとふれあう
15.
AWS CDK でインフラとふれあう AWS Cloud Development
Kit (AWS CDK) は、聞いTれたプログラミング 冱Zを聞喘してクラウドアプリケ`ションリソ`スを協xするためのオ`プ ンソ`スのソフトウェア_kフレ`ムワ`クです。 哈喘圷: https://aws.amazon.com/jp/cdk/ ? Infrastructure as Code って ? インフラの撹をコ`ドで燕Fする ? 返恬I(返)をコ`ドにすることでメンテしやすく?Bしやすくする ? クラウドに泙蕕覆ぁ▲ンプレミスだって IaC でできる
16.
IaC, CDK がなぜインフラとふれあうことになるのか ? オンプレミスは麗尖議にモノ(マシンやネットワ`クC匂)がないと乾れない ? ロ`カルに∀襯泪轡(VM)でいいじゃん、もそれはそう ?
なのでそういうを書こそlかして圀しい ? 麗尖議なモノを互業に渇鷸している ? わかりやすいカタチになっている(はず) ? 渇鷸のモトは和の咾砲覆 ? より岑りたいとおもったら週りていけばよい
17.
なぜ麿の IaC ではなく CDK なのか ? 仝プログラミング冱Zで峰々できるから ? TypeScript, Python, Java, .NET, Go
18.
えっ、PHPは ? https://github.com/aws/aws-cdk/issues/548 ? 2018´あっ(賀し ?
弊の嶄には Kotlin で咾ように ? がんばった繁もいます ? https://github.com/Semantic-Configuration/AWS-CDK-Kotlin-DSL
19.
(やむなく) TypeScript で CDK (PHPerK湖)
20.
CDK でBしてみる、なにを 厘?はPHPerなので ? ゴ`ルはPHPが嘛するh廠 ? Hello, World してみよう ?
そのために駅勣なインフラってなんだろう ? まずはサ`バ`´サ`バ`ってなんだ織ぅ鵐食`ネット´殖????????´ ? PHPをインスト`ルする ? 採に ? Windows とか macOS とか Linux とか ? OSが秘ったコンピュ`タが駅勣。
21.
コンピュ`タを喘吭する 麗尖の栽 匯箭(hpのオンラインストア) ピンキリ。ピンキリ。 https://h50146.www5.hpe.com/directplus_ent/server/?ref=dplustopcategory1
22.
コンピュ`タを喘吭する AWS の栽 ? Amazon EC2 (Elastic Compute Cloud) ? インスタンスを羨てる が 1岬のマシンに犁 ?
OSもxべる https://aws.amazon.com/jp/ec2/
23.
え、コンテナは´Fargateとかそういう´ ? 仝g佩h廠々を渇鷸したものなので、書指は鞠しません ? まずは EC2 インスタンスを咾せるようになろう
24.
EC2 インスタンスの恬り圭 import * as
cdk 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.
マシンはネットワ`クに俊Aする ? インタ`ネットに巷_するため
26.
マシンはネットワ`クに俊Aする 麗尖の栽 ? LAN ポ`トからネットワ`クハブなど ? に俊Aし、ネットワ`ク(LAN)に ? 俊Aする
27.
マシンはネットワ`クに俊Aする AWSの栽 ? EC2 インスタンスは VPC 貧で軟咾垢(碧) ? VPC = Virtual Private Cloud ?
AWS貧の仝∀襯優奪肇鍠`ク々 ? ´つまりネットワ`クの岑Rが駅勣 https://aws.amazon.com/jp/vpc/
28.
VPC の恬り圭 export class CdkStack
extends 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.
ネットワ`クはインタ`ネットに俊Aする ? ネットワ`ク』インタ`ネット ? 弊の嶄にはインタ`ネットに俊Aされていないネットワ`クもある
30.
ネットワ`クはインタ`ネットに俊Aする 麗尖の栽 ? ご徭姙にあるル`タ`がその叨護 ? いわゆる仝ブロ`ドバンドル`タ々 ?
キ`ワ`ド: ? DHCP, ル`トテ`ブル, ? デフォルトゲ`トウェイ, DNS
31.
ネットワ`クはインタ`ネットに俊Aする AWS の栽 ? 仝インタ`ネットゲ`トウェイ々 ? VPC に喘吭する https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_Internet_Gateway.html
32.
VPC にインタ`ネットゲ`トウェイを弖紗する(?) // VPC を恬る const
vpc = new Vpc(this, 'Vpc') ? 仝なにも笋錣辰討い覆ぃ拭 ? gはこれだけでインタ`ネット ? ゲ`トウェイも弖紗される ? デフォルトで喘吭される ? リソ`スがYある
33.
サ`バ`はインタ`ネットからアクセスできる ? インタ`ネットゲ`トウェイは仝坪から翌へ々の圭 ? 剃圭髻戸發ら坪へ々つまり巷_するためには
34.
サ`バ`はインタ`ネットからアクセスできる 麗尖()の栽 ? グロ`バルIPアドレス ? プロバイダ`のオプションで耕協IPアドレスを弐sするなど
35.
サ`バ`はインタ`ネットからアクセスできる AWS の栽 ? パブリック IPv4 アドレス ? EC2インスタンスが仝パブリックサブネット々に侭奉する駅勣がある ?
ここまででの譜協だと仝プライベ`トサブネット々に侭奉している
36.
EC2インスタンスをパブリックサブネットへ // 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, // 弖 vpcSubnets: vpc.selectSubnets({ subnetType: SubnetType.PUBLIC, }), })
37.
サ`バ`へアクセスできるポ`トをO協する ? 書指は HTTP と SSH をS辛する (80 および 22)
38.
サ`バ`へアクセスできるポ`トをO協する 麗尖の栽 ? ル`タ`やOSの仝ファイヤウォ`ル々 ? ご徭姙の栽、ネットワ`ク坪のマシンに岷俊グロ`バルIPアドレスを護り 輝てることはあまりない(オススメしない) ?
ル`タ`のC嬬(ポ`トフォワ`ド吉)でポ`ト80はどのロ`カルIPに僕 する、というO協をする
39.
サ`バ`へアクセスできるポ`トをO協する AWS の栽 ? 仝セキュリティグル`プ々に仝インバウンドのル`ル々を弖紗する ? 翌からくるので仝インバウンド々 ?
ちなみに剃は仝アウトバウンドル`ル々
40.
セキュリティグル`プを恬撹し、EC2インスタンスにm喘する 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.
おめでとう、インフラができた ? これでHTTPが巷_されたEC2インスタンスがBできた ? あとはWebサ`バ`とPHPを秘するだけ ?
仝それもインフラでは拭 ? rと栽とFによる
43.
SSH キ`がoいけど EC2 Instance Connect を聞えばOK ? ブラウザ貧で俊Aできる
44.
Apache と PHP を秘れる AWSのチュ`トリアルを歌深に https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2022.html sudo yum install
-y httpd wget php-fpm php-mysqli php-json php php-devel sudo systemctl start httpd echo ?php echo 'Hello, World'; /var/www/html/test.php
45.
インフラとふれあえそうですか
Download