간편해진 CDK: CDK로 S3 수명 주기 정책 관리

8542 단어 aws
시작하기 전에 서버리스 앱 🚀을 모니터링하는 완전히 새로운 방법인 https://cloudash.dev 작업을 하고 있습니다. 프로덕션 인시던트를 디버깅할 때 50개의 CloudWatch 탭 사이를 전환하는 데 지쳤다면 확인하십시오.


CDK를 사용한 S3 수명 주기 정책



다음 시나리오를 상상해 보십시오.

귀하는 소셜 미디어 웹사이트(예: Twitter for Bunnies)에 고용되었으며 귀하의 임무는 그들이 이미지를 저장하는 방식을 최적화하는 것입니다. 사용자가 새 이미지를 업로드할 때마다 일반적으로 모호해지기 전에 한 달 정도는 꽤 자주 액세스됩니다. ~3개월 후에는 이미지에 거의 액세스하지 않습니다.

다음 요구 사항은 다음과 같이 설명할 수 있습니다.
  • 이미지가 업로드되면 자주 액세스하는 스토리지 계층(S3 Standard)에 저장합니다.
  • 한 달 후, 자주 접하지 않는 항목으로 변경
  • 분기 후 법적인 이유로 이미지를 보관합니다
  • .

    물론 수동으로 수행하거나(행운을 빌어요) Python 스크립트를 작성하거나 CDK로 TypeScript 몇 줄을 작성할 수 있습니다.

    이를 위해 다음과 같이 lifecycleRules 정의에 s3.Bucket 배열을 추가합니다.

    const myBucket = new s3.Bucket(this, 'BuckyMcBucketface', {
        lifecycleRules: [
            {
                transitions: [
                    {
                        storageClass: s3.StorageClass.INFREQUENT_ACCESS,
                        transitionAfter: cdk.Duration.days(30),
                    },
                    {
                        storageClass: s3.StorageClass.GLACIER,
                        transitionAfter: cdk.Duration.days(90),
                    },
                ],
            },
        ],
    });
    


    보시다시피 lifecycleRules는 일련의 규칙을 취합니다. 여기서는 두 가지transitions를 지정합니다.
  • 30일 후(예를 들어 30일을 밀리초 단위로 지정하는 것보다 훨씬 더 편리한 cdk.Duration 사용에 주의) S3 Standard(기본 스토리지 클래스)에서 S3 Standard-IA
  • 로 데이터 전환
  • 90일 후 데이터를 Glacier로 전환하여 스토리지 비용 절감

  • 메모:
    🚨 파일은 전환을 트리거하기 전에 최소 30일 동안 S3 Standard/Standard-IA에 저장해야 합니다. transitionAfter: cdk.Duration.days(5)가 포함된 스택을 배포하려고 하면 배포 중에 오류가 발생합니다.Days' in Transition action must be greater than or equal to 30 for storageClass 'STANDARD_IA'
    실행cdk deploy하고 관리 탭을 클릭하여 S3 콘솔에서 결과를 확인하십시오. 수명 주기 규칙이 성공적으로 생성되었습니다 🎉

    수명 주기 규칙을 선택하고 편집을 클릭하여 검토합니다.



    좋습니다. CDK로 지정한 수명 주기 규칙이 버킷에 적용되었습니다. 파일은 30일 후에 Standard-IA로 전환되고 90일 후에 Glacier로 전환됩니다.

    수명 주기 규칙은 변경할 수 없습니다. "작은 개체를 Glacier 또는 Glacier Deep Archive로 전환하면 비용이 증가합니다."라는 경고가 나타납니다. 우리의 경우에는 정확히\$0.01이지만 실제로 분기 후에 해당 파일을 Glacier로 이동할 필요가 없으므로 CDK 스택으로 돌아가서 해당 규칙을 제거하겠습니다.

    const myBucket = new s3.Bucket(this, 'BuckyMcBucketface', {
        lifecycleRules: [
            {
                transitions: [
                    {
                        storageClass: s3.StorageClass.INFREQUENT_ACCESS,
                        transitionAfter: cdk.Duration.days(30),
                    },
                ],
            },
        ],
    });
    


    배포를 시작하기 전에 수명 주기 규칙의 변경 사항이 어떻게 적용되는지 알아보기 위해 실행cdk diff해 보겠습니다.

    Stack AmazonS3Stack
    Resources
    [~] AWS::S3::Bucket BuckyMcBucketface BuckyMcBucketface22FEAF1D
     └─ [~] LifecycleConfiguration
         └─ [~] .Rules:
             └─ @@ -5,10 +5,6 @@
                [ ]     {
                [ ]       "StorageClass": "STANDARD_IA",
                [ ]       "TransitionInDays": 30
                [-]     },
                [-]     {
                [-]       "StorageClass": "GLACIER",
                [-]       "TransitionInDays": 90
                [ ]     }
                [ ]   ]
                [ ] }
    


    보시다시피 수명 주기 규칙 자체는 삭제되지 않고 Glacier 전환 부분만 삭제됩니다. cdk deploy로 배포하고 규칙이 업데이트되었는지 확인합니다.



    축하합니다. 방금 AWS CDK로 S3 수명 주기 규칙을 관리하는 방법을 배웠습니다 🎉

    AWS에 대해 자세히 알고 싶습니다. 어떻게 해야 합니까?



    훌륭한 질문입니다!

    얼마 전에 저는 egghead.io에서 전체 AWS 과정을 개설했습니다. - 확인하십시오Build an App with the AWS Cloud Development Kit.



    내가 만든 최고의 콘텐츠이며 믿을 수 없을 정도로 자랑스럽습니다 🌟

    그 외에도 다음과 같은 서버리스 주제에 대한 컬렉션egghead.io도 있습니다.
  • Learn AWS Lambda from scratch
  • Learn AWS Serverless Application Model (AWS SAM) from scratch
  • 좋은 웹페이지 즐겨찾기