web-dev-qa-db-ja.com

プロンプトなしで対話せずにAmazon AWS EC2でaws configureを自動的に実行する方法は?

Amazon AWS EC2インスタンスをs3と通信するようにセットアップしようとしています。基本的なコマンドは

aws configure

次に、プロンプトに従って入力します

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

しかし、私が本当に望んでいるのは、コマンドを持つことです

aws configure

対話なしで自動的に、つまりプロンプトなしで入力を待機

にファイルがあることを知っています

~.aws/credentials
~.aws/config

ここで、4つのkey = valueペアを配置します。 「クレデンシャル」ファイルは次のようになります

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

「config」ファイルは次のようになります

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

ただし、これらのファイルを〜/ .aws /に置いて、〜/ .aws /に移動し、コマンドラインでコマンドを入力してコマンドを入力します。

aws configure

私はまだ私に尋ねるプロンプトを得ました

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

プロンプトで有効な値を入力しないと、たとえばコマンドを使用してs3に接続できません

aws s3 ls s3://mybucket

ヘルプをAmazon awsのドキュメントページに向けました。このページでは、このオプションについて言及しています

「コマンドラインオプション-地域、出力形式、プロファイルをコマンドオプションとして指定して、デフォルト設定を上書きできます。」

aws configureの最初のオプションとして

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

ただし、コマンドラインオプションの使用方法については触れられていません。私はこのようなものを試しました

aws configure --region us-east-1

しかし、私はまだ持っています

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

「--region us-east-1」のオプションがないのとまったく同じです

私がしようとすると

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

私はこれを手に入れます

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

コマンドを実行する方法

aws configure

自動的、プロンプトなし、対話なし。

助けてください! TIA

メインの投稿の形式はコメントよりも明確であるため、helloVを編集して応答します。上記のコマンドhelloVを試しましたが、エラーが発生しました

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:

ありがとう。 「aws configure set」に進みます。接続をすでにs3に設定している別のEC2インスタンスで、次のように入力します。

aws configure set region us-east-1

実行してコマンドプロンプト ">"に戻る

aws configure set aws_access_key_id my-20-digit-id

実行してコマンドプロンプト ">"に戻る

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

実行してコマンドプロンプト ">"に戻る

aws configure

実行されますが、プロンプトが表示され、操作を待機します

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

helloV:画面は次のようになります

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://

私はこれを得た

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

この後、走る

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

〜/ .aws/credentialsファイルをチェックしないようですが、〜/ .aws/configファイルがリストにあります。

11
Tony Xu

ようやくわかりました。次のようなエクスポートを使用します

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

次に実行します

aws s3 ls s3://

うまくいくでしょう。他の人が述べたように「aws configure」を実行しないでください。

皆さん、ありがとうございました。

9
Tony Xu

あなたはファイルを非常によく説明します。ファイルを作成して適切な場所に配置しないのはなぜですか?試したところ... aws configureを実行するのとまったく同じです

[〜#〜] update [〜#〜]:EC2インスタンスからS3にアクセスしたいということです。この場合、資格情報をまったく使用しないでください。代わりにRolesを使用する必要があります

2
Felix

これらのコマンドは私のために働いた。これでうまくいかない場合。インタラクションモード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