流れとしては以下の通り。
- CloudFrontの現在の設定情報を取得(getDistributionConfig)
- CacheBehaviorsの全アイテムで、ViewerProtocolPolicyを「redirect-to-https」に変更
- 変更したDistributionConfigを使ってCloudFrontを更新(updateDistribution)
import { CloudFront } from 'aws-sdk'
export const enableHttpsRedirection = async(distributionId: string) => {
const client = new CloudFront()
const { DistributionConfig, ETag } = await client.getDistributionConfig({
Id: distributionId
}).promise()
// config取れてないのでエラーをなげる
if (!DistributionConfig) throw new Error('No DistributionConfig')
// cache behaviorsがないなら何もしない
if (!DistributionConfig.CacheBehaviors || !DistributionConfig.CacheBehaviors.Items) return true
DistributionConfig.CacheBehaviors.Items = DistributionConfig.CacheBehaviors.Items.map(
(Item) => {
Item.ViewerProtocolPolicy = 'redirect-to-https';
return Item;
}
);
const updateParams = {
DistributionConfig: DistributionConfig,
Id: distributionId,
IfMatch: ETag
}
return client.updateDistribution(updateParams).promise()
}
同じ要領で設定の追加とか変更もできるのでぜひ。