Не удается создать несколько сегментов S3 из yaml CloudFormation - PullRequest
2 голосов
/ 11 октября 2019

У меня есть файл yaml для создания стека с помощью CloudFormation. Однако, когда дело доходит до создания некоторых блоков S3, сценарий завершается ошибкой, выдавая ошибку 400 Bad Request в консоли. Я попытался запустить скрипт, который делает только это, но имеет тот же результат. Это файл yaml, который я использую

AWSTemplateFormatVersion: 2010-09-09
Parameters:
    ArtifactsBucket:
        Type: String
        Default: artifacts.bucket
        Description: S3 Bucket Name for CodeBuild Artifacts
    DevBucket:
        Type: String
        Default: dev.bucket
        Description: S3 Bucket Name for Dev environment.
    StagingBucket:
        Type: String
        Default: staging.bucket
        Description: S3 Bucket Name for Staging environment
    ProductionBucket:
        Type: String
        Default: production.bucket
        Description: S3 Bucket Name for Production environment

Resources:

    # S3 Bucket for build artifacts
    BuildArtifactsBucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${ArtifactsBucket}'

    # S3 Bucket for Dev environment
    DevS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${DevBucket}'

    # S3 Bucket for Staging environment
    StagingS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${StagingBucket}'

    # S3 Bucket for Production environment
    ProductionS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${ProductionBucket}'

Я действительно не понимаю, что с этим не так, поскольку, если я оставил только один ресурс S3 Bucket, он работает

1 Ответ

3 голосов
/ 11 октября 2019

Вполне возможно, что вы нажали на газ в интерфейсе управления S3.

Чтобы избежать чрезмерных параллельных запросов, вы можете добавить параметр DependsOn, чтобы принудительно создавать сегменты:

AWSTemplateFormatVersion: 2010-09-09
Parameters:
    ArtifactsBucket:
        Type: String
        Default: artifacts.bucket
        Description: S3 Bucket Name for CodeBuild Artifacts
    DevBucket:
        Type: String
        Default: dev.bucket
        Description: S3 Bucket Name for Dev environment.
    StagingBucket:
        Type: String
        Default: staging.bucket
        Description: S3 Bucket Name for Staging environment
    ProductionBucket:
        Type: String
        Default: production.bucket
        Description: S3 Bucket Name for Production environment

Resources:

    # S3 Bucket for build artifacts
    BuildArtifactsBucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${ArtifactsBucket}'

    # S3 Bucket for Dev environment
    DevS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${DevBucket}'
        DependsOn: "BuildArtifactsBucket"

    # S3 Bucket for Staging environment
    StagingS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${StagingBucket}'
        DependsOn: "DevS3Bucket"

    # S3 Bucket for Production environment
    ProductionS3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          AccessControl: Private
          BucketName: !Sub '${ProductionBucket}'
        DependsOn: "StagingS3Bucket"

Здесь все сегменты будут создаваться последовательно. Вы можете разделить их на несколько групп, а не строго по одному;поэкспериментируйте и посмотрите, что работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...