缓慢地将我们所有的资源转移到CloudFormation进行管理,到目前为止,该过程相对比较轻松。
我在ECS服务上部署新任务定义(仅暂存环境)有点困难。我认为有些部分无法使用CloudFormation进行管理,因为ECS服务正在引用参数。
当前过程:
在BitBucket上推送到develop
分支
BitBucket管道进行处理(简化):
使用标签latest
通过aws ecs register-task-definition --cli-input-json $TASK_JSON
使用aws ecs update-service --cluster ${ECS_CLUSTER_NAME} --service ${ECS_SERVICE} --task-definition $TASK_DEFINITION
一切正常!
通过以下方式将ECS资源管理移至CloudFormation
Parameters:
TaskDefinition:
Type: String
Description: Task Definition ARN
Resources:
HTTPService:
Type: AWS::ECS::Service
DependsOn: ListenerRule
Properties:
Cluster: !Ref ECSCluster
Role: !Ref ServiceRole
DesiredCount: 1
HealthCheckGracePeriodSeconds: 120
TaskDefinition: !Ref TaskDefinition
LoadBalancers:
- ContainerName: http
ContainerPort: 80
TargetGroupArn: !Ref TargetGroup
TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
VpcId: !Ref VPC
Port: 80
Protocol: HTTP
Matcher:
HttpCode: 200
HealthCheckIntervalSeconds: 15
HealthCheckPath: /
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
ListenerRule:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
ListenerArn: !Ref Listener
Priority: 2
Conditions:
- Field: path-pattern
Values:
- /blog
Actions:
- TargetGroupArn: !Ref TargetGroup
Type: forward
如果我现在手动运行aws ecs update-service
命令,则CloudFormation堆栈将与ECS服务不同步。
研究一下也许运行aws cloudformation update-stack
,但是BitBucket用户的IAM权限变得相当复杂。
也许我已经在这里错误地进行了设置。这里有任何指针/建议吗?