Slide 1

Slide 1 text

JAWS-UG CDK支部 #5 AWS Solutions Constructs で静的ホスティングが楽になる 2023/01/25 watany 1

Slide 2

Slide 2 text

About me Watanabe Yohei (Twitter: _@watany) Company Name: NTT TechnoCross Corporation Role: AWS Architect, Instructor, CCoE AWS, CDK 2022 APN ALL AWS Certifications Engineers AWS Community Builder(Cloud Operations) Contributer (AWS CDK) 2

Slide 3

Slide 3 text

なんかいい感じにホスティングしてえ 3

Slide 4

Slide 4 text

初速を出しながらホスティング する技術 Amplify 初速は出せそう。 AWS WAF 適用が難しいなど運用後 課題あり? AWS CDK ご存じ、開発フレームワーク L2 Construct は良い抽象度だが、も っと速度が欲しい -> L3 Construct ならばありかも 4

Slide 5

Slide 5 text

ところで 5

Slide 6

Slide 6 text

ということで、今回のかくし芸は ・L3 Construct(Solutions Constructs)で ・ホスティング構成 を作るやつ。 6

Slide 7

Slide 7 text

おさらい: AWS Solutions Constructs L3 Construct による高度な抽象化 L2 Construct は単一リソース+ α の抽象化 L3 Construct は L2 × 複数サービスの抽象化 Better Default デフォルト値が Well-Architected 構成 AWS のアーキテクトチームによって構築 BLEA: L2 Construct 中心のテンプレート 7

Slide 8

Slide 8 text

ということで こんな図の構成をやっていく 8

Slide 9

Slide 9 text

こんなモジュールがあるので 9

Slide 10

Slide 10 text

こう書けば終わるはず (Region: ap-northeast-3) 10

Slide 11

Slide 11 text

ダメでした 11

Slide 12

Slide 12 text

Why? CloudFront、WAF のリージョン問題。 ちなみに CloudFront は ap- northeast-3 からデプロイ OK! WAF ACL v2 のドキュメントを見ると……? us-east-1 じゃないとダメそう。 https://docs.aws.amazon.com/ja_j p/AWSCloudFormation/latest/Us erGuide/aws-resource-wafv2- webacl.html 12

Slide 13

Slide 13 text

CDK でどうやるの? (~ v2.49) 13

Slide 14

Slide 14 text

CDK でどうやるの? (v2.50 ~) 14

Slide 15

Slide 15 text

補足:CrossRegionReferences 昔は外部ライブラリ「cdk-remote-stack」 が必要でしたが…… ※参考:cdk-remote-stack で WAFv2 と CloudFront のクロスリージ ョン参照を実装する https://dev.classmethod.jp/article s/cdk-remote-stack-webacl- cloudfront/ v2.50.0 以降は crossRegionReferences: true で設定がすむ! 15

Slide 16

Slide 16 text

これでおわり? まだ動かない 16

Slide 17

Slide 17 text

原因は… ※以下は仮説(issue あげる予定) エラーメッセージが ValidationError: Template error: instance of Fn::GetAtt references undefined resource hogehoge CloudFront が ap-noutheast-3 で管理されている、 crossRegionReferences オプションでは想定さ れていない? 17

Slide 18

Slide 18 text

そんなこんなで Stack 構成は、これが正解でした Stack(Main Region) Stack(us-east-1 Region) 18

Slide 19

Slide 19 text

ポイント S3 Bucket に Solutions Constructs のデフォル ト値を入れる方法 各 L2Construct の設定は、 @aws- solutions-constructs/core で定義 普通に import できる 19

Slide 20

Slide 20 text

まとめ リージョン設計が重要なリソースも最近は簡潔に CDK 管理できる CDK によりクロスリージョン参照が容易 Solutions Constructs の Core ライブラリでデフォルト設定を改善 20