Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cloudfront): CloudFront Function runtime property #28099

Merged
merged 26 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
28ab0c3
feat(cloudfront): Setting Runtime of CF2
watany-dev Nov 22, 2023
9f54b1c
readme
watany-dev Nov 22, 2023
8673979
integ
watany-dev Nov 22, 2023
757a212
snapshot
watany-dev Nov 22, 2023
d3fb723
Revert "snapshot"
watany-dev Nov 22, 2023
0b165cd
integ
watany-dev Nov 22, 2023
858e821
Merge branch 'main' into cf2-runtime2
watany-dev Nov 22, 2023
c209632
fix readme
watany-dev Nov 22, 2023
a74e730
Merge branch 'cf2-runtime2' of https://github.com/watany-dev/aws-cdk …
watany-dev Nov 22, 2023
e80fa76
Merge branch 'aws:main' into cf2-runtime2
watany-dev Nov 24, 2023
204bfe4
Merge branch 'aws:main' into cf2-runtime2
watany-dev Nov 25, 2023
a4d220c
update integ
watany-dev Nov 25, 2023
d1d0236
Merge branch 'main' into cf2-runtime2
watany-dev Nov 28, 2023
c1ba48b
Merge branch 'main' into cf2-runtime2
watany-dev Nov 30, 2023
77dc039
Merge branch 'aws:main' into cf2-runtime2
watany-dev Dec 21, 2023
7d82d0e
enum to class
watany-dev Dec 21, 2023
18b4cfe
fix lint
watany-dev Dec 21, 2023
170ea4b
Apply suggestions from code review
kaizencc Dec 22, 2023
96ba2d0
Merge branch 'main' into cf2-runtime2
watany-dev Dec 23, 2023
1c35ae2
Merge branch 'main' into cf2-runtime2
watany-dev Dec 26, 2023
50e9ca5
optional
watany-dev Dec 28, 2023
b0eebba
optional
watany-dev Dec 28, 2023
87bc78e
Merge branch 'cf2-runtime2' of https://github.com/watany-dev/aws-cdk …
watany-dev Dec 28, 2023
968fe51
default
watany-dev Dec 28, 2023
4819dad
Merge branch 'main' into cf2-runtime2
watany-dev Dec 28, 2023
783aed1
Merge branch 'main' into cf2-runtime2
mergify[bot] Dec 29, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import * as cdk from 'aws-cdk-lib';
import { IntegTest } from '@aws-cdk/integ-tests-alpha';
import { TestOrigin } from './test-origin';
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';

const app = new cdk.App();
const stack = new cdk.Stack(app, 'integ-distribution-function', { env: { region: 'eu-west-1' } });

const cfFunctionRequest = new cloudfront.Function(stack, 'FunctionRequest', {
code: cloudfront.FunctionCode.fromInline('function handler(event) { return event.request }'),
});

const cfFunctionResponse = new cloudfront.Function(stack, 'FunctionResponse', {
code: cloudfront.FunctionCode.fromInline('function handler(event) { return event.response }'),
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In my opinion, it would be better to use a new parameter FunctionRuntime.JS_2_0 as well, what do you think?

Copy link
Contributor

@go-to-k go-to-k Nov 24, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, It seems that @mikewrighton previously approved. See this comment if you need me to, otherwise I just approve.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What you say is true. I am happy to report that I have changed to a meaningful integ test

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!


new cloudfront.Distribution(stack, 'Dist', {
defaultBehavior: {
origin: new TestOrigin('www.example.com'),
cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED,
functionAssociations: [{
function: cfFunctionRequest,
eventType: cloudfront.FunctionEventType.VIEWER_REQUEST,
}, {
function: cfFunctionResponse,
eventType: cloudfront.FunctionEventType.VIEWER_RESPONSE,
}],
},
});

new cdk.CfnOutput(stack, 'RequestFunctionArn', { value: cfFunctionRequest.functionArn });
new cdk.CfnOutput(stack, 'RequestFunctionStage', { value: cfFunctionRequest.functionStage });

new cdk.CfnOutput(stack, 'ResponseFunctionArn', { value: cfFunctionResponse.functionArn });
new cdk.CfnOutput(stack, 'ResponseFunctionStage', { value: cfFunctionResponse.functionStage });

new IntegTest(app, 'CF2Runtime', {
testCases: [stack],
});

app.synth();

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
{
"Resources": {
"FunctionRequest95528B2F": {
"Type": "AWS::CloudFront::Function",
"Properties": {
"AutoPublish": true,
"FunctionCode": "function handler(event) { return event.request }",
"FunctionConfig": {
"Comment": "eu-west-1integdistributionfunctionFunctionRequest8E65DEEB",
"Runtime": "cloudfront-js-1.0"
},
"Name": "eu-west-1integdistributionfunctionFunctionRequest8E65DEEB"
}
},
"FunctionResponse4EF2D1D3": {
"Type": "AWS::CloudFront::Function",
"Properties": {
"AutoPublish": true,
"FunctionCode": "function handler(event) { return event.response }",
"FunctionConfig": {
"Comment": "eu-west-1integdistributionfunctionFunctionResponseDD4BADA1",
"Runtime": "cloudfront-js-1.0"
},
"Name": "eu-west-1integdistributionfunctionFunctionResponseDD4BADA1"
}
},
"DistB3B78991": {
"Type": "AWS::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"DefaultCacheBehavior": {
"CachePolicyId": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad",
"Compress": true,
"FunctionAssociations": [
{
"EventType": "viewer-request",
"FunctionARN": {
"Fn::GetAtt": [
"FunctionRequest95528B2F",
"FunctionARN"
]
}
},
{
"EventType": "viewer-response",
"FunctionARN": {
"Fn::GetAtt": [
"FunctionResponse4EF2D1D3",
"FunctionARN"
]
}
}
],
"TargetOriginId": "integdistributionfunctionDistOrigin1D1E9DF17",
"ViewerProtocolPolicy": "allow-all"
},
"Enabled": true,
"HttpVersion": "http2",
"IPV6Enabled": true,
"Origins": [
{
"CustomOriginConfig": {
"OriginProtocolPolicy": "https-only"
},
"DomainName": "www.example.com",
"Id": "integdistributionfunctionDistOrigin1D1E9DF17"
}
]
}
}
}
},
"Outputs": {
"RequestFunctionArn": {
"Value": {
"Fn::GetAtt": [
"FunctionRequest95528B2F",
"FunctionARN"
]
}
},
"RequestFunctionStage": {
"Value": {
"Fn::GetAtt": [
"FunctionRequest95528B2F",
"Stage"
]
}
},
"ResponseFunctionArn": {
"Value": {
"Fn::GetAtt": [
"FunctionResponse4EF2D1D3",
"FunctionARN"
]
}
},
"ResponseFunctionStage": {
"Value": {
"Fn::GetAtt": [
"FunctionResponse4EF2D1D3",
"Stage"
]
}
}
},
"Parameters": {
"BootstrapVersion": {
"Type": "AWS::SSM::Parameter::Value<String>",
"Default": "/cdk-bootstrap/hnb659fds/version",
"Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
}
},
"Rules": {
"CheckBootstrapVersion": {
"Assertions": [
{
"Assert": {
"Fn::Not": [
{
"Fn::Contains": [
[
"1",
"2",
"3",
"4",
"5"
],
{
"Ref": "BootstrapVersion"
}
]
}
]
},
"AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."
}
]
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading