¿Cómo configuro el comando de ejecución de AWS Systems Manager para enviar la salida a un bucket de S3 en otra cuenta de AWS?

4 minutos de lectura
0

Deseo enviar la salida del comando de ejecución de AWS Systems Manager a un bucket de Amazon Simple Storage Service (Amazon S3) en otra cuenta de AWS. ¿Cómo puedo hacerlo?

Resolución

Puede utilizar el comando de ejecución de AWS Systems Manager para ejecutar documentos de Systems Manager como AWS-RunPatchBaseline y AWS-RunPowerShellScript en instancias gestionadas. A continuación, puede enviar la salida a Amazon CloudWatch y Amazon S3 en la misma cuenta de AWS, o a un bucket de S3 en otra cuenta de AWS.

Para permitir que Systems Manager acceda a un bucket de S3 en otra cuenta de AWS, configure las siguientes políticas de AWS Identity and Access Management (IAM) y de bucket.

Permisos para perfil de instancia de IAM

Un perfil de instancia es un contenedor que transfiere información sobre el rol de IAM a una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en el momento del lanzamiento. El rol de IAM adjunto a su instancia de EC2 gestionada debe tener implementadas las siguientes acciones para permitir el acceso al bucket de S3. Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket de S3 de la cuenta de destino.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Para obtener más información sobre los permisos de S3 necesarios para situaciones específicas, consulte Crear una política personalizada para el acceso al bucket de S3.

Política del bucket de S3 de destino

El bucket de S3 de destino debe permitir que el rol de perfil de instancia que se adjunta a la instancia de EC2 gestionada acceda al bucket. Puede crear una política de bucket o conceder acceso a la cuenta de AWS de origen en la lista de control de acceso (ACL) del bucket.

Advertencia: Crear una política de bucket es una práctica recomendada de seguridad. Añadir la cuenta de AWS de origen a la ACL del bucket permite a todos los usuarios y roles de la cuenta de AWS de origen acceder al bucket de S3.

A continuación se muestra un ejemplo de política de bucket para el bucket de S3 de destino. Sustituya DOC-EXAMPLE-BUCKET por el nombre del bucket de S3 de la cuenta de destino. Sustituya SOURCE-AWS-ACCOUNT por el ID de la cuenta de AWS de origen. Sustituya INSTANCE-PROFILE-ROLE-NAME por el nombre del rol de IAM que se adjunta a la instancia de EC2.

{
  "Version": "2012-10-17",
  "Id": "Policy1589684413780",
  "Statement": [
    {
      "Sid": "Stmt1589684412557",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SOURCE-AWS-ACCOUNT:role/INSTANCE-PROFILE-ROLE-NAME"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Configure Ejecutar comando para enviar la salida del comando a Amazon S3

Consola de AWS Systems Manager

  1. Abra la consola de Systems Manager y, a continuación, seleccione Ejecutar comando en el panel de navegación.

  2. Seleccione Ejecutar comando.

  3. Seleccione el documento que desea ejecutar e introduzca todos los parámetros necesarios.

  4. En Opciones de salida, seleccione Habilitar un bucket de S3. Seleccione Introducir un nombre de bucket de S3 en el cuadro de texto y, a continuación, introduzca el nombre del bucket de S3 de la cuenta de destino.

  5. (Opcional) Para enviar la salida del comando a una subcarpeta del bucket de S3, para Prefijo de la clave de S3, introduzca el prefijo de la clave de S3.

AWS CLI

Nota: Si recibe errores al ejecutar los comandos de la interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la AWS CLI.

Cuando ejecuta una llamada a la API SendCommand en la AWS CLI, puede especificar las opciones de salida añadiendo los siguientes parámetros:

--output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Nota: En los ejemplos de parámetros anteriores, DOC-EXAMPLE-BUCKET es el nombre del bucket de S3 de su cuenta de destino. DOC-EXAMPLE-BUCKET-PREFIX indica la subcarpeta dentro del bucket de S3 en la que desea almacenar la respuesta. El parámetro output-s3-key-prefix no es necesario para enviar la salida del comando a un bucket de S3. Para obtener más información, consulte send-command.

El siguiente ejemplo de AWS CLI inicia un comando que utiliza el documento AWS-RunPowerShellScript para ejecutar de forma remota echo helloWorld en las instancias gestionadas etiquetadas como Key=tag:Env,Values=Dev,Test. La salida del comando se envía al bucket de S3 denominado DOC-EXAMPLE-BUCKET de su cuenta de destino y se almacena en una subcarpeta denominada con el prefijo DOC-EXAMPLE-BUCKET-PREFIX.

aws ssm send-command --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["echo helloWorld"]}'  --targets '[{"Key":"tag:Env","Values":["Dev","Test"]}]' --output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Información relacionada

Crear un perfil de instancia de IAM para Systems Manager

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años