基于参数的选择来设置指定的容器镜像;例如,如果选择是"aceptance“,容器镜像将指向接受分支镜像,或者" deploy”将指向部署,依此类推。
这是我尝试过的一次尝试,但不确定这是最佳路径还是允许路径。在创建堆栈时,我收到一个错误:
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"
- 有没有人有类似的用例,可以给我指出正确的方向?
发布于 2020-12-03 06:19:40
Environment必须至少有一个:
Name: String
Value: String你什么都没有。你的FindInMap也不会像你想的那样工作。值${AWS::AccountId}和${AWS::Region}将不会被替换,您将以文字字符串结束。
https://stackoverflow.com/questions/65116838
复制相似问题