9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

内容

先日S3のバケット数の上限が1アカウントあたりデフォルト100個(最大1000個)からデフォルト10000個(最大100万個)に増加し大量のS3バケットを作成したい場合には嬉しいアップデートとなりました。大量のリソースを作成する場合は色々と他の制限事項等も出てくるため実際にS3バケットを1000個作成してみました。

S3バケット作成概要

CloudFormation(以下CFn)で作成を行いました。S3のバケット名は20241211-s連番-abcdとしてこの連番の箇所はSystem Manager(以下SSM)のパラメータストアにList形式として保存しています。CFnを実行することでSSMパラメータストアからこの連番の値を読込、テンプレートからS3バケットを作成する仕組みとなります。

s31.png

CFnコードの説明

s3-test-01.yaml
AWSTemplateFormatVersion: 2010-09-09
Transform: 'AWS::LanguageExtensions'

Parameters:
  S3List:
    Type: AWS::SSM::Parameter::Value<List<String>>
    Default: s3list

Resources:
  Fn::ForEach::S3Loop:
    - S3Items
    - !Ref S3List
    - 'S3Bucket${S3Items}':
        Type: 'AWS::S3::Bucket'
        Properties:
          BucketName: !Sub '20241211-${S3Items}-abcd'

下記の箇所でこの後作成するSSMパラメータストアのリスト名を指定しています。SSMパラメータストアの中にs0001,s0002,s0003・・・s1000の値が入っています。

  S3List:
    Type: AWS::SSM::Parameter::Value<List<String>>
    Default: s3list

今回S3バケットの設定はBucketName: !Sub '20241211-${S3Items}-abcd'の箇所で作成するS3バケット名のみ指定しています。${S3Items}の箇所ですがFn::ForEach::を使用して、SSMパラメータストア内に保存しているs0001,s0002,s0003・・・s1000の値を順番に取得してS3バケットを作成していきます。

Resources:
  Fn::ForEach::S3Loop:
    - S3Items
    - !Ref S3List
    - 'S3Bucket${S3Items}':
        Type: 'AWS::S3::Bucket'
        Properties:
          BucketName: !Sub '20241211-${S3Items}-abcd'

パラメータストアの上限で失敗

SSMパラメータストアを作成します。名前をs3listタイプをStringListとして値をs0001,s0002 ・・・s1000と指定します。ここで文字数の上限に引っかかります。最大文字数は~4096でした。

s32.png

そのため、文字数を減らして1回目はs0001・・・s0600(600個作成)で作成してみます。

s33.png

CFnリソースの上限で失敗

上記s3-test-01.yamlのテンプレートを使用してCFnのスタックを作成します。テンプレートファイル名とスタック名を入力後、デフォルト設定で実行します。

s34.png

スタック実行後、下記エラーで失敗しました。CFnの最大リソース数は~500でした。

s35.png

500個作成

上記のため、SSMパラメータストア内の値をs0001・・・s0500とし、1回で500個作成してみます。

s36.png

同様にCFnスタックを作成すると今回は成功しました。

s37.png

追加500個作成

もう一つs3-test-02.yamlというテンプレートを作成して、SSMパラメータストア名をs3list2とします。s3list2というSSMパラメータストアを作成し、値にs0501・・・s1000をセットします。その後、同様にCFnを実行します。

s3-test-02.yaml
  S3List:
    Type: AWS::SSM::Parameter::Value<List<String>>
    Default: s3list2

S3バケットが1000個作成されました。元々このアカウントには7個バケットがあったので1007個になりました。

s38.png

大量のリソースを作成する際は思わぬクォータに引っかかる可能性があるため、事前にクォータ値の確認や申請により引き上げ可能な値かをチェックする必要があります。

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?