Closed6
cdktf で Cloudfront の defaultCacheBehavior に functionAssosiation する格闘
cdktf での問題の実装箇所(一部)
import { Construct } from "constructs";
import { App, TerraformStack, S3Backend, TerraformOutput } from "cdktf";
import { AwsProvider, acm, route53, cloudfront, iam, s3 } from "@cdktf/provider-aws";
import { S3 } from "./.gen/modules/s3";
import { Cloudfront } from "./.gen/modules/cloudfront";
import { FunctionEventType } from "@aws-cdk/aws-cloudfront";
import { CloudfrontDistributionDefaultCacheBehaviorFunctionAssociation as CfdDcbFa } from "@cdktf/provider-aws/lib/cloudfront/cloudfront-distribution";
import * as fs from 'fs';
//・・・
const cloudfrontFunctionName = `${config.environment}-cf_fn`
const cloudfrontFunction = new cloudfront.CloudfrontFunction(this, `${config.environment}-cf_fn`, {
name: cloudfrontFunctionName,
runtime: "cloudfront-js-1.0",
code: fs.readFileSync('./functions/index.js').toString()
})
new TerraformOutput(this, 'Cloudfront_CustomFunction_Arn', {
value: cloudfrontFunction.arn
})
const cloudfrontFunctionAssosiation: CfdDcbFa = {
eventType: FunctionEventType.VIEWER_REQUEST,
functionArn: cloudfrontFunction.arn
}
//・・・
const cloudfrontDistributionName = `${config.environment}-cf_dist`
const cloudfrontDistribution = new Cloudfront(this, cloudfrontDistributionName, {
//・・・
//ビヘイビア
defaultCacheBehavior: {
target_origin_id: `S3-${cloudfrontDistributionName}`,
cache_policy_id: cloudfrontCachePolicy.id,
compress: true,
viewer_protocol_policy: "redirect-to-https",
allowed_methods: ["GET","HEAD","OPTIONS"],
cached_methods: ["HEAD", "GET"],
use_forwarded_values: false,
response_headers_policy_id: securityHeaderPolicy.id,
smooth_streaming: false,
functionAssociation: cloudfrontFunctionAssosiation
// function_association: [
// {
// event_type: FunctionEventType.VIEWER_REQUEST,
// function_arn: cloudfrontFunction.arn
// }
// ]
},
}
状況としては、↑のコードでコメントアウトしている
function_association
のところを、CDK式(?)に
functionAssociation: cloudfrontFunctionAssosiation
にしたら、cdktf diff 、cdktf deploy はできたものの、関数の関連付け が残念ながらできてなかった、という感じ。
やりたいことは、 cdktf deploy したら関数の関連付けができていてほしい、ということ。
できれば、Terraform Module を利用しているので、その実装に従った指定を行いたいのですが、
どう指定するのが適切なのかわからないのです。。
↓をどう直せばいいのか、というのが質問。
function_association: [
{
event_type: FunctionEventType.VIEWER_REQUEST,
function_arn: cloudfrontFunction.arn
}
]
このスクラップは2022/09/12にクローズされました