Я только что перешел к формированию облака, и я начинаю с создания репозиториев ECR для докера,
Мне нужно, чтобы все репозитории имели одинаковые свойства, кроме имени репозитория.
Поскольку это микро-сервисы, мне понадобится как минимум 40 репо, поэтому я хочу создать стек, который будет создавать репо для меня в цикле, и просто изменить имя.
Я начал смотреть на вложенные стеки, и вот что я получил до сих пор:
ECR-root.yaml:
---
AWSTemplateFormatVersion: '2010-09-09'
Description: ECR docekr repository
Parameters:
ECRRepositoryName:
Description: ECR repository name
Type: AWS::ECR::Repository::RepositoryName
Resources:
ECRStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://cloudformation.s3.amazonaws.com/ecr-stack.yaml
TimeoutInMinutes: '20'
Parameters:
ECRRepositoryName: !GetAtt 'ECRStack.Outputs.ECRRepositoryName'
И ecr-stack.yaml:
---
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
ECRRepositoryName:
Description: ECR repository name
Default: panpwr-mysql-base
Type: String
Resources:
MyRepository:
Type: AWS::ECR::Repository
Properties:
RepositoryName:
ref: ECRRepositoryName
RepositoryPolicyText:
Version: "2012-10-17"
Statement:
-
Sid: AllowPushPull
Effect: Allow
Principal:
AWS:
- "arn:aws:iam::123456789012:user/Bob"
- "arn:aws:iam::123456789012:user/Alice"
Action:
- "ecr:GetDownloadUrlForLayer"
- "ecr:BatchGetImage"
- "ecr:BatchCheckLayerAvailability"
- "ecr:PutImage"
- "ecr:InitiateLayerUpload"
- "ecr:UploadLayerPart"
- "ecr:CompleteLayerUpload"
RepositoryNameExport:
Description: RepositoryName for export
Value:
Ref: ECRRepositoryName
Export:
Name:
Fn::Sub: "ECRRepositoryName"
Все работает нормально,
Но когда я запускаю стек, он запрашивает у меня имя репозитория, которое я хочу дать, и создает один репозиторий.
И тогда у меня может быть столько стеков, сколько мне нужно, с другим именем, но это не моя цель.
Как мне получить все это в одном стеке, которое создает столько репозиториев, сколько я хочу?