Come posso configurare Esegui comando di AWS Systems Manager per inviare l'output a un bucket S3 in un altro account AWS?

4 minuti di lettura
0

Desidero inviare l'output di Esegui comando di AWS Systems Manager a un bucket Amazon Simple Storage Service (Amazon S3) in un altro account AWS. Come posso farlo?

Risoluzione

È possibile utilizzare Esegui Comando di AWS Systems Manager per eseguire i documenti di Systems Manager come AWS-RunPatchBaseline e AWS-RunPowerShellScript in istanze gestite. È quindi possibile inviare l'output ad Amazon CloudWatch e Amazon S3 nello stesso account AWS o a un bucket S3 in un altro account AWS.

Per consentire a Systems Manager di accedere a un bucket S3 in un altro account AWS, configura le seguenti policy di AWS Identity and Access Management (IAM) e dei bucket.

Autorizzazioni per il profilo dell'istanza IAM

Un profilo dell'istanza è un container che trasmette le informazioni relative al ruolo IAM a un'istanza Amazon Elastic Compute Cloud (Amazon EC2) al momento dell’avvio. Per consentire l’accesso ai bucket S3, il ruolo IAM associato all'istanza EC2 gestita deve disporre delle seguenti azioni. Sostituisci DOC-EXAMPLE-BUCKET con il nome del bucket S3 nell'account di destinazione.

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

Per ulteriori informazioni sulle autorizzazioni S3 richieste per scenari specifici, consulta Create a custom policy for S3 bucket access.

Policy del bucket S3 di destinazione

Il bucket S3 di destinazione deve consentire al ruolo del profilo dell'istanza associato all'istanza EC2 gestita di accedere al bucket. Puoi creare una policy del bucket o concedere l'accesso all'account AWS di origine nella lista di controllo degli accessi (ACL) del bucket.

Avvertenza: per motivi di sicurezza, è consigliabile creare una policy del bucket. L'aggiunta dell'account AWS di origine all'ACL del bucket consente a tutti gli utenti e ruoli nell'account AWS di origine di accedere al bucket S3.

Di seguito è riportato un esempio di policy del bucket per il bucket S3 di destinazione. Sostituisci DOC-EXAMPLE-BUCKET con il nome del bucket S3 nell'account di destinazione. Sostituisci SOURCE-AWS-ACCOUNT con l'ID dell'account AWS di origine. Sostituisci INSTANCE-PROFILE-ROLE-NAME con il nome del ruolo IAM associato all'istanza 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/*"
    }
  ]
}

Configurazione di Esegui comando per l’invio dell'output del comando ad Amazon S3

Console AWS Systems Manager

1.    Apri la console di Systems Manager, quindi scegli Esegui comando nel riquadro di navigazione.

2.    Scegli Esegui comando.

3.    Seleziona il documento che desideri eseguire e inserisci tutti i parametri richiesti.

4.    Per Opzioni di output, seleziona Abilita un bucket S3. Scegli Immetti un nome di bucket S3 nella casella di testo, quindi inserisci il nome del bucket S3 nell'account di destinazione.

5.    (Facoltativo) Per inviare l'output del comando a una sottocartella del bucket S3, inserisci il prefisso della chiave S3 in Prefisso della chiave S3.

Interfaccia della linea di comando AWS (CLI)

Nota: se si verificano errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Quando esegui una chiamata API SendCommand nell'interfaccia della linea di comando AWS, puoi specificare le opzioni di output aggiungendo i seguenti parametri:

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

Nota: negli esempi di parametri precedenti, DOC-EXAMPLE-BUCKET è il nome del bucket S3 nell'account di destinazione. DOC-EXAMPLE-BUCKET-PREFIX indica la sottocartella all'interno del bucket S3 in cui desideri memorizzare la risposta. Il parametro output-s3-key-prefix non è richiesto per inviare l'output del comando a un bucket S3. Per ulteriori informazioni, consulta send-command.

Il seguente esempio di interfaccia della linea di comando AWS avvia un comando che utilizza il documento AWS-RunPowerShellScript per eseguire echo helloWorld in modalità remota nelle istanze gestite contrassegnate come Key=tag:Env,Values=Dev,Test. L'output del comando viene inviato al bucket S3 denominato DOC-EXAMPLE-BUCKET nell'account di destinazione e archiviato in una sottocartella denominata con il prefisso 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"

Informazioni correlate

Create an IAM instance profile for Systems Manager

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa