Como configuro o AWS Systems Manager Run Command para enviar a saída para um bucket do S3 em outra conta da AWS?

4 minuto de leitura
0

Quero enviar a saída do AWS Systems Manager Run Command para um bucket do Amazon Simple Storage Service (Amazon S3) em outra conta da AWS. Como posso fazer isso?

Resolução

Você pode usar o AWS Systems Manager Run Command para executar documentos do Systems Manager, como AWS-RunPatchBaseline e AWS-RunPowerShellScript, em instâncias gerenciadas. Em seguida, você pode enviar a saída para o Amazon CloudWatch e o Amazon S3 na mesma conta da AWS ou para um bucket do S3 em outra conta da AWS.

Para permitir que o Systems Manager acesse um bucket do S3 em outra conta da AWS, configure as seguintes políticas do AWS Identity and Access Management (IAM) e de bucket.

Permissões para o perfil da instância do IAM

Um perfil de instância é um contêiner que transmite informações da função do IAM para uma instância do Amazon Elastic Compute Cloud (Amazon EC2) no lançamento. A função IAM anexada à sua instância gerenciada do EC2 deve ter as seguintes ações implementadas para permitir o acesso ao bucket do S3. Substitua DOC-EXAMPLE-BUCKET pelo nome do bucket do S3 na conta 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 obter mais informações sobre as permissões do S3 necessárias para cenários específicos, consulte Criar uma política personalizada para acesso ao bucket do S3.

Política de bucket do Target S3

O bucket S3 de destino deve permitir que a função de perfil da instância que está anexada à instância gerenciada do EC2 para acessar o bucket. Você pode criar uma política de bucket ou conceder acesso à conta AWS de origem na lista de controle de acesso (ACL) do bucket.

Aviso: Criar uma política de bucket é uma prática recomendada de segurança. Adicionar a conta da AWS de origem à ACL do bucket permite que todos os usuários e funções na conta da AWS de origem acessem o bucket do S3.

Veja a seguir um exemplo de política de bucket para o bucket S3 de destino. Substitua DOC-EXAMPLE-BUCKET pelo nome do bucket do S3 na conta de destino. Substitua SOURCE-AWS-ACCOUNT pelo ID da conta AWS de origem. Substitua INSTANCE-PROFILE-ROLE-NAME pelo nome da função do IAM que está anexado à instância do 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 Run Command para enviar a saída do comando para o Amazon S3

Console do AWS Systems Manager

1.Abra o console do Systems Manager e escolha Executar comando no painel de navegação.

2.Escolha Executar comando.

3.Selecione o documento que você deseja executar e insira todos os parâmetros necessários.

4.Em Opções de saída, selecione Ativar um bucket do S3. Escolha Inserir um nome de bucket do S3 na caixa de texto e, em seguida, insira o nome do bucket do S3 na conta de destino.

5.(Opcional) Para enviar a saída do comando para uma subpasta do bucket do S3, para o prefixo da chave do S3, insira o prefixo da chave do S3.

AWS CLI

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Ao executar uma chamada de API SendCommand na AWS CLI, você pode especificar as opções de saída adicionando os seguintes parâmetros:

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

Observação: Nos exemplos de parâmetros anteriores, DOC-EXAMPLE-BUCKET é o nome do bucket do S3 em sua conta de destino. DOC-EXAMPLE-BUCKET-PREFIX indica a subpasta dentro do bucket do S3 em que você deseja armazenar a resposta. O parâmetro output-s3-key-prefix não é necessário para enviar a saída do comando para um bucket do S3. Para obter mais informações, consulte send-command.

O exemplo de AWS CLI a seguir inicia um comando que usa o documento AWS-RunPowerShellScript para executar remotamente o echo helloWorld nas instâncias gerenciadas marcadas como Key=tag:Env,Values=Dev,Test. A saída do comando é enviada para o bucket do S3 chamado DOC-EXAMPLE-BUCKET em sua conta de destino e armazenada em uma subpasta chamada com o prefixo 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"

Informações relacionadas

Criar um perfil de instância do IAM para o Systems Manager

AWS OFICIAL
AWS OFICIALAtualizada há um ano