Upgrade to Pro — share decks privately, control downloads, hide ads and more …

それでも俺はAWS CDKが作るリソースに物理名を付けたい 〜CDKのベストプラクティスは本当...

tomoki10
April 09, 2022

それでも俺はAWS CDKが作るリソースに物理名を付けたい 〜CDKのベストプラクティスは本当にベストなのか〜 / AWS CDK resource name can be a physical name

AWS CDK Conference Japan で発表した内容です。
https://jawsug.connpass.com/event/240422/

tomoki10

April 09, 2022
Tweet

More Decks by tomoki10

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ @tmk2154 @tomoki10 • ࠤ౻ஐथ • Ϋϥεϝιουגࣜձࣾ • CXࣄۀຊ෦ IoTࣄۀ෦

    • ݱࡏɿαʔόʔαΠυ݉ΠϯϑϥΤϯδχΞ ݉QAͱ͔AWSΞΧ΢ϯτͷηΩϡϦςΟ౳ • झຯɿAPEXɺࢄา • ޷͖ͳAWSαʔϏεɿLambdaɺCDK
  2. 6 AWS CDKϕετϓϥΫςΟεͱ͸ AWS CDKͷϕετϓϥΫςΟεʹ͍ͭͯॻ͔ΕͨAWSϒϩά https://aws.amazon.com/jp/blogs/news/best-practices-for-developing-cloud-applications-with-aws-cdk/ ओͳ಺༰ • CDKͷ఩ֶ •

    ૊৫ͰͷऔΓ૊Ήࡍͷ৺ಘ • ίʔυ؅ཧํ๏ • ConstructϥΠϒϥϦͷϕετϓϥΫςΟε • AWS CDK ΞϓϦέʔγϣϯͷ
 ϕετϓϥΫςΟε
  3. 7 AWS CDKϕετϓϥΫςΟεͱ͸ AWS CDKͷϕετϓϥΫςΟεʹ͍ͭͯॻ͔ΕͨAWSϒϩά https://aws.amazon.com/jp/blogs/news/best-practices-for-developing-cloud-applications-with-aws-cdk/ ओͳ಺༰ • CDKͷ఩ֶ •

    ૊৫ͰͷऔΓ૊Ήࡍͷ৺ಘ • ίʔυ؅ཧํ๏ • ConstructϥΠϒϥϦͷϕετϓϥΫςΟε • AWS CDK ΞϓϦέʔγϣϯͷ
 ϕετϓϥΫςΟε
  4. 9 AWS CDK ΞϓϦέʔγϣϯͷϕετϓϥΫςΟε ॻ͔Ε͍߲ͯͨ໨(Օ৚ॻ͖ɿ߲໨໊ɺվߦԼͷίϝϯτɿࣗ෼ͷղऍ) • σϓϩΠ࣌Ͱ͸ͳ͘ɺ߹੒࣌ʹܾఆ͢Δ
 CfnͷύϥϝʔλͰͳ͘CDKͷςϯϓϨʔτੜ੒࣌ʹ஋ΛຒΊࠐ΋͏ • ࣗಈͰੜ੒͞ΕΔϦιʔε໊Λ࢖༻͠ɺ෺ཧతͳ໊લΛ࢖༻͠ͳ͍

    • σϓϩΠཁ݅ʹԠͯ͡ɺΞϓϦέʔγϣϯͷStageΛෳ਺ͷStackʹ෼ׂ͢Δ
 ׬ᘳͳਖ਼ղ͸ͳ͍͕ελοΫ͸ঢ়گʹԠͯ͡෼ׂ • cdk.context.jsonΛίϛοτͯ͠ɺ֎෦తͳཁҼͰ߹੒݁Ռ͕มΘͬͯ͠·͏͜ͱΛආ͚Δ
 ҙਤͤͣϦιʔεͷߋ৽͕ൃੜ͠ͳ͍Α͏ʹ͢ΔͨΊͷ஌ܙ • AWS CDKͰϩʔϧͱηΩϡϦςΟάϧʔϓΛ؅ཧͰ͖ΔΑ͏ʹ͢Δ
 CDKͰҰ෦ఏڙ͞Ε͍ͯΔϩʔϧ΍ηΩϡϦςΟάϧʔϓੜ੒ػೳΛ࢖͏ͱ࠷খݖݶͰ࣮૷͠΍͍͢ • શͯͷStageΛίʔυͰϞσϧԽ͢Δ
 ؀ڥ͝ͱʹStackϑΝΠϧΛ࡞Βͣɺ؀ڥ͝ͱͷ஋͸ύϥϝʔλͰ੾Γସ͑Δͱ؀ڥࠩҟ͕࠷খʹͳΔ • શͯΛଌఆ͢Δ
 ϝτϦΫε΍μογϡϘʔυͳͲΛ࡞ΕΔϝιουΛ׆༻͠Α͏
  5. 10 AWS CDK ΞϓϦέʔγϣϯͷϕετϓϥΫςΟε ॻ͔Ε͍߲ͯͨ໨(Օ৚ॻ͖ɿ߲໨໊ɺվߦԼͷίϝϯτɿࣗ෼ͷղऍ) • σϓϩΠ࣌Ͱ͸ͳ͘ɺ߹੒࣌ʹܾఆ͢Δ
 CfnͷύϥϝʔλͰͳ͘CDKͷςϯϓϨʔτੜ੒࣌ʹ஋ΛຒΊࠐ΋͏ • ࣗಈͰੜ੒͞ΕΔϦιʔε໊Λ࢖༻͠ɺ෺ཧతͳ໊લΛ࢖༻͠ͳ͍ɹɹˡ

    ʂʂʂʂʂʂʂʂʂʂʂʂ • σϓϩΠཁ݅ʹԠͯ͡ɺΞϓϦέʔγϣϯͷStageΛෳ਺ͷStackʹ෼ׂ͢Δ
 ׬ᘳͳਖ਼ղ͸ͳ͍͕ελοΫ͸ঢ়گʹԠͯ͡෼ׂ • cdk.context.jsonΛίϛοτͯ͠ɺ֎෦తͳཁҼͰ߹੒݁Ռ͕มΘͬͯ͠·͏͜ͱΛආ͚Δ
 ҙਤͤͣϦιʔεͷߋ৽͕ൃੜ͠ͳ͍Α͏ʹ͢ΔͨΊͷ஌ܙ • AWS CDKͰϩʔϧͱηΩϡϦςΟάϧʔϓΛ؅ཧͰ͖ΔΑ͏ʹ͢Δ
 CDKͰҰ෦ఏڙ͞Ε͍ͯΔϩʔϧ΍ηΩϡϦςΟάϧʔϓੜ੒ػೳΛ࢖͏ͱ࠷খݖݶͰ࣮૷͠΍͍͢ • શͯͷStageΛίʔυͰϞσϧԽ͢Δ
 ؀ڥ͝ͱʹStackϑΝΠϧΛ࡞Βͣɺ؀ڥ͝ͱͷ஋͸ύϥϝʔλͰ੾Γସ͑Α͏ • શͯΛଌఆ͢Δ
 ϝτϦΫε΍μογϡϘʔυͳͲΛ࡞ΕΔϝιουΛ׆༻͠Α͏
  6. ෺ཧ໊Λ࢖͏৔߹ͷσϝϦοτ • ΠϯϑϥͷҰ෦Λෳ਺σϓϩΠ͢Δ͜ͱ͕Ͱ͖ͳ͍ • Ϧιʔεʹഁյతมߋ͕൐͏৔߹ɺ࠶࡞੒ʹࣦഊ͢Δ 12 ϕετϓϥΫςΟεͷৄࡉ Amazon DynamoDB AWS

    CDK Table A Hoge Table A Fuga Amazon DynamoDB AWS CDK Table A ෺ཧ໊Λݻఆ͠ͳ͍৔߹ ෺ཧ໊Λݻఆ͢Δ৔߹ 1ճ໨ 2ճ໨ ςʔϒϧ ࡞੒ ςʔϒϧ ࡞੒ 1ճ໨ 2ճ໨
  7. 18 ผελοΫͰಉ͡ϦιʔεΛ࡞Δ஌ܙ ը૾Ҿ༻ݩɿ https://aws.amazon.com/jp/blogs/aws/boost-your-infrastructure-with-cdk/ new dynamodb.Table(this, `${id}-items`, { tableName: `${id}-items`,

    partitionKey: { name: "itemId", type: dynamodb.AttributeType.STRING, }, }); const app = new cdk.App(); new UserAStack(app, `${envName}-${projectName}-UserAStack`, {} ); ໋໊نଇ͕ϦιʔεͰҟͳΓҰ෦(Aurora/WAFͳͲ)͸ ελοΫ໊͕ҟͳͬͯ΋Ϧιʔε໊͕ಉ͜͡ͱ΋͋Δ ͷͰ id Λ͚ͭΔ͜ͱͰॏෳΛճආͰ͖Δ envNameͱprojectName͸cdk.json͔Β஫ೖ͢Δ envName͸ݸਓ͝ͱ projectName͸PJΛࣝผ͢ΔͨΊઃఆ
  8. 25 ·ͱΊ • CDKͷϕετϓϥΫςΟε͕ຊ౰͔վΊͯߟ͑ͯΈͨ • ެཧΛٙ͏͜ͱ͸ΞʔΩςΫτͷ໾໨ • ࣗಈͰੜ੒͞ΕΔϦιʔε໊Λ࢖༻͠ɺ෺ཧతͳ໊લΛ࢖༻͠ͳ͍ • ϕετϓϥΫςΟεͰड़΂ΒΕ͍ͯΔར఺ΛվΊͯ֬ೝ

    • ϕετͰͳ͔ͬͨܦݧͷ঺հ • ζϘϥͳਓؒ(ࢲ)ͷ৔߹ɺෆཁϦιʔε͕େྔʹ࢒Δ • ࣗಈϦιʔε໊Ͱೝ஌ෛՙ͕ߴ͘ͳΔ • Ϧιʔε໊ͷࣗಈੜ੒͸΄Ͳ΄Ͳʹɻਏ͍࣌͸ݻఆԽ͠Α͏