inflearn logo
็Ÿฅ่ญ˜ๅ…ฑๆœ‰
inflearn logo

ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ (AWS, Python, Terraform)

ใ‚ฏใƒฉใ‚ฆใƒ‰ใฎใŸใ‚ใฎใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่จ€่ชž(Python, Terraform)ใ‚’ๅญฆในใ‚‹ใ‚ˆใ†ใซๆง‹ๆˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใ‚ทใƒณใƒ—ใƒซใ ใŒ้ขๅ€’ใช็นฐใ‚Š่ฟ”ใ—ๆฅญๅ‹™ใ‚„ใ€ใ„ใคใฉใฎใ‚ˆใ†ใซใƒ‡ใƒ—ใƒญใ‚คใ—ใŸใฎใ‹ใ€็‰นๅฎšใฎใ‚ฝใƒชใƒฅใƒผใ‚ทใƒงใƒณใงใฏ่งฃๆฑบใงใใชใ„่‡ช็คพๅ›บๆœ‰ใฎใƒใƒชใ‚ทใƒผใชใฉใ‚’็›ดๆŽฅไฝœๆˆใ—้ฉ็”จใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚็‰นใซๆœ€ใ‚‚ไบบๆฐ—ใฎใ‚ใ‚‹IaC(Infrastructure as Code)ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใงใ‚ใ‚‹Terraformใ‚’้€šใ—ใฆใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใ‚’้ฉ็”จใ—ใ€Pythonใง่ถ…็ฐกๅ˜ใชใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ไฝœๆˆใ‚‚่กŒใฃใฆใฟใพใ™๏ผ

้›ฃๆ˜“ๅบฆ ๅˆ็ดš

ๅ—่ฌ›ๆœŸ้–“ ็„กๅˆถ้™

Python
Python
Terraform
Terraform
AWS
AWS
devsecops
devsecops
Python
Python
Terraform
Terraform
AWS
AWS
devsecops
devsecops

ใŠ็Ÿฅใ‚‰ใ›

8 ไปถ

  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ็Ÿฅ่ญ˜ๅ…ฑๆœ‰่€…ใƒใƒงใƒณใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    ๅ…ˆใปใฉใŠ็Ÿฅใ‚‰ใ›ใ—ใŸใ‚ˆใ†ใซๆ™‚้–“ใฎๆตใ‚Œใซๆฒฟใฃใฆใใ—ใฆ้ฃ›ใถใ‚ˆใ†ใซ่ฌ›็พฉใ‚’ๆ”นๅ–„ใ—ๅค‰ๆ›ดใ™ใ‚‹ใŸใ‚ใฎ็›ฎ็š„ใงๆ”น็ทจใ‚’้€ฒใ‚ใ€ไปŠๆ—ฅใฎ้ƒจใงๆ–ฐ่ฆๆ’ฎๅฝฑใ—ใŸ่ฌ›็พฉใŸใกใฎใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใŒๅฎŒไบ†ใ—ใพใ—ใŸใ€‚

    ็ฐกๅ˜ใซๅค‰ๆ›ดใ•ใ‚ŒใŸ้ƒจๅˆ†ใ‚’็”ณใ—ไธŠใ’ใ‚Œใฐใ€

    1. ่ฟฝๅŠ ใ•ใ‚ŒใŸ้ƒจๅˆ†

      1. VPC Cidrใฎ่จญ่จˆใจAWS Network Firewallใฎๆง‹็ฏ‰

      2. Steampipe + Streamlitใซใ‚ˆใ‚‹ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒ€ใƒƒใ‚ทใƒฅใƒœใƒผใƒ‰ใฎไฝœๆˆ

      3. Terraform้–ข้€ฃใฎRemote Stateใ€depends_onใชใฉ

    2. ๆ”นๅ–„ใ•ใ‚ŒใŸ้ƒจๅˆ†

      1. Pythonใฎ็‰นๅฎšใฎๆฉŸ่ƒฝใฎใƒชใ‚นใƒˆใงใฏใชใใ€boto3ใซๅŸบใฅใ„ใฆ้–‹็™บใ—ใ€ๆฎต้šŽ็š„ใชใ‚ณใƒผใƒ‰ใฎๆ”นๅ–„

      2. Terraform้–ข้€ฃใฎ่ฑŠๅฏŒใชไพ‹ใจๅฎŸ่ทต

      3. ใ‚ใพใ‚Šไฝฟใ‚ใ‚Œใฆใ„ใชใ„ใจๅˆคๆ–ญใ•ใ‚ŒใŸใ‚Šใ€่ฌ›็พฉใจ็›ดๆŽฅ้–ข้€ฃใŒใชใ„ใจๆ€ใ‚ใ‚Œใ‚‹้ƒจๅˆ†ใ‚’้™คใ

    3. ้™คๅŽปใ•ใ‚ŒใŸ้ƒจๅˆ†๏ผˆ6ใƒถๆœˆ๏ฝž1ๅนด็จ‹ๅบฆใฏๆฎ‹ใ™ไบˆๅฎš๏ผ‰

      1. ๆ—ขๅญ˜่ฌ›็พฉ้ƒจ

    ไธŠ่จ˜ใจๅŒใ˜ใงใ™ใ€‚ๆ—ขๅญ˜ใฎ่ฌ›็พฉใ‚’ใ™ในใฆๅ—่ฌ›ใ•ใ‚ŒใŸๆ–นใฏใ€Pythonใ€Terraform้ƒจๅˆ†ใฏๆ—ขใซใ‚ˆใใ”ๅญ˜็Ÿฅใฎใ‚ˆใ†ใงใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ้ƒจๅˆ†ใ ใ‘ใ‚’ๆ–ฐใŸใซใ”่ฆงใ„ใŸใ ใใ“ใจใ‚’ใŠๅ‹งใ‚ใ—ใพใ™ใ€‚

    ๆฎ‹ใ‚Šใฎ2024ๅนดใซไป•ไธŠใ’ใฆ้ ‚ใใ€ๆ˜Žใ‘ใพใ—ใฆใŠใ‚ใงใจใ†2025ๅนดใซใชใ‚Šใพใ™ใ‚ˆใ†ใซใ€‚ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    ใƒใƒงใƒณใ‚ฌใƒณใƒŸใƒณใƒ‰ใƒชใƒผใƒ ใ€‚

    0
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ็Ÿฅ่ญ˜ๅ…ฑๆœ‰่€…ใƒใƒงใƒณใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    ่ฌ›็พฉใ‚’ๆŽฒ็คบใ—ใฆ็ด„1ๅนด8ใƒถๆœˆ็จ‹ๅบฆใŒ้ŽใŽใพใ—ใŸใ€‚

    ๅค‰ๆ›ดใ•ใ‚ŒใŸๅ†…ๅฎนใ‚‚ใ‚ใฃใฆใ€ๅˆใ‚ใฆๆ’ฎๅฝฑใ—ใŸ่ฌ›็พฉใ ใ‹ใ‚‰ๆ˜ ๅƒใ‚„่ณ‡ๆ–™ใ€่ฌ›็พฉๅ†…ๅฎนใชใฉใŒๆ›ดๆ–ฐใ•ใ‚ŒใŸใ‚‰ใ„ใ„ใชใจๆ€ใ„ใพใ—ใŸใ€‚ .)


    ใ ใ‹ใ‚‰๏ผ่ฌ›็พฉใ‚’ๆ”น็ทจใ—ใ‚ˆใ†๏ผ

    ใ€ไฟๆŒใ•ใ‚Œใ‚‹้ƒจๅˆ†ใ€‘

    1. ็พๅœจใฎใ‚ซใƒชใ‚ญใƒฅใƒฉใƒ ใฎใ‚ปใ‚ฏใ‚ทใƒงใƒณ

      1. ่ฉณ็ดฐใช้€ฒ่กŒ็Šถๆณใฏๅค‰ๆ›ดใ•ใ‚Œใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚

    [ๅ‰Š้™คใ•ใ‚Œใ‚‹้ƒจๅˆ†]

    1. Pythonใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ

      1. ใƒžใƒซใƒใƒ—ใƒญใ‚ปใ‚น

        1. ็พๅœจใƒญใƒผใ‚ฝใƒณไธ่ฆใ ใจๆ€ใ‚ใ‚Œใ‚‹

      2. GILใซ้–ขใ™ใ‚‹ๅ†…ๅฎน

        1. ็Ÿญใ„ๆ™‚้–“ๅ†…ใซใ‚ใพใ‚Šใซใ‚‚ๅคšใใ‚’่ชฌๆ˜Žใ—ใ‚ˆใ†ใจใ—ใŸใ‚ˆใ†ใงใ€ไธ่ฆใซ่ฆ‹ใˆใ‚‹ใ€‚

    2. Terraformใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ

      1. IAMใ‚’็”จใ„ใŸใƒ†ใƒฉใƒ•ใ‚ฉใƒผใƒ ใฎ่ชฌๆ˜Ž

        1. ไป–ใฎๆฉŸ่ƒฝใง่ชฌๆ˜Žใ‚’็ฝฎใๆ›ใˆใ‚‹ไบˆๅฎš

      2. test ้–ข้€ฃๅ†…ๅฎน

    [่ฟฝๅŠ ใ•ใ‚Œใ‚‹้ƒจๅˆ†]

    1. 3-Tierใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใฎใŸใ‚ใฎVPC่จญ่จˆ

    2. AWS Network Firewallใ‚’ๆดป็”จใ—ใŸใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ


    ใ„ใใ‚‰้…ใ‚Œใฆใ‚‚ไปŠๅนดไธญใฏๅฎŒๅ…จใซๆ”น็ทจใ•ใ‚ŒใŸๆ˜ ๅƒใซ็ฝฎใๆ›ใˆใ‚ˆใ†ใจ่จˆ็”ปใ—ใฆใ„ใพใ™ใ€‚ใ“ใฎใŸใ‚ใซ่ฟฝๅŠ ็š„ใซใ‚ขใƒณใ‚ฑใƒผใƒˆใ‚‚ๅ—ใ‘ใ‚ˆใ†ใจใ—ใพใ™ใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐๆ”น็ทจใซ้–ขใ™ใ‚‹ใ‚ขใƒณใ‚ฑใƒผใƒˆ

    ไธŠ่จ˜ใฎใƒชใƒณใ‚ฏใ‹ใ‚‰ใ‚ณใƒกใƒณใƒˆใ‚’ใŠๆ›ธใใใ ใ•ใ„ใ€‚ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    ใƒใƒงใƒณใ‚ฌใƒณใƒŸใƒณใƒ‰ใƒชใƒผใƒ ใ€‚

    2
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚็Ÿฅ่ญ˜ๅ…ฑๆœ‰่€…ใƒใƒงใƒณใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    ไปŠๅ›žใ€Œๅˆใ‚ใฆใ‚นใ‚ฟใƒผใƒˆใ™ใ‚‹ใƒ‰ใƒƒใ‚ซใƒผใจใ‚ณใƒณใƒ†ใƒŠใ€ใจใ„ใ†่ฌ›็พฉใ‚’ใƒชใƒชใƒผใ‚นใ—ใ‚ˆใ†ใจๆ€ใ„ใพใ™ใ€‚ ๏ผˆใ‚ชใƒผใƒ—ใƒณๆ—ฅใฏใพใ ๆœชๅฎš๏ผ‰

    ใ“ใ‚Œใซไผดใ„ใ€ไปฅไธ‹ใฎใƒชใ‚นใƒˆใฎ่ฌ›็พฉใ‚’ๅ—่ฌ›ไธญใฎๆ–นใซๆ„Ÿ่ฌใฎๆฐ—ๆŒใกใ‚’่พผใ‚ใฆๅ—่ฌ›็”Ÿ็™ป้Œฒใ‚คใƒ™ใƒณใƒˆใ‚’้€ฒ่กŒใ—ใ‚ˆใ†ใจใ—ใพใ™ใ€‚

    1. ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ

    2. ๅฎŸๅ‹™ใงไฝฟ็”จใ—ใฆใ„ใ‚‹AWSใ‚ฏใƒฉใ‚ฆใƒ‰IAMใฎ็†่งฃใจใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ

    3. [DevOps]้ซ˜้€Ÿใงๅฎ‰ๅ…จใชใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ้…ๅธƒใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ๏ผˆCI / CD๏ผ‰ใฎไฝœๆˆ


    Googleใƒ•ใ‚ฉใƒผใƒ ใ‚’้€šใ˜ใฆใƒชใƒชใƒผใ‚นใ•ใ‚Œใ‚‹่ฌ›็พฉใฎๅ†…ๅฎนใ‚’ใ”็ขบ่ชใ„ใŸใ ใใ€ใƒ•ใ‚ฉใƒผใƒ ใซ่จ˜ๅ…ฅใ—ใฆใŠ็”ณใ—่พผใฟใ„ใŸใ ใ‘ใ‚Œใฐใ€ๆ™‚้–“้€šใ‚Šใซ่ฟฝๅŠ ้€ฒ่กŒไบˆๅฎšใงใ™ใ€‚
    ใŸใ ใ—ใ€ๅฎŸ้š›ใฎ่ฌ›็พฉใŒใƒชใƒชใƒผใ‚นใ•ใ‚Œใ‚‹ใพใงใฏๅ—่ฌ›ใƒชใ‚นใƒˆใซใฏๅ‡บใพใ›ใ‚“ใฎใงใ€ใ“ใฎ็‚นใฏๅ‚่€ƒใซใŠ้ก˜ใ„ใ—ใพใ™ใ€‚

    ใ„ใคใ‚‚่ณชใฎ้ซ˜ใ„่ฌ›็พฉใ‚’ๆไพ›ใ™ใ‚‹ใ‚ˆใ†ๅŠชใ‚ใฆใพใ„ใ‚Šใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    1
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่ฌ›ๅธซใฎใƒใƒงใƒณใƒปใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    Terraform 1.8 ใƒใƒผใ‚ธใƒงใƒณใงใฏprovider-defined functionsใจใ„ใ†ๆฉŸ่ƒฝใŒใƒชใƒชใƒผใ‚นใ•ใ‚Œใพใ—ใŸใ€‚

    ็ฐกๅ˜ใซ่จ€ใˆใฐใ€ใƒ—ใƒญใƒใ‚คใƒ€ใƒฌใƒ™ใƒซใง้–ขๆ•ฐใ‚’ใ‚ตใƒใƒผใƒˆใ™ใ‚‹ใฎใงใ™ใŒใ€‚ใพใ•ใซไพ‹ใ‚’่ฆ‹ใ‚‹ใจใ€

    terraform { required_providers { aws = { source = "hashicorp/aws" } } } provider "aws" {} # result: # { # "partition": "aws", # "service": "iam", # "region": "", # "account_id": "444455556666", # "resource": "role/example", # } output "role" { value = provider::aws::arn_parse("arn:aws:iam::444455556666:role/example") } # result: # { # "partition": "aws", # "service": "elasticloadbalancing", # "region": "us-east-2", # "account_id": "123456789012", # "resource": "loadbalancer/app/my-load-balancer/1234567890123456", # } output "elb" { value = provider::aws::arn_parse("arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456") }

    ๏ผˆ็‹‚ใฃใŸโ€ฆ๏ผ‰

    ๅ‡บใฆใใŸใฐใ‹ใ‚ŠใฎๆฉŸ่ƒฝใชใฎใงๆฉŸ่ƒฝใŒ็ขบใ‹ใซๅคšใไธ่ถณใ—ใฆใ„ใ‚‹ใŒใ€ๅฎฃ่จ€ๅž‹่จ€่ชžใ‚’ๅคšๆง˜ใช็ต„ใฟ่พผใฟ้–ขๆ•ฐใ‚’้€šใ˜ใฆๆ‰‹็ถšใ็š„ใซไฝฟ็”จใ—ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ๅ ดๅˆใŒใ‚ใฃใŸ๏ผˆsplitๅพŒใซใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใ‚ขใ‚ฏใ‚ปใ‚นใ—ใฆlocalใซไฟๅญ˜ใ—ใฆ...๏ผ‰ใ€ใ‚‚ใ†ๅฐ‘ใ—ๅฎฃ่จ€็š„ใซใ‚ตใƒใƒผใƒˆใซใชใฃใฆใ„ใใ‚ˆใ†ใงใ™ใ€‚

    ใจใฆใ‚‚ๆš–ใ‹ใ„ๆฉŸ่ƒฝใชใฎใงใ€ใจใฆใ‚‚็ฐกๅ˜ใงใ™ใ€‚ใ‚‚ใ—ใ”่ฆงใฎๆ–นใฏใƒชใƒณใ‚ฏๅ‚่€ƒใซใ—ใฆใใ ใ•ใ„๏ผ

    ๅˆฅใฎ้–ขๆ•ฐใŒ็”Ÿใพใ‚Œใ‚‹ใจๆ€ใ†ใฎใงใ€ใใฎ้–“ใซ็ต„ใฟ่พผใฟ้–ขๆ•ฐใ‚’่ฆ‹ใคใ‘ใฆๅฎŸ่ฃ…ใ—ใŸใ“ใจใซใคใ„ใฆ่ฃœๅ„Ÿใ•ใ‚ŒใŸๆฐ—ๆŒใกใงใ™ใญใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    2
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ๏ฝฅ

    ไฟฎๆญฃๆธˆใฟ

    ใ“ใ‚“ใซใกใฏใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่ฌ›ๅธซใฎใƒใƒงใƒณใƒปใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    Terraform 1.7 ใƒใƒผใ‚ธใƒงใƒณใŒใƒชใƒชใƒผใ‚นใ•ใ‚Œใพใ—ใŸใ€‚้–ข้€ฃใ™ใ‚‹ใŠ็Ÿฅใ‚‰ใ›ใฏใ“ใกใ‚‰ใ‹ใ‚‰ใ”่ฆงใ„ใŸใ ใ‘ใพใ™ใ€‚
    ๆ€ใฃใŸใ‚ˆใ‚Š๏ผˆๅคงใใใ‚นใƒˆใƒฌใ‚นใ‚’ๅ—ใ‘ใ‚‹ใปใฉ๏ผ‰ๅคงใใชๅค‰ๅŒ–ใŒ็”Ÿใ˜ใพใ—ใŸใ€‚

    1. ใƒ†ใ‚นใƒˆๅพŒใซใƒขใ‚ธใƒฅใƒผใƒซใŒๅ‰Š้™คใ•ใ‚Œใ‚‹้ †ๅบใŒๅค‰ๆ›ดใ•ใ‚Œใพใ™ใ€‚

      1. ๆ—ขๅญ˜

        1. ใƒกใ‚คใƒณใ‚นใƒ†ใƒผใ‚ฟใ‚นใƒ•ใ‚กใ‚คใƒซ

        2. ๅ„ใƒขใ‚ธใƒฅใƒผใƒซใ”ใจใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นใƒ•ใ‚กใ‚คใƒซ๏ผˆ้€†้ †๏ผ‰

        3. ใ—ใŸใŒใฃใฆใ€ใƒขใ‚ธใƒฅใƒผใƒซใ‚’ๅ‚็…งใ—ใฆใƒ†ใ‚นใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใจใ€ใƒกใ‚คใƒณใ‚นใƒ†ใƒผใ‚ฟใ‚นใƒ•ใ‚กใ‚คใƒซใซใƒญใƒผใƒ‰ใ•ใ‚Œใ‚‹ใƒชใ‚ฝใƒผใ‚นใซไพๅญ˜ใ—ใพใ™ใ€‚

      2. ๅค‰ๆ›ด

        1. run ใƒ–ใƒญใƒƒใ‚ฏ้€†้ †ใง็Šถๆ…‹ใƒ•ใ‚กใ‚คใƒซใ‚’ๅ‰Š้™คใ™ใ‚‹

        2. ใ ใ‹ใ‚‰ๆ—ฉใๅ‰Š้™คใ•ใ‚Œใ‚‹ใƒชใ‚ฝใƒผใ‚นใซไพๅญ˜

      3. ็ฐกๅ˜ใชไพ‹

        1. image

        2. ไปฅๅ‰ใฏไธŠ่จ˜ใฎใ‚ˆใ†ใซไฝœๆˆใงใใพใ›ใ‚“ใงใ—ใŸใŒใ€1.7ใ‹ใ‚‰ใฏๅฏ่ƒฝใงใ™ใ€‚

    2. Mocks (in beta)

      1. ็ฐกๅ˜ใซ่จ€ใˆใฐใ€ๅฎŸ้š›ใฎใƒ—ใƒญใƒใ‚คใƒ€ใ€ใƒชใ‚ฝใƒผใ‚นใ€ใƒ‡ใƒผใ‚ฟใ€ใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝœๆˆ/ๅ‰Š้™ค/ๅ‚็…งใ›ใšใซ็‰นๅฎšใฎๅ€คใ‚’ๅฎš็พฉใ—ใฆไฝฟ็”จใ™ใ‚‹ๆฉŸ่ƒฝใงใ™ใ€‚

      2. ใ‚ใ‚‰ใ‹ใ˜ใ‚่ฆ‹ใŸ็ตๆžœใ€ๅ˜็ด”ใซ้…ๅธƒใพใŸใฏ็”Ÿๆˆใ•ใ‚Œใ‚‹ๅž‹ใ‚’ใƒขใƒƒใ‚ฏใƒ‡ใƒผใ‚ฟใซใ—ใฆๅ…ฅใ‚ŒใฆใŠใ‘ใฐใ€ไปฅๅ‰ใ‚ˆใ‚Šใšใฃใจๆ—ฉใใƒ†ใ‚นใƒˆใŒๅฏ่ƒฝใซใชใ‚‹ใ‚ˆใ†ใงใ™ใ€‚

      3. ไพ‹ใ‚’ไปฅไธ‹ใซ็คบใ—ใพใ™ใ€‚

       # main.tftest.hcl mock_provider "aws" { override_data { target = module.credentials.data.aws_s3_object.data_bucket values = { body = "{\"username\":\"username\",\"password\":\"password\"}" } } } run "test" { assert { condition = jsondecode(local_file.credentials_json.content).username == "username" error_message = "incorrect username" } }
      1. ใƒ‡ใƒผใ‚ฟใƒ–ใƒญใƒƒใ‚ฏใฎ็ตๆžœใ‚’ไฝœๆˆใ—ใ€runใƒ–ใƒญใƒƒใ‚ฏใ‚’ไป‹ใ—ใฆ่ฟ…้€Ÿใซใƒ†ใ‚นใƒˆใงใใพใ™ใ€‚

    3. 1.7 ใƒชใƒชใƒผใ‚นใซ้–ขใ™ใ‚‹ใƒฌใƒ“ใƒฅใƒผ

      1. ใƒžใ‚คใƒŠใƒผใƒใƒผใ‚ธใƒงใƒณ ไธ€ๅบฆใซๆœฌๅฝ“ใซ้‡่ฆใชใƒญใ‚ธใƒƒใ‚ฏใ‚’ๅค‰ๆ›ดใ—ใŸใ“ใจใฏๆœฌๅฝ“ใซๅฟƒใŒ็—›ใๆ„Ÿใ˜ใพใ™ใ€‚ใ‚‚ใ—็งใฎ่ฌ›็พฉใ‚’่ฆ‹ใฆใ€ๆ—ขๅญ˜ใฎๅ‰Š้™ค็Šถๆ…‹ใ‚’ๅŸบๆบ–ใซใ—ใฆใใ ใ•ใฃใŸๆ–นใ€…ใซไปฃใ‚ใ‚Šใซ่ฌ็ฝชใ‚’็”ณใ—ไธŠใ’ใพใ™ใ€‚

      2. ไธŠ่จ˜ใฎ็†็”ฑ+ in betaใฎ็Šถๆ…‹ใชใฎใงใ€Mocksใซใคใ„ใฆใฎๅ†…ๅฎนใฏใ€ๅพŒใงใ‚‚ใ†ๅฐ‘ใ—ๆˆ็†Ÿใ—ใ€็กฌใใชใฃใŸใ‚‰่ฟฝๅŠ ใงๆ’ฎใ‚ใ†ใจใ—ใพใ™ใ€‚ใŸใ ใ—ใ€ใจใซใ‹ใ็™บๅฃฒใ•ใ‚ŒใŸๅ†…ๅฎนใฏใŠๅฑŠใ‘ใ™ใ‚‹ใฎใŒๅˆใ†ใ‚ˆใ†ใชใฎใงใ€ใ“ใฎใ‚ˆใ†ใชใƒ‹ใƒฅใƒผใ‚นใ‚’็™บ่กŒใ—ใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่ฌ›ๅธซใฎใƒใƒงใƒณใƒปใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    Python GILใซ้–ขใ—ใฆใ€ใ‚‚ใ†ๅฐ‘ใ—่ฉณ็ดฐใชๆ˜ ๅƒใ‚’ๆ’ฎๅฝฑๅพŒใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใพใ—ใŸใ€‚

    ๅฎŸ้š›ใ€Pythonใ‚’ไฝฟใฃใฆ่†จๅคงใช๏ผˆ๏ผŸ๏ผ‰ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ไฝœๆˆใ—ใ‚ˆใ†ใจใ—ใชใ„้™ใ‚Šใ€ๅคงๅน…ใซๆฐ—ใซใ™ใ‚‹ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใŒใ€ๅ‰ใซ๏ผˆไพฟๅฎœใฎใŸใ‚ใซ๏ผ‰่ชฌๆ˜Žใ—ใŸใ“ใจใซใคใ„ใฆไฟฎๆญฃใ‚‚ๅฟ…่ฆใงใ‚ใ‚Šใ€ใ‚‚ใ†ๅฐ‘ใ—่ฉณใ—ใ็Ÿฅใ‚‹ใจใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๆ™‚ใซใฉใฎใƒขใ‚ธใƒฅใƒผใƒซใ‚’้ธๆŠžใ™ในใใ‹ใ€ใชใœใ“ใฎใ‚ˆใ†ใซๅ‹•ไฝœใ™ใ‚‹ใฎใ‹ใŒๅˆ†ใ‹ใ‚‹ใจๆ€ใฃใฆ่ฟฝๅŠ ใ™ใ‚‹ใ“ใจใซใชใ‚Šใพใ—ใŸใ€‚

    ๅ‚่€ƒใŠ้ก˜ใ„่‡ดใ—ใพใ™ใ€‚
    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่ฌ›ๅธซใฎใƒใƒงใƒณใƒปใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    Terraform 1.6ใง่ฟฝๅŠ ใ•ใ‚ŒใŸใƒ†ใ‚นใƒˆๆฉŸ่ƒฝใซ้–ขใ—ใฆ่ฌ›็พฉใ‚’่ฟฝๅŠ ใ—ใพใ—ใŸใ€‚

    ไธปใช่ฟฝๅŠ ใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚

    1. ใƒ†ใƒฉใƒ•ใ‚ฉใƒผใƒ ใฎๆ—ขๅญ˜ใฎใƒ†ใ‚นใƒˆๆ–นๆณ•ใฎ็ฐกๅ˜ใช่ชฌๆ˜Ž

    2. ใ‚ซใ‚นใ‚ฟใƒ ๆกไปถใฎ่ชฌๆ˜Ž

    3. .tftest.hcl ใƒ•ใ‚กใ‚คใƒซใฎๅŸบๆœฌๆ–‡ๆณ•

    4. ใƒ†ใ‚นใƒˆ้–ข้€ฃๅ†…ๅฎน๏ผˆๆˆๅŠŸ/ๅคฑๆ•—ใƒ†ใ‚นใƒˆใชใฉ๏ผ‰

    5. ใƒ†ใ‚นใƒˆ้€ฒ่กŒไธญใฎ็Šถๆ…‹็ฎก็†ใ€ๅฎŸ่กŒ/ๅ‰Š้™คใฎ้ †ๅบ

    6. ใƒ†ใ‚นใƒˆๆˆฆ็•ฅ


    ๅ‚่€ƒใŠ้ก˜ใ„่‡ดใ—ใพใ™ใ€‚
    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0
  • rex๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ใ“ใ‚“ใซใกใฏใ€‚

    ๅฎŸๅ‹™ใงไฝฟ็”จใ™ใ‚‹ใ‚ฏใƒฉใ‚ฆใƒ‰ใƒ—ใƒญใ‚ฐใƒฉใƒŸใƒณใ‚ฐ่ฌ›ๅธซใฎใƒใƒงใƒณใƒปใ‚ฌใƒณใƒŸใƒณใงใ™ใ€‚

    ่ฌ›็พฉใงไฝฟ็”จใ—ใŸPython / Terraformใฎใƒใƒผใ‚ธใƒงใƒณใซ้–ขใ—ใฆใ€ใŠ็Ÿฅใ‚‰ใ›ใ™ใ‚‹ใŸใ‚ใซๆ–ฐ่žใ‚’็™บ่กŒใ™ใ‚‹ใ“ใจใซใชใ‚Šใพใ—ใŸใ€‚

    [Python]

    Pythonใฏ็พๅœจ3.12ใพใงๅ…ฌ้–‹ใ•ใ‚Œใฆใ„ใ‚‹็Šถๆณใงใ™ใ€‚ใŸใ ใ—ใ€๏ผˆๆฅตใ‚ใฆ็งใฎไธป่ฆณ็š„ใชๅˆคๆ–ญใง๏ผ‰ใพใ ๆ–ฐใ—ใ่ฟฝๅŠ ใ•ใ‚ŒใŸๆฉŸ่ƒฝใซใคใ„ใฆ็พๅœจใฎ่ฌ›็พฉใซ่ฟฝๅŠ ใ™ใ‚‹ๅ†…ๅฎนใฏใชใ„ใจ่€ƒใˆใ‚‰ใ‚Œใ€ใ‚ขใƒƒใƒ—ใƒ‡ใƒผใƒˆใŒใชใ„็Šถๆ…‹ใงใ™ใ€‚
    3.10 ๏ฝž 3.12 ใƒใƒผใ‚ธใƒงใƒณใฎไธปใชๅค‰ๆ›ด็‚นใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™ใ€‚

    1. Pythonใฎใ‚นใƒ”ใƒผใƒ‰ใ‚ขใƒƒใƒ—๏ผˆใ—ใ‹ใ—้Š€ๅผพไธธใฏใชใ„๏ผ‰ - > 3.11 / 3.12

      1. ใใ‚Œใซใ‚‚ใ‹ใ‹ใ‚ใ‚‰ใšใ€็‰นๅฎšใฎไป•ไบ‹ใฏๆ„Ÿใ˜ใ‚‹ใปใฉ้€Ÿใใชใ‚Šใพใ—ใŸใ€‚

    2. ใ‚ฟใ‚คใƒ—้–ข้€ฃใฎๅคšใใฎๆฉŸ่ƒฝใฎ่ฟฝๅŠ ใจๅผทๅŒ– - > 3.10ใ€œ3.12

      1. Java๏ผˆใ‚ฟใ‚คใƒ—๏ผ‰ใ‚นใ‚ฏใƒชใƒ—ใƒˆใฎ้“ใ‚’้€ฒใ‚€๏ผŸ

    3. ใ‚คใƒณใ‚ฟใƒ—ใƒชใ‚ฟๅˆฅGILๅฐŽๅ…ฅ - > 3.12

      1. ไป–ใฎ่จ€่ชžใฎใ‚ˆใ†ใซใƒžใƒซใƒใ‚นใƒฌใƒƒใƒ‰ใ‚’ๆดป็”จใ™ใ‚‹ๆ—ฅใŒๆฅใ‚‹ใฎใ‹๏ผŸ

      2. ็พๅœจใฏPython C APIใ‚’ไป‹ใ—ใฆใฎใฟๅˆฉ็”จๅฏ่ƒฝใงใ™ใ€‚

        1. ็ด”็ฒ‹ใชCใงๆ›ธใ‹ใ‚ŒใŸใƒฉใ‚คใƒ–ใƒฉใƒชใฎ้€Ÿๅบฆใ‚„ๅŠน็އใŒๆ”นๅ–„ใ•ใ‚Œใ‚‹ใ‚ˆใ†ใซ๏ผŸ๏ผˆๆ”นๅ–„ใ™ใ‚Œใฐ๏ผ‰

    ็จ‹ๅบฆใงใ™ใ€‚ใ‚‚ใกใ‚ใ‚“ใ€ไป–ใซใ‚‚ไป–ใฎๅคšใใฎใ‚‚ใฎใŒๅปƒๆญขใ•ใ‚Œใ€ๆ”นๅ–„๏ผˆใพใŸใฏ่ฟฝๅŠ ๏ผ‰ใ•ใ‚Œใ‚‹ใ“ใจใ‚‚ใ‚ใ‚Šใพใ—ใŸใŒใ€ใ™ใใซ็Ÿฅใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใปใฉ้‡่ฆใชๅ†…ๅฎนใฏใชใ„ใ‚ˆใ†ใงใ™ใ€‚

    ใ•ใ‚‰ใซใ€AWS Lambdaใ‚‚็พๅœจ3.11ใพใงใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ€‚

    ใ„ใฃใŸใ„็พๅœจใฎ่จˆ็”ปใงใฏPython 3.13ใŒ็™บ่กจ(release)ใ•ใ‚Œใ‚‹ใจ้–ข้€ฃ่ฌ›็พฉใ‚’่ฟฝๅŠ ไบˆๅฎšใงใ™ใ€‚

    [Terraform]

    ใƒ†ใƒฉใƒ•ใ‚ฉใƒผใƒ  ใพใŸใ€1.2๏ฝž1.5ใƒใƒผใ‚ธใƒงใƒณใ‚’็ตŒใฆๆง˜ใ€…ใชๆฉŸ่ƒฝใŒ่ฟฝๅŠ ใ•ใ‚Œใพใ—ใŸใ€‚

    1. ๅค‰ๆ•ฐใซใ‚ชใƒ—ใ‚ทใƒงใƒณใงไฝฟ็”จๅฏ่ƒฝ - > 1.3

      1. Python ใง obj.get("key", "default") ใชใฉใฎไฝฟ็”จๅฏ่ƒฝ

    2. null_resourceใ‚’็ฝฎใๆ›ใˆใ‚‹ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎterraform_data - > 1.4

      1. ่ฟฝๅŠ ใฎใƒ—ใƒญใƒใ‚คใƒ€ใ‚’ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ›ใšใซไบคๆ›ๅฏ่ƒฝ

    3. ใ‚ณใƒผใƒ‰ใงใ‚คใƒณใƒใƒผใƒˆๅฏ่ƒฝ - > 1.5

    4. ใƒใ‚งใƒƒใ‚ฏใƒ–ใƒญใƒƒใ‚ฏใซใ‚ˆใ‚‹ๆคœ่จผใฎๅผทๅŒ– - > 1.5

    ใŸใ ใ—ใ€ไธŠ่จ˜ใฎๆฉŸ่ƒฝใฏใ™ในใฆใƒฉใƒณใ‚ฟใ‚คใƒ ๏ผˆๅฎŸ่กŒๆ™‚๏ผ‰ใซๅ‹•ไฝœใ™ใ‚‹ใ‚‚ใฎใงใ‚ใ‚‹ใŸใ‚ใ€ๅคงใใ็ดนไป‹ใ™ใ‚‹ๅฟ…่ฆใŒใชใ„ใจๆ„Ÿใ˜ใฆใ„ใพใ—ใŸใŒใ€

    Terraform 1.6ใƒใƒผใ‚ธใƒงใƒณใงใฏใ€ใคใ„ใซใƒ†ใ‚นใƒˆ้–ข้€ฃใฎๆฉŸ่ƒฝใŒใƒชใƒชใƒผใ‚นใ•ใ‚Œใพใ—ใŸใ€‚ๅพ“ๆฅใฎใƒ†ใ‚นใƒˆใฏใ€1) ใƒฉใƒณใ‚ฟใ‚คใƒ ใจๅˆ†้›ขใงใใชใ„ใ‹ใ€2) ๆง˜ใ€…ใชใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใ‚’้€šใ˜ใฆใฎใฟๅฏ่ƒฝใงใ—ใŸใ€‚ใ—ใ‹ใ—ใ€ใใฎๆฉŸ่ƒฝใฎ็™บๅฃฒใซใ‚ˆใ‚Šใ€ใ‚‚ใ†ๅˆฅใฎใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใ‚’ไฝฟใ‚ใชใใฆใ‚‚ใƒ†ใ‚นใƒˆใŒๅฏ่ƒฝใซใชใ‚Šใพใ—ใŸใ€‚

    ใ“ใฎๆฉŸ่ƒฝใฏๆฅ้€ฑไธญใซ่ฌ›็พฉใงๆ›ดๆ–ฐใ—ใŸใ„ใจๆ€ใ„ใพใ™ใ€‚ๅ‚่€ƒใŠ้ก˜ใ„่‡ดใ—ใพใ™ใ€‚

    ใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ™ใ€‚

    0

๏ฟฅ8,463