Skip to content

Commit a386c9d

Browse files
authored
Merge pull request #22 from Virtual-Finland-Development/feature/save-standard-logs-to-s3
Feature/save standard logs to s3
2 parents 97e2fd9 + e30b00d commit a386c9d

3 files changed

Lines changed: 50 additions & 4 deletions

File tree

infra/index.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,22 @@ import {
55
createOriginAccessIdentity,
66
} from './resources/CloudFront';
77
import createLambdaAtEdgeFunction from './resources/LambdaAtEdge';
8-
import createS3Bucket, { createS3BucketPermissions, uploadAssetsToBucket } from './resources/S3Bucket';
9-
import { getSetup } from './utils/Setup';
8+
import createS3Bucket, {createS3BucketPermissions, uploadAssetsToBucket} from './resources/S3Bucket';
9+
import {getSetup} from './utils/Setup';
10+
import {createStandardLogsBucket} from "./resources/standardLogsBucket";
1011

1112
const setup = getSetup();
1213
const originAccessIdentity = createOriginAccessIdentity(setup);
1314
const s3bucketSetup = createS3Bucket(setup);
1415
const edgeLambdaPackage = createLambdaAtEdgeFunction(setup, s3bucketSetup);
1516
createS3BucketPermissions(setup, s3bucketSetup.bucket, originAccessIdentity, edgeLambdaPackage.lambdaAtEdgeRole);
17+
const standardLogsBucket = createStandardLogsBucket(setup);
1618
const cloudFrontDistribution = createCloudFrontDistribution(
1719
setup,
1820
s3bucketSetup.bucket,
1921
originAccessIdentity,
20-
edgeLambdaPackage.lambdaAtEdgeFunction
22+
edgeLambdaPackage.lambdaAtEdgeFunction,
23+
standardLogsBucket
2124
);
2225
uploadAssetsToBucket(s3bucketSetup.bucket);
2326
createCacheInvalidation(setup, cloudFrontDistribution);
@@ -26,3 +29,7 @@ export const url = pulumi.interpolate`https://${cloudFrontDistribution.domainNam
2629
export const bucketName = s3bucketSetup.bucket.bucket;
2730
export const lambdaId = pulumi.interpolate`${edgeLambdaPackage.lambdaAtEdgeFunction.name}:${edgeLambdaPackage.lambdaAtEdgeFunction.version}`
2831
export const cloudFrontDistributionId = cloudFrontDistribution.id;
32+
export const standardLogsBucketDetails = {
33+
arn: standardLogsBucket.arn,
34+
id: standardLogsBucket.id
35+
}

infra/resources/CloudFront.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export function createCloudFrontDistribution(
1414
setup: ISetup,
1515
bucket: aws.s3.Bucket,
1616
originAccessIdentity: aws.cloudfront.OriginAccessIdentity,
17-
lambdaAtEdgeFunction: aws.lambda.Function
17+
lambdaAtEdgeFunction: aws.lambda.Function,
18+
standardLogsBucket: aws.s3.Bucket
1819
) {
1920
const cloudFrontDistributionConfig = setup.getResourceConfig('CloudFrontDistribution');
2021

@@ -69,6 +70,11 @@ export function createCloudFrontDistribution(
6970
enabled: true,
7071
retainOnDelete: false,
7172
tags: cloudFrontDistributionConfig.tags,
73+
loggingConfig: {
74+
bucket: standardLogsBucket.bucketDomainName,
75+
prefix: 'std-cf-logs',
76+
includeCookies: false,
77+
}
7278
});
7379

7480
// Extended monitoring
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import * as aws from "@pulumi/aws";
2+
import {Bucket} from "@pulumi/aws/s3";
3+
import {ISetup} from "../utils/Setup";
4+
5+
export function createStandardLogsBucket(setup: ISetup): Bucket {
6+
const awsEuNorth1 = new aws.Provider("aws-eu-north-1", {region: "eu-north-1"});
7+
const bucket = new aws.s3.Bucket(`${setup.projectName}-standard-logs-${setup.stage}`, {
8+
lifecycleRules: [
9+
{
10+
enabled: true,
11+
expiration: {
12+
days: 2
13+
},
14+
id: `standard-logs-expiration-rule-${setup.stage}`
15+
}
16+
],
17+
acl: 'private',
18+
tags: setup.getResourceConfig('standard-logs-bucket').tags
19+
}, {
20+
provider: awsEuNorth1
21+
});
22+
23+
const bucketOwnershipControls = new aws.s3.BucketOwnershipControls('controls', {
24+
bucket: bucket.id,
25+
rule: {
26+
objectOwnership: "BucketOwnerPreferred"
27+
}
28+
}, {
29+
provider: awsEuNorth1
30+
});
31+
32+
return bucket;
33+
}

0 commit comments

Comments
 (0)