概要

AWS CDKを用いて、CloudFront + S3による静的サイトの作成を行いました。合わせて、CloudFront Functionを用いて、Basic認証とURLにファイル名や拡張子を含まないリクエストにindex.htmlを追加する処理を加えています。さらに、独自ドメインの追加も行いましたので、その備忘録です。

色々と不完全ですが、以下のリポジトリでソースコードを公開しています。

https://github.com/nakamura196/staticBasic

以下のような.envファイルを用意してcdk deployを実行する想定です。

CRBRADEEUECORCCGCMTOKIOA_REOUIADTNNNR__=T_NNNu=N=AAsyAaMM-yMrEEeyEn==ay=:aasbaaatbwaa-bs..1.:bbcabbocbbmm..:ccxooxmmxx

それぞれの説明は以下のとおりです。

項目説明
CERT_ARN証明書のARNarn:aws:acm:xxxx
RECORD_NAME設定したいドメイン名aaa.bbb.com
BUCKET_NAMEファイルを格納するS3バケット名aaa.bbb.com
REGIONリージョン名us-east-1
ACCOUNTAWSのアカウント名(12 桁の数値 )123456789012
DOMAIN_NAMEホストゾーン名bbb.com

Stack

以下のStackを作成しました。

i}iiiiiiiide}mmmmmmmmmoxpSSRaaafpppppppptpc}ottewwwrooooooooeooraamsssorrrrrrrrnrnsccccc}c}c)c}wc}c)c}n}tcco___mttttttttvtsuooooo)o)o;o)eo)o;o)e)kkvcci.tpnnnnnd;nrab;nt"{}naep]r;bnc};nt"cndccdd}p;wrzt);{,Palla"{{ccresssssoSseuuCshOSscfr,esCso)shCeCsoeoee,rRea,rloomaolurtttttm3tmtcltirc3ttfin)siltdf,tierltmrmffaccvo}f]iorcnrnoPuu,wCaaaaaCanac(aookosioiene,otoeisrtoatmaalaair)u,cuooegepoddsosssssesfstsrdbchiwvDeuo,gmwoccwoueuc:lc,tudiieuulcceaio,n{}etur:ewslff-nrisoceoueoneaetdrimentirrBdfeeidinfnllohhwwgrc,Cetdt,irrcssicrttdgrocmcrsNbllNFinebs:paicuFFaPrfFsNitttweeesiitfel5eNh:tcoodt3aloaio(S(poaktItasPeargAnS:awgecruwatirtac:RBedPr_ngiuva35aoaynnkrmourft)tserieDemiotmoictiilsiskonsticormaoedMoPc:iones3msrr,tt-ufutgie;ac,dnt=detleennc:t[as_n:enc_hfaniet`ohMelrlnncns.eItog,_lcrfdeecntoNNNZ,eiO,tAee"m:iAtttc:ittbse$taetioonAAtt:A,Deueoitorf5tavipiaaapoBcbcs`Bs.ac[.ilceu:,{OvthctuecsiTRdttrbmor3stcedmmmrnuyjcs$u3E[mc`aFoo"a"tbbihoyodwcsoyaeZesi"}moefB:,eeeoec:eOeI{c:f.e$dunuat,i[ujood:cfeonpwco5.g;"nffracIkcrsdbkGfCs{dndseorcerdsorasc:eson3Cifa"trr}osCp===edeRtiseueeeaswTc=fsnekc:s:alowsi:_re.lnrwaoomiorstesgIncttcnIeotre=cet:wPnsIaccdIRososwfmmfcnoppps=m:idtkPOtodbRinot=ot:{asot_dtfal(deu,m-srr"Ssprrr.=oneieob.neseoensCrNaw_l.ceiFwot,cdc-o""odttsoooervtnttljAinisnwtenda"wsciVlnousuhoF"dcmaamoar)cccnonarAtyNieLctto.rreNmis_lciotnn_dirrckdwwtcu;eeevueluci"accLaieuaFetwaen_coyeuisccfsdoo-k"ss"ekcsss.twPect,mytOltBrwudim}dclu:wdt:tlr,Tnnl-a--antsssCeo,eyeS"WUyucsnifae-elodefyiooatsilwccwve,...E5sls}t],s.ce_criwcxoufrr,[oun"rTtbisdds"xeeeR33is=-a,eckPctecs]l.udrPondtRgar/b-kk-;tinnnT..citrleolica_,ohdforn,f.oerua/c--cedvvv_HByIndePotloottcutfrnotrPutgcwadlldn:...Aou.deemru.iun.eldmrott_ort.etswkiikdRDBRscDewneidbcdCj.oflon.ooniefts-s-bb-ssEOUNtkEntnnFuyfosfur"ntCcrtc5r("s-l//ltCMCeeStcitcrc(rd"rdo,t.aoi.e3od;3iiaaiSrOAKdtTiltiokwoe,ofn.CclgFCRmi"abwwbtiRIEZ(Rtoy=pneen.mrtAahPiuleAs;m/ss/anDNTotOyu`attbtfCo`lceonnaclt"a--acg___"nhYd,nlOAS.ren,lhPlscsoir;wrrwk,NNN"ei,fe(rriFortoeoi.tsraisoosAAA;.srwintumt.wdlcSi.dsb-uu-{pMMMf,og}enFiDeMiy3oPS(ucttcrEEErnii/Bcifidec.OnRetleeeoo"tan*utlisMtyRrEItio55rpmW.mA`ciecteh.EivC"ou33tsLeO.c]ko(artoCDgeE,nd"-i?obrPc,en{tihdAIin_)f;tf:"""osioet(ebosCRntC{rai"""kiglsPtAud.HE(TLorcS;;;utiisohrtsCICwyAngatpencIlini.ANTepSteta(BAydis(oACG_beS"tectucSec,nLH_Ts._;smkhcctny(LEOOiVA"aPikeatS"tO_P_tIL;nrsestitChWGTHeELao,tsetali_EITBW,gp"ImytosGTMTuEes",deSeu,E_IPcRr)Hen3mdTHZSk_"o{ntCeF"_EE,eR;{st(anrdHADtEti{ntoiED,,Qeto)nsA,Udyn;ttD{EZ(iFr,SocuiTnanb,elcuIUttdsii"eoo,rnnI""{d,,{{

まとめ

色々と考慮不足の点があるかと思いますが、AWS CDKの便利さを体感することができました。他の方の参考になる部分がありましたら幸いです。