AWS 주간 구축 - S1 E4 - 정적 S3 사이트

14944 단어 cdkterraformawss3
4화에 오신 것을 환영합니다, 네 4 벌써 Build On Weekly의 한 달이 되었습니다! 🥳

안타깝게도 오늘은 Jacquie가 자리를 비웠기 때문에 대머리 남자가 카메라를 향해 고함치는 소리만 듣게 됩니다. 그러나 그는 ( ) 최신 놀라운 도구인 Terraform용 클라우드 개발 키트(CDK)를 사용하여 몇 가지 마법 같은 일을 하는 방법을 보여줄 것입니다. 오늘은 정적 웹 사이트를 위한 인프라 구축에 관한 모든 것입니다. CDK와 Terraform의 강력한 기능으로 모두 가능합니다. 🪣

여기 dev.to에 게시하여 쇼 노트, 링크, 소셜, 코드 및 라이브 스트림 중에 언급된 기타 사항을 여러분과 공유할 것입니다! 🚀



질문, 피드백 또는 의견이 있으면 이 게시물의 댓글에 자유롭게 남겨주세요! 😇

매주 배포됨





오늘 Deployed Weekly에서는 모든 C# 팬을 위해 다시 AWS Power Tools를 다룰 것입니다. Terraform과 CDK는 여러분에게 말할 것이 있습니다. 개인 IP를 통한 사이트 간 VPN에 대한 일부 코드 공유. 다음 주에 참여할 수 있는 멋진 워크숍과 모든 개발자와 빌더를 위한 월드 챔피언십이 있습니다!

  • dotnet용 AWS PowerTools는 알파 버전입니다: https://github.com/awslabs/aws-lambda-powertools-dotnet

  • TF용 CDK가 이제 GA입니다. https://www.hashicorp.com/blog/cdk-for-terraform-now-generally-available

  • 직접 연결을 통한 사설 IP를 통한 AWS 사이트 간 VPN. Terraform의 모든 것:
    https://github.com/aws-samples/aws-site-to-site-vpn-private-ip-vpn

  • Pulumi의 Python을 사용한 코드형 인프라 소개 - 워크숍:

  • 게임 데이 월드 챔피언십: https://pages.awscloud.com/GLOBAL-gamedev-OE-AWS-GameDay-WorldChampionship-2022-reg-event.html

  • Terraform용 CDK가 있는 정적 웹 사이트





    오늘 우리는 새로 출시된 Terraform용 CDK(클라우드 개발 키트)를 확인하고 있습니다. 🥳 그리고 이를 통해 Amazon S3 🪣를 사용하여 정적 웹사이트 호스팅 시스템을 구축할 것입니다.

    목표는 정적 웹 사이트를 호스팅하는 데 필요한 모든 구성으로 S3 버킷을 설정하는 것입니다. 이것은 Terraform용 CDK를 사용한 Darko의 첫 번째 시도였으므로 약간의 여유를 두었습니다.

    Terraform용 CDK란 무엇입니까? Terraform용 클라우드 개발 키트입니다... 알겠습니다. 하지만 그게 무슨 뜻인가요? 즉, TypeScript, Python, C#, Java 또는 Go 중에서 선택하여 Terraform 구성을 작성하고 HashiCorp Terraform 공급자 및 모듈의 전체 에코시스템을 계속 활용할 수 있습니다. 아주 멋진.

    즉, 다음 코드 줄에 정의된 정적 웹 사이트에 대한 인프라가 AWS에 있음을 의미합니다.

    import { Construct } from "constructs";
    import * as path from "path";
    import { sync as glob } from "glob";
    import { lookup as mime } from "mime-types";
    import { App, TerraformStack, TerraformOutput } from "cdktf";
    import { AwsProvider, s3 } from "@cdktf/provider-aws"
    
    class MyStack extends TerraformStack {
      constructor(scope: Construct, name: string) {
        super(scope, name);
    
        // AWS Provider
        new AwsProvider(this, 'AWS', {
          region: "us-west-2",
        });
        // Bucket
        const cobucket = new s3.S3Bucket(this, "cobus-website-bucket", {
          bucket: "cobus-website-bucket",
        });
        // Configure the bucket for a website
        new s3.S3BucketWebsiteConfiguration(this, "cobus-websiteconfig", {
          bucket: cobucket.bucket,
          indexDocument: {
            suffix: "index.html"
          },
          errorDocument: {
            key: "error.html"
          },
        });
        // Open up the bucket
        new s3.S3BucketPolicy(this, "cobus-policy", {
          bucket: cobucket.bucket,
          policy: JSON.stringify({
            Version: "2012-10-17",
            Id: "public-website-access",
            Statement: [
              {
                Sid: "PublicRead",
                Effect: "Allow",
                Principal: "*",
                Action: ["s3:GetObject"],
                Resource: [`${cobucket.arn}/*`, `${cobucket.arn}`],
              },
            ],
          }),
        });
        // Add files
        const absolutePath = path.resolve(__dirname, "website/");
        const files = glob("**/*.html", {
          cwd: path.resolve(__dirname, "website/"),
        });
    
        // file loop
        files.forEach((f) => {
          const filePath = path.join(absolutePath, f);
    
          new s3.S3Object(this, `${f}`, {
            bucket: cobucket.bucket,
            key: f,
            source: filePath,
            contentType: mime(path.extname(f)) || "text/html",
          });
        });
    
        // outputs
        new TerraformOutput(this, 'bucketname', {
          value: cobucket.bucket,
        });
      }
    }
    
    const app = new App();
    new MyStack(app, "staticwebsite-with-cdktf");
    app.synth();
    


    💾 동영상을 따라가면서 오늘 Darko가 작성한 나머지 코드를 확인하세요. https://github.com/darko-mesaros/cdktf-s3-website

    토론 링크:
  • 이제 Terraform용 CDK가 일반적으로 사용 가능합니다.https://www.hashicorp.com/blog/cdk-for-terraform-now-generally-available
  • Construct 허브의 Terraform AWS 공급자: https://constructs.dev/packages/@cdktf/provider-aws/v/9.0.10/api/S3Bucket?lang=typescript&submodule=s3

  • 🐦 호스트와 게스트에게 연락:

    재키:
    다르코:

    좋은 웹페이지 즐겨찾기