Salta al contenuto

Come posso configurare il mio ruolo dell'attività IAM in Amazon ECS in modo da evitare errori "Access Denied" quando effettuo chiamate API?

4 minuti di lettura
0

Desidero configurare il mio ruolo dell'attività AWS Identity and Access Management (AWS IAM) in Amazon Elastic Container Service (Amazon ECS) in modo da non ricevere errori "Access Denied" quando effettuo chiamate API.

Breve descrizione

Per evitare l'errore Access Denied, includi il ruolo IAM nella definizione dell'attività in Amazon ECS.

Devi attivare il ruolo IAM nel file di configurazione dell'agente del container ECS. Inoltre, assicurati che il ruolo IAM abbia tutte le autorizzazioni richieste in modo che l'attività possa utilizzare il ruolo per effettuare le chiamate API.

Nota: se un'attività non riesce a trovare il ruolo dell'attività IAM per problemi di configurazione, utilizza il ruolo dell'istanza Amazon Elastic Compute Cloud (Amazon EC2).

Risoluzione

Verifica che l'agente del container ECS sia in esecuzione

Esegui il comando docker ps:

docker ps

Nota: se riavvii l'istanza, le regole per iptables vengono riportate ai valori predefiniti. Per evitare il ripristino, salva le regole eseguendo uno di questi comandi.

Amazon Machine Image (AMI) Amazon Linux ottimizzata per Amazon ECS:

sudo service iptables save

AMI Amazon Linux 2 ottimizzata per Amazon ECS:

sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables

Attiva il ruolo IAM nel file di configurazione dell'agente del container ECS

Completa i seguenti passaggi:

  1. Apri il file /etc/ecs/ecs.config.

  2. Per attivare il ruolo IAM per le attività nei container con modalità di rete bridge e default, imposta ECS_ENABLE_TASK_IAM_ROLE su true:

    ECS_ENABLE_TASK_IAM_ROLE=true
  3. Per attivare il ruolo IAM per le attività nei container con modalità di rete host, imposta ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST su true:

    ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true
  4. Per aggiornare il file di configurazione, riavvia l'agente del container ECS eseguendo uno di questi comandi:
    AMI Amazon Linux ottimizzata per Amazon ECS:

    sudo stop ecs
    sudo start ecs

    AMI Amazon Linux 2 ottimizzata per Amazon ECS:

    sudo systemctl restart ecs

Aggiorna la policy di attendibilità del ruolo IAM

Per assegnare il ruolo IAM alle attività Amazon ECS, aggiorna la policy di attendibilità del ruolo IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Aggiorna le impostazioni HTTP_PROXY per l'agente del container ECS

Se utilizzi HTTP_PROXY nella configurazione dell'agente del container Amazon ECS, applica la seguente impostazione NO_PROXY:

NO_PROXY=169.254.169.254,169.254.170.2,/var/run/docker.sock

Utilizza la versione più recente di AWS SDK

L'applicazione eseguita nel container deve utilizzare una versione 2016 o successiva di AWS SDK. Per aggiornare AWS, consulta Ciclo di vita delle versioni di AWS SDK e strumenti e Toolbox.

Configura le regole iptables per un'AMI non ottimizzata per Amazon ECS

Se utilizzi un'AMI non ottimizzata per Amazon ECS, imposta le regole richieste per iptables.

Rendi la variabile di ambiente disponibile per i processi non PID 1

La variabile di ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI è disponibile solo per i processi PID 1 all'interno di un container. Se il container esegue più processi o processi di inizializzazione, la variabile di ambiente non è disponibile per i processi non PID 1.

Per impostare la variabile di ambiente in modo che sia disponibile per i processi non PID 1, esportala nel file .profile. Ad esempio, esegui questo comando per esportare la variabile di ambiente nel Dockerfile per l'immagine del container:

RUN echo 'export $(strings /proc/1/environ | grep AWS_CONTAINER_CREDENTIALS_RELATIVE_URI)' >> /root/.profile

Nota: quando esporti la variabile di ambiente, esiste una dipendenza dalle stringhe e dai comandi grep.

Informazioni correlate

Configurazione aggiuntiva dell'istanza Amazon EC2 Windows

AWS UFFICIALEAggiornata 2 anni fa