[英]Can I select a container image from private ECR repository in my CloudFormation template?
[英]CloudFormation Template - Setting Container Image by Parameter Selection
希望根据参数的选择设置指定的容器镜像; 说如果选择是“接受”容器图像将指向接受分支图像,或者“部署”将指向部署等。
这是我尝试过的一种尝试,但不确定这是否是最佳路径或允许的路径。 创建堆栈后,我收到错误消息:
ECSTaskDefinition CREATE_FAILED Invalid request provided: Create TaskDefinition: Container.name should not be null or empty. (Service: AmazonECS; Status Code: 400; Error Code: ClientException; Request ID: b679c7be-ad3e-4791-b388-d2cb87332b94; Proxy: null)
Parameters:
Branch:
Type: String
AllowedValues:
- acceptance
- canary
- deploy
Mappings:
BranchSelection:
acceptance:
BranchType: "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/acceptance"
canary:
BranchType: "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/canary"
deploy:
BranchType: "${AWS::AccountId}.dkr.ecr.${AWS::Region}.amazonaws.com/deploy"
ECSTaskDefinition:
Type: "AWS::ECS::TaskDefinition"
Properties:
ContainerDefinitions:
-
Environment:
-
Name: "ACCESS_KEY_ID"
Value:
!Sub
- "{{resolve:ssm:/doorways/${STAGE}/ACCESS_KEY_ID:1}}"
- { STAGE: !Ref STAGE }
-
Name: "SECRET_ACCESS_KEY"
Value:
!Sub
- "{{resolve:ssm:/doorways/${STAGE}/AWS_SECRET_KEY:1}}"
- { STAGE: !Ref STAGE }
-
Name: "SENDGRID_USERNAME"
Value:
!Sub
- "{{resolve:ssm:/doorways/${STAGE}/SENDGRID_USERNAME:1}}"
- { STAGE: !Ref STAGE }
-
Name: "SENDGRID_PASSWORD"
Value:
!Sub
- "{{resolve:ssm:/doorways/${STAGE}/SENDGRID_PASSWORD:1}}"
- { STAGE: !Ref STAGE }
-
Name: "REGION"
Value: !Ref AWS::Region
-
Essential: true
Image: !FindInMap
- BranchSelection
- !Ref Branch
- BranchType
LogConfiguration:
LogDriver: "awslogs"
Options:
awslogs-group: "/ecs/doorways-task-definition"
awslogs-region: !Ref AWS::Region
awslogs-stream-prefix: "ecs"
Name:
!Sub
- 'dw-${FriendlyName}-${SiteId}-${STAGE}'
- { FriendlyName: !Ref FriendlyName, SiteId: !Ref SiteId, STAGE: !Ref STAGE }
PortMappings:
-
ContainerPort: 3000
HostPort: 3000
Protocol: "tcp"
-
有没有人有类似的用例,并可能指出我正确的方向?
环境必须至少有一个:
Name: String
Value: String
你没有。 此外,您的FindInMap
不会按照您认为的方式工作。 值${AWS::AccountId}
和${AWS::Region}
不会被替换,您最终将得到文字字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.