AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso configurare il mio ruolo dell'attività IAM in Amazon ECS in modo da evitare errori "Access Denied" quando effettuo chiamate API?
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:
-
Apri il file /etc/ecs/ecs.config.
-
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 -
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 -
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 ecsAMI 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
- Argomenti
- Containers
- Lingua
- Italiano
