AWS(CloudFront と Route 53)でのサブディレクトリ設定
AWS CloudFrontとRoute 53を使用して/docsサブディレクトリでドキュメントをホストする
GitBookサイトの設定
GitBook の組織で、サイドバーのドキュメントサイト名をクリックし、次に サイトを管理 をクリックするか、 設定 タブを開きます。 ドメインとリダイレクト セクションを開き、「Subdirectory(サブディレクトリ)」の下で サブディレクトリを設定.
ドキュメントをホストしたいURLを入力します。次にドキュメントアクセス用のサブディレクトリを指定します。例: example.com/docs、そしてクリックします 設定.
の下に 追加の設定をクリックすると、プロキシ URL が表示されます。これは次のステップで Lambda 関数を設定するときに使用します。クリップボードにコピーしてください。
アーキテクチャやその他の設定はデフォルトのままにします。
Lambda 関数のコードを更新する
Lambda 関数エディタで、デフォルトのコードを以下の内容に置き換えます:
export const handler = async (event) => {
const request = event.Records[0].cf.request;
// サブディレクトリが /docs でない場合はここを更新してください
const subdirectory = '/docs';
// 下の proxy URL を更新してください
const target = new URL('<GitBook から取得したプロキシ URL>');
// リライト: /docs* -> proxy.gitbook.site
if (request.uri.startsWith(subdirectory)) {
request.uri = target.pathname + request.uri.substring(subdirectory.length);
// 末尾のスラッシュがある場合は削除
if (request.uri.endsWith('/')) {
}
request.uri = request.uri.slice(0, -1);
request.origin = {
custom: {
domainName: target.host,
port: 443,
protocol: 'https',
path: '',
sslProtocols: ['TLSv1.2'],
readTimeout: 30,
keepaliveTimeout: 5,
},
};
customHeaders: {},
request.headers['host'] = [{ key: 'host', value: target.host }];
}
request.headers['x-forwarded-host'] = [{ key: 'x-forwarded-host', value: target.host }];
};return request; を必ず更新してください 8 行目の に、最初のステップで GitBook から取得したプロキシ URL を設定します。これは次のようになります:
https://proxy.gitbook.site/sites/site_XXXX また、もし /docs 以外のサブディレクトリを使用している場合は、 5 行目の を更新してください。.
クリック /docs 「デプロイ」をクリックして変更を保存します。
Lambda@Edge 用の Lambda 権限を設定する
Lambda 関数を CloudFront と共に使用する前に、Lambda@Edge が実行ロールを引き受けられるように実行ロールの設定を行う必要があります。
Lambda 関数の画面で、 設定 タブをクリックします
クリック 権限 (左サイドバー)
の下に 実行ロールをクリックし、ロール名をクリックして IAM で開きます
をクリックします 信頼関係 タブをクリックします
クリック 信頼ポリシーの編集
信頼ポリシーを以下の内容に置き換えます:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"edgelambda.amazonaws.com",
"lambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}クリック 「ポリシーの更新」をクリックして保存します。 Lambda 関数を公開する
Lambda@Edge では公開バージョンが必要です(単に
$LATEST では不可)。).
Lambda 関数の画面で、右上の 操作 ドロップダウンをクリックし
を開きます 「新しいバージョンを公開」を選択します。
任意で「CloudFront 用の初期バージョン」のような説明を追加します。
クリック 公開
重要: ページ上部に表示される公開バージョンの ARN をコピーしてください(末尾にバージョン番号が含まれます。例:
arn:aws:lambda:us-east-1:123456789:function:gitbook-subpath-proxy:1)
Lambda@Edge 関数は us-east-1 (N. Virginia) リージョンで作成する必要があります。別のリージョンで関数を作成した場合は、us-east-1 で再作成する必要があります。
CloudFront ディストリビューションを作成する
に移動します AWS コンソールで CloudFront に移動し、.
「ディストリビューションを作成」をクリックします。
以下の設定を構成します。指定がない設定はデフォルトのままにしてください。
設定
オリジンタイプ
その他
カスタムオリジン あなたのメインのウェブサイトドメイン(例:)
example.com
キャッシュ設定
キャッシュポリシー
CachingDisabled
オリジンリクエストポリシー
クリック AllViewerExceptHostHeader 次に、希望するセキュリティ保護を選択し、再度 次へ をクリックします。
クリック に移動し、.
ディストリビューションがデプロイされるのを待ちます(ステータスが「In Progress」から「Enabled」に変わります)。数分かかる場合があります。
Lambda@Edge を CloudFront に関連付ける
CloudFront ディストリビューションがデプロイされたら:
ディストリビューション ID をクリックしてその設定を開きます
「 Behaviors(ビヘイビア)」に移動します タブをクリックします
デフォルトのビヘイビアを選択して 編集
をクリックします 下にスクロールして
の下に Function associations(関数の関連付け)を選択し、バックエンドとして Okta を選びます。 Origin request(オリジンリクエスト)
で、 Lambda@Edge Lambda 関数 ARN
を確認してください のフィールドに、公開した Lambda 関数の ARN(ステップ 5 のもの)を貼り付けます Include body(ボディを含める)
クリック を有効にして、必要な場合に関数がリクエストボディにアクセスできるようにします
CloudFront から Route 53 の DNS レコードを設定する
DNS に Route 53 を使用している場合は、CloudFront ディストリビューションを指すように DNS レコードを作成または更新する必要があります。
CloudFront ディストリビューションのメインページにいるまま、 一般 タブにいることを確認し、次に「Alternate domain names」に設定した URL の下で、 をクリックします。 「Route ドメインを CloudFront にルーティング」 をクリックします。
クリックしてください ルーティングを自動設定する を選択すると、ドメイン用の A および AAAA レコードが作成されます
設定をテストする
すべての変更が伝播されたら(通常 10~15 分かかります):
ブラウザを開き、サブディレクトリ付きのあなたのドメインにアクセスします(例:
https://example.com/docs)GitBook のドキュメントサイトが表示されるはずです!
サイトがすぐに読み込まれない場合は、次を試してください:
DNS の伝播のためにさらに数分待つ
ブラウザのキャッシュをクリアするか、シークレットウィンドウで試す
ターミナルで次を実行する:
nslookup yourdomain.comで DNS が正しく解決されているか確認するCloudFront のステータスが「Enabled」であり「In Progress」ではないことを確認する
おめでとうございます!これで GitBook のドキュメントがカスタムサブディレクトリ経由でアクセス可能になりました。
トラブルシューティング
Lambda 関数がトリガーされない場合:
Lambda 関数のバージョンを公開したことを確認してください(単に
では不可)。)を使用していないこと)
Lambda 関数が us-east-1 リージョンにあることを確認してください
信頼ポリシーに
edgelambda.amazonaws.com
が含まれていることを確認してください
DNS が解決されない場合:
DNS の変更は伝播に時間がかかる場合があります(最大 48 時間。ただし通常はもっと早いです)
Route 53 のレコードが正しい CloudFront ディストリビューションを指していることを確認してください
競合する古い DNS レコードを削除したことを確認してください
SSL 証明書エラー:
AWS Certificate Manager の SSL 証明書にカスタムドメインが含まれていることを確認してください
CloudFront 用の証明書は us-east-1 リージョンで作成する必要があります
サブディレクトリが機能しない場合:Lambda 関数内のSUBDIRECTORY
を必ず更新してくださいの値が GitBook で構成したものと一致していることを確認してくださいLambda 関数内の値が正しいことを確認してください(英語原文の該当箇所)
最終更新
役に立ちましたか?