S3 Intelligent-Tieringに自動的に移行されるバケットを作成する [AWS CloudFormation テンプレート付き]

こんにちは、SCSKの石原です。

「S3バケット」たくさん作成されていますでしょうか?
データ量が増えてくると、コストが気になってくるかと思います。

今回はS3のコストを最適化してくれるストレージクラス「Intelligent-Tiering」に、自動的に移行してくれるバケットをCloudFormationでサクッと作れるテンプレートを用意しました。ぜひご活用ください。

S3 Intelligent-Tieringとは

AWSにお任せでストレージコストを削減してくれるS3のストレージクラスです。

Amazon S3 Intelligent-Tiering - Amazon Simple Storage Service
S3 Intelligent-Tiering を使用して、アクセスパターンが不明または変化するデータのストレージコストを最適化します。

2021年9月にアップデートがあり、より使いやすいものになっています。

Amazon S3 Intelligent-Tiering – Improved Cost Optimizations for Short-Lived and Small Objects | Amazon Web Services
In 2018, we first launched Amazon S3 Intelligent-Tiering (S3 Intelligent-Tiering). For customers managing data across bu...

S3 Intelligent-Tieringに自動的に移行されるバケットのテンプレート

今回の設定では、Intelligent-Tieringに移行されるまでの期間を0日としています。これはアップロードされた瞬間ではなく、UTC 0時(JST 9時)に移行されることになります。

S3 ライフサイクル設定の例 – Amazon Simple Storage Service

通常版

バケットを作成するテンプレートは下記の通りです。S3 Intelligent-Tierへのライフサイクルルールのほかに、SSE-S3暗号化やパブリックアクセスの無効化などの設定を入れています。

AWSTemplateFormatVersion: "2010-09-09"
Description: "S3 Intelligent Tier Template"
Parameters:
  BucketName001:
    Type: String


Resources:
  S3Bucket001:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: !Ref BucketName001
      PublicAccessBlockConfiguration:
        BlockPublicAcls: True
        BlockPublicPolicy: True
        IgnorePublicAcls: True
        RestrictPublicBuckets: True
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      LifecycleConfiguration:
        Rules:
          - Id: IntelligentTierRule
            Status: Enabled
            Transitions:
              - TransitionInDays: 0
                StorageClass: INTELLIGENT_TIERING

設定した日数経過後に環境を確認すると、Intelligent-Tieringに移行されていました。ただし、ファイルサイズが128kb以下のオブジェクトは移行されません。ある程度大きなファイルにまとめるなどの対応が必要になります。

Intelligent-Tiering Archive 設定版

よりコストの安い「Archive Access tier 」と「Deep Archive Access tier」を利用するパターンです。こちらのTierでは安い代わりに取り出しコストと数分から数時間の取り出し時間がかかります。滅多にアクセスされないうえに、取り出し時間が許容される場合にご利用いただければと思います。

AWSTemplateFormatVersion: "2010-09-09"
Description: "S3 Intelligent Tier deep Archive Template"
Parameters:
  BucketName001:
    Type: String

Resources:
  S3Bucket001:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: !Ref BucketName001
      PublicAccessBlockConfiguration:
        BlockPublicAcls: True
        BlockPublicPolicy: True
        IgnorePublicAcls: True
        RestrictPublicBuckets: True
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      LifecycleConfiguration:
        Rules:
          - Id: IntelligentTierRule
            Status: Enabled
            Transitions:
              - TransitionInDays: 0
                StorageClass: INTELLIGENT_TIERING
      IntelligentTieringConfigurations: 
        - Id: DeepArchiveConfig
          Status: Enabled
          Tierings: 
            - AccessTier: ARCHIVE_ACCESS
              Days: 90
            - AccessTier: DEEP_ARCHIVE_ACCESS
              Days: 180

終わりに

S3バケットは同じ設定でたくさん作成する機会もあるかと思いますので、参考になれば幸いです。

タイトルとURLをコピーしました