[英]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.