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.