amazon web services - services - No se puede autenticar en Docker en Elastic Beanstalk a través de S3
git elastic beanstalk (1)
OK, hagamos esto;
Mirando la misma página de documento,
Con Docker versión 1.6.2 y versiones anteriores, el comando de inicio de sesión de Docker crea el archivo de autenticación en ~ / .dockercfg en el siguiente formato:
{
"server" :
{
"auth" : "auth_token",
"email" : "email"
}
}
Ya tienes esta parte correcta, veo. Por favor, revise los casos siguientes uno por uno;
1) ¿Estás alojando el cubo S3 en la misma región?
El depósito de Amazon S3 debe estar alojado en la misma región que el entorno que lo está utilizando. Elastic Beanstalk no puede descargar archivos de un cubo de Amazon S3 alojado en otras regiones.
2) ¿Has verificado los permisos necesarios?
Otorgue permisos para la función s3: GetObject a la función IAM en el perfil de la instancia. Para obtener detalles, consulte Administrar perfiles de instancias de Elastic Beanstalk .
3) ¿Tienes la información de tu cubo S3 en tu archivo de configuración? (Creo que tienes esto también)
Incluya la información del depósito de Amazon S3 en el parámetro
Authentication
(v1) oauthentication
(v2) en su archivoDockerrun.aws.json
.
No puedo ver sus permisos o su región env, así que por favor revise esos. Si eso no funciona, actualizaría a Docker 1.7+ si fuera posible y usaría el correspondiente ~/.docker/config.json
style.
Siga las instrucciones aquí para conectarse a un contenedor privado de docker de Elastic Beanstalk, pero se niega a funcionar. Parece que al llamar al docker login
de docker login
de Docker en Docker 1.12, el archivo resultante no tiene propiedad de correo electrónico, pero suena como aws lo espera, así que creo un archivo llamado dockercfg.json que se ve así:
{
"https://index.docker.io/v1/": {
"auth": "Y2...Fz",
"email": "[email protected]"
}
}
La pieza relevante de mi archivo Dockerrun.aws.json se ve así:
"Authentication": {
"Bucket": "elasticbeanstalk-us-west-2-9...4",
"Key": "dockercfg.json"
},
Y tengo el archivo cargado en la raíz del cubo S3. ¿Por qué sigo recibiendo errores que dicen Error: image c...6/w...t:23 not found. Check snapshot logs for details.
Error: image c...6/w...t:23 not found. Check snapshot logs for details.
Estoy seguro de que los nombres son correctos y que esto funcionaría si fuera un repositorio público. El error completo está abajo. Me estoy desplegando desde GitHub con Circle CI si hace una diferencia, feliz de proporcionar cualquier otra información necesaria.
INFO: Deploying new version to instance(s).
WARN: Failed to pull Docker image c...6/w...t:23, retrying...
ERROR: Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t
Error: image c...6/w...t:23 not found. Check snapshot logs for details.
ERROR: [Instance: i-06b66f5121d8d23c3] Command failed on instance. Return code: 1 Output: (TRUNCATED)...b-project
Error: image c...6/w...t:23 not found
Failed to pull Docker image c...6/w...t:23: Pulling repository docker.io/c...6/w...t
Error: image c...6/w...t:23 not found. Check snapshot logs for details.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03build.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: Unsuccessful command execution on instance id(s) ''i-06b66f5121d8d23c3''. Aborting the operation.
ERROR: Failed to deploy application.
ERROR: Failed to deploy application.
EDITAR: Aquí está el archivo Dockerrun completo. Tenga en cuenta que% BUILD_NUM% es solo un int; puedo verificar que funcione.
{
"AWSEBDockerrunVersion": "1",
"Authentication": {
"Bucket": "elasticbeanstalk-us-west-2-9...4",
"Key": "dockercfg.json"
},
"Image": {
"Name": "c...6/w...t:%BUILD_NUM%",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
]
}
EDITAR: También, he verificado que esto funciona si hago público este contenedor Docker Hub.