AWS CDK에서 객체를 압축하도록 CloudFront 구성
8520 단어 cloudfrontcdk
CloudFront 압축 파일 제공
CloudFront를 사용하여 특정 유형의 객체(파일)를 자동으로 압축하고 최종 사용자(웹 브라우저 또는 기타 클라이언트)가 지원할 때 압축된 객체를 제공할 수 있습니다. 뷰어는 Accept-Encoding HTTP 헤더를 사용하여 압축된 개체에 대한 지원을 나타냅니다. CloudFront는 Gzip 및 Brotli 압축 형식을 사용하여 객체를 압축할 수 있습니다. 최종 사용자가 두 형식을 모두 지원하는 경우 CloudFront는 Brotli를 선호합니다.
AWS CDK에서 수행하는 방법
1단계: 콘텐츠 버킷 만들기
// content bucket
const bucket = new s3.Bucket(this, 'demo-bucket', {
publicReadAccess: false, // no public access, user must access via cloudfront
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
/**
* The default removal policy is RETAIN, which means that cdk destroy will not attempt to delete
* the new bucket, and it will remain in your account until manually deleted. By setting the policy to
* DESTROY, cdk destroy will attempt to delete the bucket, but will error if the bucket is not empty.
*/
removalPolicy: RemovalPolicy.DESTROY, // NOT recommended for production code
/**
* For sample purposes only, if you create an S3 bucket then populate it, stack destruction fails. This
* setting will enable full cleanup of the demo.
*/
autoDeleteObjects: true, // NOT recommended for production code
})
2단계: 클라우드프론트 OAI(원본 액세스 ID) 생성
// cloudfront OAI (origin access identity)
const cloudfrontOAI = new cloudfront.OriginAccessIdentity(this, 'my-oai', {
comment: 'demo-bucket origin access identity',
})
// assign get object permission to cloudfront OAI
bucket.addToResourcePolicy(
new iam.PolicyStatement({
actions: ['s3:GetObject'],
resources: [bucket.arnForObjects('*')],
principals: [
new iam.CanonicalUserPrincipal(cloudfrontOAI.cloudFrontOriginAccessIdentityS3CanonicalUserId),
],
})
)
3단계: 콘텐츠 버킷 및 OAI에 클라우드프론트 배포 기반 생성
const distribution = new cloudfront.Distribution(this, 'my-distribution', {
comment: 'demo-bucket distribution',
defaultBehavior: {
origin: new origins.S3Origin(bucket, {
// Restrict viewer access, viewers must use CloudFront signed URLs or signed cookies to access your content.
originAccessIdentity: cloudfrontOAI,
}),
// Serving compressed files
compress: true,
// Allowed GET HEAD and OPTIONS requests
allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
// redirects from HTTP to HTTPS, using a CloudFront distribution,
viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
},
})
The code for this article is available on GitHub
테스트
스택 배포
yarn deploy
스택이 생성될 때까지 기다립니다. 스택이 생성된 후 일부 파일을 버킷에 업로드합니다. 참고File types that CloudFront compresses
파일
data/site.xml
을 업로드한 다음 CloudFront를 통해 액세스할 수 있습니다.![서빙 압축됨]]( https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6vrodd6lfgru1346xtj2.png )
즉, 내 git에서 샘플 소스 코드를 다운로드할 수 있습니다.
청소
계정에 리소스가 남지 않도록 스택을 삭제하는 것을 잊지 마십시오.
npx cdk destroy
읽어 주셔서 감사합니다! 이 기사가 도움이 되었기를 바랍니다. 질문이 있으시면 언제든지 의견을 남겨주세요.
Reference
이 문제에 관하여(AWS CDK에서 객체를 압축하도록 CloudFront 구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/binhbv/configuring-cloudfront-to-compress-objects-in-aws-cdk-40n4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)