2017-08-17 149 views
0

我嘗試使用AWS CLI將AWS ELB添加到ECS羣集服務。我使用下面的命令:使用AWS CLI將AWS LoadBalancer添加到服務

aws ecs create-service --service-name ${SERVICE_NAME} --desired-count 1 --task-definition launch-test-app --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:NNNNNNNNNNNN:loadbalancer/app/bw-test/edfe7f7c15e40d56,containerName=launch-test-app,containerPort=8080 --role arn:aws:iam::NNNNNNNNNNNN:role/service-role/bw-metering-role --cluster ${CLUSTER} --region ${REGION}

'BW-計量角色' 中的作用有以下附加政策:

  • AmazonEC2ContainerServiceFullAccess
  • AmazonEC2ContainerServiceforEC2Role

和角色也有以下信任關係:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ecs.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

但在執行上面的AWS CLI命令還是我收到以下錯誤:

An error occurred (InvalidParameterException) when calling the CreateService operation: Unable to assume role and validate the specified targetGroupArn. Please verify that the ECS service role being passed has the proper permissions.

我已經搜索並發現了一些解決方案,但沒有積極的結果。

+0

該服務應該只需要'AmazonEC2ContainerServiceforEC2Role',並且您通常不需要明確指定角色,因爲它會自動承擔角色'AWSServiceRoleForECS',在創建ECS羣集時在您的帳戶中創建角色。 –

回答

3

通過AWS文檔會後,我發現,對於經典的負載均衡器,我們應提供以下資料(loadBalancerName):

--load-balancers loadBalancerName=bwce-lb,containerName=launch-test-app,containerPort=8080

而對於應用負載均衡器(這是我的情況),我們應該提供以下資料(targetGroupArn):

--load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:750037626691:targetgroup/default/85fd830384028e21,containerName=launch-test-app,containerPort=8080

的問題在我以前的輸入值是,我正在向負載平衡器ARN在'targetGroupArn'字段中,而不是提供TargetGroupARN。一旦我修復了traget group ARN問題,它就開始正常工作。