Migración de un ARN de servicio corto de Amazon ECS a un ARN largo
Amazon ECS asigna un nombre de recurso de Amazon (ARN) único a cada servicio. Los servicios que se crearon antes de 2021 tienen un formato de ARN corto:
arn:aws:ecs:
region
:aws_account_id
:service/service-name
Amazon ECS cambió el formato del ARN para incluir el nombre del clúster. Este es un formato de ARN largo:
arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
Su servicio debe tener el formato de ARN largo para poder etiquetarlo.
Puede migrar un servicio con un formato de ARN corto a un formato de ARN largo sin tener que volver a crear el servicio. Puede utilizar la API, la CLI o la consola. No puede deshacer una operación de migración.
Si desea utilizar AWS CloudFormation para etiquetar un servicio con un formato de ARN corto, debe migrar el servicio mediante la API, la CLI o la consola. Una vez completada la migración, puede usar AWS CloudFormation para etiquetar el servicio.
Si desea utilizar Terraform para etiquetar un servicio con un formato de ARN corto, debe migrar el servicio mediante la API, la CLI o la consola. Una vez completada la migración, puede usar Terraform para etiquetar el servicio.
Después de completar la migración, el servicio presenta los siguientes cambios:
-
Formato de ARN largo
arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
-
Al migrar mediante la consola, Amazon ECS agrega una etiqueta al servicio con la clave establecida en “ecs:serviceArnMigratedAt” y el valor establecido en la marca de tiempo de la migración (formato UTC).
Esta etiqueta se tiene en cuenta para su cuota de etiquetas.
-
Cuando el valor de
PhysicalResourceId
en una pila de AWS CloudFormation representa un ARN de servicio, el valor no cambia y seguirá siendo el ARN de servicio corto.
Requisitos previos
Realice las siguientes operaciones antes de migrar el ARN de servicio.
-
Para comprobar si tiene un ARN de servicio corto, consulte los detalles del servicio en la consola de Amazon ECS (verá una advertencia cuando el servicio tenga el formato de ARN corto) o el parámetro de devolución
serviceARN
dedescribe-services
. Si el ARN no incluye el nombre del clúster, tiene un ARN corto. A continuación se muestra el formato de un ARN corto:arn:aws:ecs:
region
:aws_account_id
:service/service-name
-
Tenga en cuenta la fecha de creación.
Si tiene políticas de IAM que utilizan el formato de ARN corto, actualícelas al formato de ARN largo.
Reemplace cada
marcador de posición de entrada del usuario
con información propia.arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
Para obtener más información, consulta Políticas de IAM de edición en la Guía del usuario de AWS Identity and Access Management.
Si tiene herramientas que utilizan el formato de ARN corto, actualícelas al formato de ARN largo.
Reemplace cada
marcador de posición de entrada del usuario
con información propia.arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
-
Active el formato de ARN largo del servicio. Ejecute
put-account-setting
con la opciónserviceLongArnFormat
establecida enenabled
. Para obtener más información, consulte put-account-setting en la Referencia de la API de Amazon Elastic Container Service.Ejecute el comando como usuario root cuando el servicio tenga un valor de fecha desconocido para
createdAt
.aws ecs put-account-setting --name serviceLongArnFormat --value enabled
Ejemplo de resultado
{ "setting": { "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::
123456789012:role/your-role
", "type": user } } -
Active el formato de ARN largo de la tarea. Esto permite que las tareas que se ejecutan como parte de un servicio tengan el formato de ARN largo. Ejecute
put-account-setting
con la opcióntaskLongArnFormat
establecida enenabled
. Para obtener más información, consulte put-account-setting en la Referencia de la API de Amazon Elastic Container Service.Ejecute el comando como usuario root cuando el servicio tenga un valor de fecha desconocido para
createdAt
.aws ecs put-account-setting --name taskLongArnFormat --value enabled
Ejemplo de resultado
{ "setting": { "name": "taskLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::
123456789012:role/your-role
", "type": user } }
Procedimiento
Utilice lo siguiente para migrar el ARN de su servicio.
Abra la consola en https://console.aws.amazon.com/ecs/v2
. -
En la página Clusters (Clústeres), elija el clúster.
-
En la sección Servicios, elija un servicio que tenga una advertencia en la columna ARN.
Se abrirá la página de detalles del servicio.
-
Elija Migrar a un ARN largo.
Aparecerá el cuadro de diálogo del servicio de migración.
-
Seleccione Migrar.
Después de completar los requisitos previos, puede etiquetar su servicio. Ejecuta el siguiente comando:
Amazon ECS considera la posibilidad de transferir el formato de ARN largo a una solicitud de API tag-resource
para un servicio con un ARN corto como señal para migrar el servicio y usar el formato de ARN largo.
aws ecs tag-resource \ --resource-arn arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
--tags key=key1
,value=value1
El siguiente ejemplo etiqueta MyService con una etiqueta que tiene una clave establecida en “TestService” y un valor establecido en “WebServers:
aws ecs tag-resource \ --resource-arn arn:aws:ecs:us-east-1:123456789012:service/MyCluster/MyService --tags key=TestService1,value=WebServers
Después de completar los requisitos previos, puede etiquetar su servicio. Cree un recurso aws_ecs_service
y establezca la referencia tags
. Para obtener más información, consulte Resource: aws_ecs_service
resource "aws_ecs_service" "MyService" { name = "example" cluster = aws_ecs_cluster.MyService.id tags = { "Name" = "MyService" "Environment" = "Production" "Department" = "QualityAssurance" } }
Pasos a seguir a continuación
Puede agregar etiquetas al servicio. Para obtener más información, consulte Adición de etiquetas a los recursos de Amazon ECS.
Si desea que Amazon ECS propague las etiquetas desde la definición de tareas o el servicio a la tarea, ejecute update-service
con el parámetro propagateTags
. Para obtener más información, consulte update-service en Referencia de la AWS Command Line Interface.
Solución de problemas
Algunos usuarios pueden encontrar el siguiente error al migrar del formato ARN corto al formato ARN largo.
There was an error while migrating the ARN of service
service-name
. The specified account does not have
serviceLongArnFormat or taskLongArnFormat account settings enabled. Add account
settings in order to enable tagging.
Si ya ha activado la configuración de la cuenta de serviceLongArnFormat
, pero sigue apareciendo este error, puede que se deba a que la configuración de la cuenta para el formato ARN largo no esté activada para la entidad principal de IAM específica que creó originalmente el servicio.
-
Identifica la entidad principal que creó el servicio.
En la consola, esta información está disponible en el campo Creado por de la pestaña Configuración y redes, dentro de la página de detalles del servicio de la consola de Amazon ECS.
En el caso de la AWS CLI, ejecute el siguiente comando:
Sustituya las
entradas del usuario
por sus valores.aws ecs describe-services --cluster
cluster-name
--servicesservice-name
--query 'services[0].{createdBy: createdBy}'
-
Active la configuración de cuenta requerida para esa entidad principal específica. Puedes hacerlo de una de las siguientes formas:
-
Asuma el usuario o el rol de IAM para esa entidad principal. A continuación, ejecute
put-account-setting
. -
Utilice el usuario raíz para ejecutar el comando y, al mismo tiempo, especifique la creación de la entidad principal con
principal-arn
.Ejemplo.
Reemplace el valor de
principal-arn
por el valor del paso 1.aws ecs put-account-setting --name serviceLongArnFormat --value enabled --principal-arn
arn:aws:iam::123456789012:role/jdoe
-
Ambos métodos permiten la configuración de cuenta de serviceLongArnFormat
requerida en la entidad principal que creó el servicio, de modo que se puede continuar con la migración del ARN.