使用AWS CLI将AWS LoadBalancer添加到服务

时间:2017-08-17 04:19:30

标签: amazon-web-services amazon-ec2 amazon-ecs

我正在尝试使用AWS CLI将AWS ELB添加到ECS群集服务。我使用以下命令:

try { GeoJsonSource geoJsonSource = new GeoJsonSource("source", loadJsonFromRaw()); mapboxMap.addSource(geoJsonSource); LineLayer lineLayer = new LineLayer("line-layer", "source"); lineLayer.setProperties( PropertyFactory.lineWidth(1f), PropertyFactory.lineColor(Color.RED) ); mapboxMap.addLayer(lineLayer); } catch (IOException e) { e.printStackTrace(); }

角色&bw-计量角色'附加了以下政策:

  • AmazonEC2ContainerServiceFullAccess
  • AmazonEC2ContainerServiceforEC2Role

角色也有以下信任关系:

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}

但在执行上述AWS CLI命令时,我仍然遇到以下错误:

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

我搜索并找到了一些解决方案,但没有得到正面结果。

1 个答案:

答案 0 :(得分: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

我之前输入值中的问题是,我在'targetGroupArn'字段中提供了LoadBalancer ARN,而不是提供TargetGroupARN。一旦我修复了traget组ARN问题,它就开始正常工作了。