web-dev-qa-db-fra.com

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

J'essaie de configurer une instance Amazon AWS EC2 pour parler à 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 avoir la commande

aws configure

automatiquement sans interaction, c'est-à-dire sans invite et attendre la saisie

Je sais qu'il y a des fichiers sur

~.aws/credentials
~.aws/config

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

[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 à ~/.aws /, j'entre dans ~/.aws /, et sur la ligne de commande, je tape et entre la commande

aws configure

J'ai toujours eu l'invite de 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 tourné l'aide vers les pages de documentation d'Amazon aws. Sur cette page, il mentionne cette option

"Options de ligne de commande - la région, le format de sortie et le profil peuvent être spécifiés comme 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 n'a pas mentionné comment utiliser les options de ligne de commande. J'ai essayé quelque chose comme ça

aws configure --region us-east-1

mais j'ai encore

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

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

Si j'essaye de

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

J'ai compris

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

Comment puis-je exécuter la commande

aws configure

automatiquement, aucune invite, aucune interaction.

Aidez-moi! TIA

Modifier et répondre à helloV, car le format dans le post principal est beaucoup plus clair que le commentaire. J'ai essayé la commande helloV mentionnée, mais j'ai eu 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. Continuez sur "aws configure set" Sur une autre instance EC2 où j'ai déjà défini la connexion sur s3, j'entre

aws configure set region us-east-1

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

aws configure set aws_access_key_id my-20-digit-id

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

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

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

aws configure

s'exécute mais est livré avec des invites et attend l'interaction

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

bonjourV: voici mon écran ressemble

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 compris

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

Après cela, je cours

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 figure dans la liste.

11
Tony Xu

J'ai finalement compris. Utilisez l'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://

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

Merci à tous.

9
Tony Xu

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 souhaitez accéder à S3 à partir de l'instance EC2. Dans ce cas, vous ne devriez pas du tout utiliser les informations d'identification. Vous devez utiliser Rôles à la place

2
Felix

Ces commandes ont fonctionné pour moi. Si cela ne fonctionne 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"

1
palhares