Під час розгортання інфраструктури в хмарних сервісах Amazon Web Services (AWS) часто виникають різноманітні проблеми, які потребують ретельного аналізу та вирішення. Однією з таких проблем є помилка у файлі YAML під час використання сервісу AWS CodeBuild.
Причини виникнення цієї помилки можуть бути різноманітні, і вирішення проблеми вимагає уважного аналізу коду та конфігураційних файлів. Нижче розглянемо конкретний випадок помилки та можливі шляхи її вирішення.
Помилка, яка виникає у файлі YAML під час виконання AWS CodeBuild, має наступне повідомлення: “wrong number of container tags, expected 1”. Це означає, що в файлі YAML, який використовується для налаштування сервісу CodeBuild, не відповідає правильному формату або структурі.
Наприклад, розглянемо вихідний код YAML файлу, в якому можуть бути виявлені проблеми:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
AWSTemplateFormatVersion: 2010-09-09 Description: Create CodeBuild Stack Template Parameters: ApplicationRepoName: Type: String Description: Name of the repo which contains Rest Application. Default: spring-petclinic ArtifactStoreS3Location: Type: String Description: Name of the S3 bucket to store CodePipeline artificat. Default: rest-apps-cbd Resources: CodeBuildRole: Type: "AWS::IAM::Role" Properties: RoleName: Fn::Sub: CodeBuildRole-${AWS::StackName} AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "codebuild.amazonaws.com" Action: - "sts:AssumeRole" Path: /service-role/ Policies: - PolicyName: "CodeBuildCICDAccessPolicy" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "codecommit:GitPull" Resource: - Fn::Sub: arn:aws:codecommit:${AWS::Region}:${AWS::AccountId}:${ApplicationRepoName} - Effect: "Allow" Action: - "logs:CreateLogGroup" - "logs:CreateLogStream" - "logs:PutLogEvents" Resource: - Fn::Sub: arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/* - Effect: "Allow" Action: - "s3:PutObject" - "s3:GetObject" - "s3:GetObjectVersion" - "s3:ListBucket" Resource: - Fn::Sub: arn:aws:s3:::codepipeline-${AWS::Region}-* - Fn::Sub: arn:aws:s3:::${ArtifactStoreS3Location}/* - Fn::Sub: arn:aws:s3:::${ArtifactStoreS3Location} BuildRestAppCFNProject: Type: AWS::CodeBuild::Project Properties: Name: !Sub BuildRestAppCFN-${AWS::StackName} Description: Build war file for rest application ServiceRole: !GetAtt [ CodeBuildRole, Arn ] Artifacts: Type: S3 Location: !Ref ArtifactStoreS3Location Name: !Sub BuildRestAppCFN-${AWS::StackName} Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:2.0 Source: Location: !Sub https://git-codecommit.us-east-1.amazonaws.com/v1/repos/${ApplicationRepoName} Type: CODECOMMIT TimeoutInMinutes: 10 Tags: - Key: Name Value: !Sub BuildRestAppCFN-${AWS::StackName} |
У цьому прикладі ми бачимо структуру файлу YAML для створення стеку AWS CodeBuild. Однак, з огляду на вимоги до формату YAML, можливо, потрібно перевірити правильність використання тегів та інших елементів синтаксису YAML.
Щоб вирішити цю проблему, можна виконати наступні кроки:
Враховуючи важливість правильного форматування та структури файлу YAML для налаштування сервісів AWS, ретельний аналіз та виправлення помилок у таких файлах є ключовим етапом при роботі з хмарними сервісами.