[aws-cdk-cloudfront-s3] CloudFront + S3(OAI)な構成を作るConstructライブラリを公開しました

OAIを使ってCloudFront / S3構成websiteを作れるAWS CDK向けのライブラリです。 Why use OAI? S3の静的ウェブサイトホスティング機能を使うのが簡単です。が、これだとS3のオブジェク […]

広告ここから
広告ここまで

目次

    OAIを使ってCloudFront / S3構成websiteを作れるAWS CDK向けのライブラリです。

    Why use OAI?

    S3の静的ウェブサイトホスティング機能を使うのが簡単です。が、これだとS3のオブジェクトに直接アクセスできるという問題が発生します。大体の場合は気にしないことが多いのかなと思いますが、privateなコンテンツを提供したいときなどにはちょっと悩ましいところがあります。

    で、そうなるとOAIを使ってCloudFrontからのみアクセスできるようにする方法が出てきますが、今度は/blog/のようなスラッシュで終わるURLのリクエストをLambda@edgeで処理してやる必要がでてきます。

    これらの構成を組んでいくのが面倒だったので、AWS CDKのConstructにしてみました。

    What is this?

    以下のリソースを作ってくれるConstructです。

    • CloudFront distribution
    • S3 bucket
    • OAI
    • Lambda@edge

    Usage

    簡単なサンプルがこちら

    import { expect as expectCDK, haveResource, SynthUtils } from '@aws-cdk/assert';
    import * as cdk from '@aws-cdk/core';
    import { Bucket } from '@aws-cdk/aws-s3';
    import { CloudfrontS3 } from '@wpkyoto/aws-cdk-cloudfront-s3';
    
    const app = new cdk.App();
    const stack = new cdk.Stack(app, 'TestStack');
    new CloudfrontS3(stack, 'MyTestConstruct', {
      name: 'example',
    });

    自前のS3バケットを利用したい場合

    import { expect as expectCDK, haveResource, SynthUtils } from '@aws-cdk/assert';
    import * as cdk from '@aws-cdk/core';
    import { Bucket } from '@aws-cdk/aws-s3';
    import { CloudfrontS3 } from '@wpkyoto/aws-cdk-cloudfront-s3';
    
    const app = new cdk.App();
    const stack = new cdk.Stack(app, 'TestStack');
    new CloudfrontS3(stack, 'MyTestConstruct', {
      name: 'example',
      s3Bucket: Bucket.fromBucketName(stack, 'Dummy', 'dummy'),
    });

    独自ドメインとSSL証明書を設定する

    ACMの証明書をARN指定で使えます。

    import { expect as expectCDK, haveResource, SynthUtils } from '@aws-cdk/assert';
    import * as cdk from '@aws-cdk/core';
    import { Bucket } from '@aws-cdk/aws-s3';
    import { CloudfrontS3 } from '@wpkyoto/aws-cdk-cloudfront-s3';
    
    const app = new cdk.App();
    const stack = new cdk.Stack(app, 'TestStack');
    new CloudfrontS3(stack, 'MyTestConstruct', {
      name: 'example',
      acmCertificationARN: 'YOUR_ACM_ARN',
      domains: ['example.com']
    });

    Try it out!

    簡単なサンプルを用意してますので、興味ある方はお試しください。

    $ git clone [email protected]:wpkyoto/aws-cdk-cloudfront-s3.git
    $ cd aws-cdk-cloudfront-s3
    $ npm install
    $ cd example
    $ npm install
    $ npm run build && npm run cdk deploy

    And the stack template YAML can see here.

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark