首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CloudFormation模板-通过参数选择设置容器镜像

CloudFormation模板-通过参数选择设置容器镜像
EN

Stack Overflow用户
提问于 2020-12-03 06:05:59
回答 1查看 56关注 0票数 0

基于参数的选择来设置指定的容器镜像;例如,如果选择是"aceptance“,容器镜像将指向接受分支镜像,或者" deploy”将指向部署,依此类推。

这是我尝试过的一次尝试,但不确定这是最佳路径还是允许路径。在创建堆栈时,我收到一个错误:

代码语言:javascript
复制
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)
代码语言:javascript
复制
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"
              - 

有没有人有类似的用例,可以给我指出正确的方向?

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 06:19:40

Environment必须至少有一个:

代码语言:javascript
复制
  Name: String
  Value: String

你什么都没有。你的FindInMap也不会像你想的那样工作。值${AWS::AccountId}${AWS::Region}将不会被替换,您将以文字字符串结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65116838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档