Tengo dos cuentas: Cuenta A y Cuenta B. En la cuenta A, tengo una política con un usuario de la cuenta B que puede interactuar con la Cuenta A. Tengo un repositorio en ambas cuentas. La cuenta B no tiene un conjunto de políticas (no estoy seguro si necesito una política para que la cuenta A interactúe con ella).
Mi pregunta es cómo envío imágenes ecr de la cuenta A a la cuenta B. Me gustaría una copia de la imagen de la cuenta A en la cuenta B. ¿Es esto posible?
Esta no es una función compatible actualmente con ECR, por lo que deberá realizar los siguientes pasos para migrar de una cuenta a otra:
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com - Ejecute esto para la cuenta de origendocker pull $SOURCE_IMAGE:$VERSION - Baja la última etiqueta a tu localdocker tag $SOURCE_IMAGE:$VERSION $TARGET_IMAGE:$VERSION : etiqueta una nueva imagen basada en la imagen de origen originalaws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com - Ejecute esto para la cuenta de destinodocker push $TARGET_IMAGE:$VERSION la imagen de la ventana acoplable en la cuenta ECR de destino.Si desea mover todo el repositorio de una región en particular a otra cuenta (cuenta de destino), use el siguiente script.
#!/bin/bash TARGET_ACCOUNT_REGION="us-west-2" DESTINATION_ACCOUNT_REGION="us-west-2" DESTINATION_ACCOUNT_BASE_PATH="123456.dkr.ecr.$DESTINATION_ACCOUNT_REGION.amazonaws.com/" REPO_LIST=($(aws ecr describe-repositories --query 'repositories[].repositoryUri' --output text --region $TARGET_ACCOUNT_REGION)) REPO_NAME=($(aws ecr describe-repositories --query 'repositories[].repositoryName' --output text --region $TARGET_ACCOUNT_REGION)) for repo_url in ${!REPO_LIST[@]}; do echo "star pulling image ${REPO_LIST[$repo_url]} from Target account" docker pull ${REPO_LIST[$repo_url]} # Create repo in destination account, remove this line if already created aws ecr create-repository --repository-name ${REPO_NAME[$repo_url]} docker tag ${REPO_LIST[$repo_url]} $DESTINATION_ACCOUNT_BASE_PATH/${REPO_NAME[$repo_url]} docker push $DESTINATION_ACCOUNT_BASE_PATH/${REPO_NAME[$repo_url]} doneAsegúrese de obtener el token de inicio de sesión para ambas cuentas o agregue estos comandos en el script.
aws ecr get-login-password --region $TARGET_ACCOUNT_REGION | docker login --username AWS --password-stdin ${REPO_LIST[$repo_url]} # destination account login, make sure profile set for accoutn destination aws ecr get-login-password --region $DESTINATION_ACCOUNT_REGION --profile destination_account | docker login --username AWS --password-stdin ${REPO_LIST[$repo_url]}O puedes usar uno de ellos
Amazon ECR utiliza la configuración del registro para configurar características a nivel del registro. La configuración del registro privado se configura por separado para cada región. Actualmente, la única configuración de registro es la configuración de replicación, que se utiliza para configurar la replicación entre regiones y entre cuentas de las imágenes en sus repositorios.
Función de replicación entre regiones/cuentas en AWS
AWS ha lanzado CRR (replicación entre regiones) y CAR (replicación entre cuentas) Haga clic aquí para obtener más información