38 votes

Comment exécuter aws configure sur Amazon AWS EC2 automatiquement sans interaction sans invite ?

J'essaie de configurer une instance EC2 d'Amazon AWS pour communiquer avec s3. La commande de base est

aws configure

puis suivez l'invite pour entrer

AWS Access Key ID [None]: my-20-digit-id
AWS Secret Access Key [None]: my-40-digit-secret-key
Default region name [None]: us-east-1
Default output format [None]: text

Cependant, ce que je veux vraiment, c'est que la commande

aws configure

automatiquement sans interaction, c'est-à-dire sans invite ni attente de saisie

Je sais qu'il y a des fichiers à

~.aws/credentials
~.aws/config

où je mets ces 4 paires clé=valeur. Et le fichier "credentials" ressemble à ceci

[default]
aws_secret_access_key = my-40-digit-secret-key
aws_access_key_id = my-20-digit-id

tandis que le fichier "config" ressemble à

[default]
region = us-east-1
output = text

Cependant, avec ces fichiers dans ~/.aws/, j'entre dans ~/.aws/, et à la ligne de commande, je tape et entre la commande

aws configure

J'ai toujours le prompt à me demander

AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

Si je n'entre pas de valeurs valides à l'invite, je ne pourrai pas me connecter à s3, par exemple via la commande

aws s3 ls s3://mybucket

J'ai demandé de l'aide aux pages de documentation d'Amazon Aws. Sur cette page, il est fait mention de cette option

"Options de ligne de commande - la région, le format de sortie et le profil peuvent être spécifiés en tant qu'options de commande pour remplacer les paramètres par défaut."

comme première option pour aws configure

https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

Cependant, il ne mentionne pas comment utiliser les options de la ligne de commande. J'ai essayé quelque chose comme ceci

aws configure --region us-east-1

mais j'ai quand même

AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:

exactement comme je n'ai pas d'option de "--region us-east-1"

Si j'essaie de

aws configure --aws_access_key_id my-20-digit-id --aws_secret_access_key my-40-digit-secret-key --region us-east-1

Je reçois ceci

usage: aws [options] <command> <subcommand> [parameters]
aws: error: argument subcommand: Invalid choice, valid choices are:

Comment je peux exécuter la commande

aws configure

automatiquement, sans invite, sans interaction.

Aidez-nous ! TIA

Édition et réponse à helloV, car le format du message principal est beaucoup plus clair que celui du commentaire. J'ai essayé la commande mentionnée par helloV, mais j'ai obtenu une erreur

aws configure set aws_access_key_id my-20-digit-id
usage: aws [options] <command> <subcommand> [parameters]
aws: error: argument subcommand: Invalid choice, valid choices are:

Merci quand même. Continuer sur "aws configure set" Sur une autre instance EC2 où j'ai déjà établi la connexion avec s3, j'entre

aws configure set region us-east-1

exécute et retourne à l'invite de commande ">"

aws configure set aws_access_key_id my-20-digit-id

exécute et retourne à l'invite de commande ">"

aws configure set aws_secret_access_key my-40-digit-secret-key

exécute et retourne à l'invite de commande ">"

aws configure

fonctionne mais est accompagné d'invites et attend une interaction

AWS Access Key ID [****************ABCD]:
AWS Secret Access Key [****************1234]:
Default region name [us-east-1]:
Default output format [text]:

helloV : voici à quoi ressemble mon écran

ubuntu@ip-11111:~/.aws$ more config
[default]
region = us-east-1
output = text
ubuntu@ip-11111:~/.aws$ more credentials
[default]
aws_secret_access_key = my-40-digit-secret-key
aws_access_key_id = my-20-digit-id
ubuntu@ip-11111:~/.aws$ aws s3 ls s3://

J'ai obtenu ceci

Unable to locate credentials. You can configure credentials by running "aws configure".

Après cela, je lance

aws configure list
  Name                    Value             Type    Location
  ----                    -----             ----    --------
profile                <not set>             None    None
access_key                <not set>             None    None
secret_key                <not set>             None    None
region                us-east-1      config_file    ~/.aws/config

Il semble qu'il ne vérifie pas le fichier ~/.aws/credentials, mais le fichier ~/.aws/config est dans la liste.

27voto

user1704340 Points 21

Ces commandes ont fonctionné pour moi. Si ça ne marche pas pour vous. Essayez de faire la première fois en utilisant le mode d'interaction aws configure

aws --profile default configure set aws_access_key_id "my-20-digit-id"

aws --profile default configure set aws_secret_access_key "my-40-digit-secret-key"

23voto

Tony Xu Points 469

J'ai compris, enfin. Utilisez une exportation telle que

export AWS_ACCESS_KEY_ID=my-20-digit-id
export AWS_SECRET_ACCESS_KEY=my-40-digit-secret-key
export AWS_DEFAULT_REGION=us-east-1

puis exécutez

aws s3 ls s3://

fonctionnerait. N'exécutez pas "aws configure" comme d'autres l'ont mentionné.

Merci à tous.

6voto

Felix Points 910

Vous décrivez très bien le dossier. Pourquoi ne pas simplement créer un fichier et le placer au bon endroit ? Je viens d'essayer... c'est exactement la même chose que d'exécuter aws configure

UPDATE : Vous mentionnez que vous voulez accéder à S3 depuis une instance EC2. Dans ce cas, vous ne devriez pas utiliser d'informations d'identification du tout. Vous devriez utiliser Rôles au lieu de

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X