在昨天的靜態網頁教學中還沒說明限制的部分,今天準備了幾個問題來回答
acm.Certificate
需要切換 Region 到 us-east-1
這是為什麼呢?us-east-1
而其他服務在不同區呢?acm.Certificate
需要切換 Region 到 us-east-1
這是為什麼呢?這是因為 CloudFront 使用 ACM 有限制條件,我們可以在 AWS 文件裡面找到
如果要使用 CloudFront 必須使用 US East (N. Virginia) 區域的憑證
us-east-1
而其他服務在不同區呢?類似的問題其實在 2020/07/28 有被提出過 [aws-certificatemanager] Create certificate in us-east-1 and use it in a different region #9274
這位作者想要創建 AWS Cognito 的服務而他的 CDK stack 在 eu-central-1
,如果要使用自定義網域憑證需要在 us-east-1
要如何分享憑證到 AWS Cognito.
acm.CertificateValidation
來處理方法一:以目前來說不可行,目前在 Certificates ARN 還沒有解法,可以在此 commit 看到詳細說明
方法二:限制只有使用 Route53 的使用者可以使用此解法
acm.Certificate
不可以指定 Region 而 acm.CertificateValidation
可以指定首先先看 CDK 文件可以看到 Certificate
的 class 裡面沒有可以填入 region 的地方,而 DnsValidatedCertificate
有一個 Construct Props region
我們到 Github 看一下 Certificate 的實作方法
首先看到 import 的地方只有 route53, core 與 certificatemanager.generated
特別說明一下 certificatemanager.generated 代表 AWS CloudFormation-only 或稱 L1 也就是它是原生的 CloudFormation 可參考文件
因此可以知道 Certificate 只有使用原生的 CloudFormation
import * as route53 from '@aws-cdk/aws-route53';
import { Construct, IResource, Resource, Token } from '@aws-cdk/core';
import { CfnCertificate } from './certificatemanager.generated';
import { apexDomain } from './util';
先看到 Github DnsValidatedCertificate 的實作方法,一樣我們可以從 import 先做概略分析它有一個 lambda 代表這邊的功能有人會用它實作
import * as path from 'path';
import * as iam from '@aws-cdk/aws-iam';
import * as lambda from '@aws-cdk/aws-lambda';
import * as route53 from '@aws-cdk/aws-route53';
import * as cdk from '@aws-cdk/core';
import { CertificateProps, ICertificate } from './certificate';
再來我們往下看到 L76-L94 就可以看到這邊有一個 Lambda 的呼叫檔案位置在
path.resolve(__dirname, '..', 'lambda-packages', 'dns_validated_certificate_handler', 'lib')
也就是 dns_validated_certificate_handler/lib/index.js 而輸入 region 的位置在 L241
因此使用 DnsValidatedCertificate 才可以輸入 region 位置,不然依造目前 CloudFormation 的特性是沒辦法跨 region 的
今日主要帶大家簡單的看一下 CDK Source code 有個體驗,希望今天的分享有幫到大家
文章內容主要是網路或是程式開發類型的文章
本文同步刊載於 Clarence 部落格:Day 9 - 部署靜態網頁 (番外篇)
「AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC」
本書改編並延伸自第 12 屆 iT 邦幫忙鐵人賽獲得 DevOps 組冠軍的《用 CDK 定義 AWS 架構》系列文章,以簡單、好讀的行文風格詳述技術細節,並提供完整的程式碼範例與說明,一步一步帶領新手從零開始踏上 AWS CDK 技術達人之路。有興趣的朋友歡迎至天瓏書局選購!