使用ecs-cli从Gitlab部署到ECS时出错

时间:2018-03-22 20:15:58

标签: amazon-ec2 continuous-integration gitlab amazon-ecs

当我尝试从Gitlab中的管道中站起来在ECS中容器时,我收到以下错误。当我尝试从我的本地机器上执行此操作时,它会成功,没有任何问题。以下是跑步者的工作错误。

level=error msg="Failed to Create Cluster" error="NoCredentialProviders: no valid providers in chain. Deprecated.\n\tFor verbose messaging see aws.Config.CredentialsChainVerboseErrors"
time="2018-03-22T19:50:34Z" level=fatal msg="Error executing 'up': NoCredentialProviders: no valid providers in chain. Deprecated.\n\tFor verbose messaging see aws.Config.CredentialsChainVerboseErrors"
ERROR: Job failed: exit code 1

ECS配置文件和配置都是在esc-cli up被调用之前成功生成的。

另外,下面是gitlab-ci.yml的脚本。

- ecs-cli configure profile --profile-name $AWS_PROFILE --access-key $AWS_ACCESS_KEY_ID --secret-key $AWS_SECRET_ACCESS_KEY
- ecs-cli configure --cluster $AWS_CLUSTER --default-launch-type EC2 --region $AWS_DEFAULT_REGION --config-name $AWS_CONFIGURATION
- ecs-cli up --keypair $AWS_KEY_PAIR --capability-iam --size 2 --instance-type t2.medium --vpc $AWS_VPC --subnets $AWS_SUBNETS --force
- ecs-cli compose -f docker-compose.ecs.yml service up

更新 似乎问题不是Gitlab Runner,而是转轮正在执行命令的Docker容器。我通过从Docker容器中运行相同的命令在本地重新创建它。

FROM python:3.6-alpine3.7

ENV AWS_KEY_PAIR=my-aws-key-pair
ENV AWS_ACCESS_KEY_ID=my-aws-access-key-id
ENV AWS_SECRET_ACCESS_KEY=my-aws-secret-access-key
ENV AWS_DEFAULT_REGION=us-east-1
ENV AWS_PROFILE=gitlab-ci
ENV AWS_CONFIGURATION=my-configuration
ENV AWS_VPC=vpc-77d05d0c
ENV AWS_SUBNETS=subnet-43938527,subnet-7ab78755

RUN apk add --update curl \
  && curl -o /usr/local/bin/ecs-cli https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-amd64-latest \
  && chmod +x /usr/local/bin/ecs-cli

RUN sysctl net.ipv4.ip_forward \
  && ecs-cli configure profile --profile-name $AWS_PROFILE --access-key $AWS_ACCESS_KEY_ID --secret-key $AWS_SECRET_ACCESS_KEY \
  && ecs-cli configure --cluster my-cluster --default-launch-type EC2 --region $AWS_DEFAULT_REGION --config-name $AWS_CONFIGURATION \
  && ecs-cli up --keypair $AWS_KEY_PAIR --instance-role gitlab-ci-role --size 1 --instance-type t2.medium --vpc $AWS_VPC --subnets $AWS_SUBNETS --force \
  && ecs-cli compose -f docker-compose.ecs.yml service up

0 个答案:

没有答案