簡體   English   中英

如何在沒有提示的情況下在沒有交互的情況下自動在 Amazon AWS EC2 上運行 aws configure?

[英]How to run aws configure on Amazon AWS EC2 automatically without interaction without prompt?

我正在嘗試設置 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 個鍵 = 值對放在哪里。 “憑證”文件看起來像

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

而“配置”文件看起來像

[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

我轉向幫助亞馬遜 aws 文檔頁面。 在這個頁面上,它提到了這個選項

“命令行選項 – 區域、output 格式和配置文件可以指定為命令選項以覆蓋默認設置。”

作為 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 文件在列表中。

我終於明白了。 使用導出如

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”。

謝謝你們。

你很好地描述了這個文件。 為什么不創建一個文件並將其放在正確的位置? 我剛試過......它和運行aws configure完全一樣

更新 :您提到您要從EC2實例訪問S3。 在這種情況下,您根本不應該使用憑據。 您應該使用角色代替

這些命令對我有用。 如果這不適合你。 嘗試第一次使用交互模式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"

解決方案是您實際上不必運行 aws configure。 在您第一次運行它並建立憑據 (~/.aws/credentials) 和配置 (~/,aws/config) 之后。 展望未來,您只需運行所需的 aws 命令。 我用 cron 作業對此進行了測試,並執行了“aws s3 ls”命令,它無需在它之前提供配置命令即可工作。

按照這個命令

$aws configure set aws_access_key_id default_access_key
$ aws configure set aws_secret_access_key default_secret_key
$ aws configure set default.region us-west-2

或者

aws configure set aws_access_key_id <key_id> && aws configure set aws_secret_access_key <key> && aws configure set default.region us-east-1

有關詳細信息,請使用此鏈接https://awscli.amazonaws.com/v2/documentation/api/latest/reference/configure/set.html

我使用這樣的東西:

aws configure --profile my-profile-name <<-EOF > /dev/null 2>&1
${AWS_ACCESS_KEY_ID}
${AWS_SECRET_ACCESS_KEY}
${AWS_REGION}
text
EOF

還要在自動化過程后進行清理,而不是刪除 `~/.aws/ 目錄(因為其他一些憑證可能存儲在那里)我運行:

aws configure --profile my-profile-name <<-EOF > /dev/null 2>&1
null
null
null
text
EOF

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM