cli를 사용하여 AWS ElasticBeanstalk에 간단한 도커 이미지를 배포하려고 했지만 eb
다음 오류로 인해 ECS에서 도커 서비스를 시작할 수 없습니다.
잘못된 참조 형식: 저장소 이름은 소문자여야 합니다.
내 Dockerrun.aws.json
파일:
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "ipsec-vpn-server",
"image": "hwdsl2/ipsec-vpn-server:latest",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 500,
"containerPort": 500
},
{
"hostPort": 4500,
"containerPort": 4500
}
]
}
]
}
나의.ebignore
# Only keep Dockerrun.aws.json
*
!Dockerrun.aws.json
나는 AWSElasticBeanstalkMulticontainerDocker
다음에 역할을 연결했습니다 aws-elasticbeanstalk-service-role
.
aws --profile my-profile-name \
iam attach-role-policy \
policy-arn arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker \
--role-name aws-elasticbeanstalk-service-role
다음과 같이 aws eb 환경을 만들었습니다.
export VPN_USER="some_secret_user"
export VPN_PASSWORD="some_secret_password"
export VPN_IPSEC_PSK="some_secret_ipsec_psk"
eb create vpn-example \
--profile my-profile-name \
--region us-east-1 \
--platform multi-container-docker-17.09.1-ce-\(generic\) \
--envvars VPN_USER=${VPN_USER} \
--envvars VPN_PASSWORD=${VPN_PASSWORD} \
--envvars VPN_IPSEC_PSK=${VPN_IPSEC_PSK} \
--cname some-vpn-example-domain
환경은 올바르게 생성되었지만 보시다시피 건강하지 않습니다. ;)
환경 생성은 잠시 동안 실행되고 로드 밸런서 등을 생성합니다. 그러나 여기 ECS 대시보드에서 작업을 여러 번 시작하려고 시도한 후 잠시 후 실패합니다.
상태:
중지됨(CannotPullContainerError: API 오류(400): 유효하지 않음)
세부정보 상태 이유:
CannotPullContainerError: API 오류(400): 잘못된 참조 형식: 저장소 이름은 소문자여야 합니다.
최신 이벤트는 Elastic Beanstalk 환경에서 다음과 같은 경고를 표시합니다.
환경 상태가 저하됨에서 심각으로 전환되었습니다. 모든 인스턴스에서 명령이 실패했습니다. ELB 상태가 실패하거나 모든 인스턴스에서 사용할 수 없습니다.
eb logs
전혀 출력이 없습니다.
containerDefinitions
에는 대문자를 사용하지 않습니다 image
. 내가 발견한 유일한 이상한 점은 내가 예상하는 위치를 Image
알려주는 작업 열 입니다 .Dockerrun.aws.json
hwdsl2/ipsec-vpn-server
나는 또한 이것이 일이 아니라 서비스일 것이라고 생각했습니다. 어떤 도움이라도 대단히 감사하겠습니다.
로그를 읽을 수 있는 방법을 찾을 수 없는 것 같습니다. 처음부터 다시 시도했는데 eb create
명령에 대한 로그는 다음과 같습니다.
WARNING: The Multi-container Docker platform requires additional ECS permissions. Add the permissions to the aws-elasticbeanstalk-ec2-role or use your own instance profile by typing "-ip {profile-name}".
For more information see: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html#create_deploy_docker_ecs_role
Creating application version archive "app-xxxx-xxxxxx_xxxxxx".
Uploading example-vpn/app-xxxx-xxxxxx_xxxxxx.zip to S3. This may take a while.
Upload Complete.
Environment details for: vpn-dev-01
Application name: example-vpn
Region: us-east-1
Deployed Version: app-xxxx-xxxxxx_xxxxxx
Environment ID: e-mtwbaums2n
Platform: arn:aws:elasticbeanstalk:us-east-1::platform/Multi-container Docker running on 64bit Amazon Linux/2.9.0
Tier: WebServer-Standard-1.0
CNAME: example-vpn-SNIP.us-east-1.elasticbeanstalk.com
Updated: 2018-03-22 18:55:03.173000+00:00
Printing Status:
INFO: createEnvironment is starting.
INFO: Using elasticbeanstalk-us-east-1-xxxxxxxxxxxx as Amazon S3 storage bucket for environment data.
INFO: Created security group named: sg-SNIP
INFO: Created security group named: awseb-e-SNIP
INFO: Created load balancer named: awseb-e-SNIP
INFO: Created Auto Scaling launch configuration named: awseb-e-SNIP
INFO: Created Auto Scaling group named: awseb-SNIP
INFO: Waiting for EC2 instances to launch. This may take a few minutes.
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:SNIP
INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-1:SNIP
INFO: Created CloudWatch alarm named: awseb-e-SNIP
INFO: Created CloudWatch alarm named: awseb-e-SNIP
ERROR: Failed to start ECS task: arn:aws:ecs:us-east-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is STOPPED.
ERROR: ECS task stopped due to: Essential container in task exited. (ipsec-vpn-server: )
ERROR: Failed to start ECS task: arn:aws:ecs:us-east-1:xxxxxxxxxxxx:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx is STOPPED.
ERROR: Failed to start ECS task after retrying 2 times.
ERROR: [Instance: i-xxxxxxxxxxxxxxxxx] Command failed on instance. Return code: 1 Output: trying 2 times.' --severity ERROR
+ exit 1.
Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/03start-task.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
ERROR: Create environment operation is complete, but with errors. For more information, see troubleshooting documentation.
다른 도커 이미지로 다시 시도했는데 nginx:latest
서비스가 시작되었으므로 내가 겪은 문제는 다음과 같습니다.hwdsl2/ipsec-vpn-server:latest
곧장. 다시 시도했지만 로컬에서는 다음과 같습니다.
docker pull hwdsl2/ipsec-vpn-server:latest
eb local run --debug
그리고 그것은 나에게 오류를 보여주었습니다:
ipsecvpnserver_1 | Error: This Docker image must be run in privileged mode.
ipsecvpnserver_1 |
ipsecvpnserver_1 | For detailed instructions, please visit:
ipsecvpnserver_1 | https://github.com/hwdsl2/docker-ipsec-vpn-server
ipsecvpnserver_1 |
elasticbeanstalk_ipsecvpnserver_1 exited with code 1
Elasticbeanstalk의 로그가 항상 읽기 쉬운 것은 아닙니다. 나는 이것을 다음에 추가했습니다 Dockerrun.aws.json
:
"privileged": true,
이제 실행 시 성공하여 로컬에서 시작되지만 eb local run
클라우드에서는 여전히 실패합니다.