我正在尝试设置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
而" 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]:
就像我没有选择" - 区域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:
谢谢。 继续&#34; aws configure set&#34; 在我已经设置了与s3的连接的另一个EC2实例上,我输入
aws configure set region us-east-1
运行并返回命令提示符&#34;&gt;&#34;
aws configure set aws_access_key_id my-20-digit-id
运行并返回命令提示符&#34;&gt;&#34;
aws configure set aws_secret_access_key my-40-digit-secret-key
运行并返回命令提示符&#34;&gt;&#34;
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文件在列表中。
答案 0 :(得分:5)
我终于明白了。使用
等导出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”。
谢谢大家。
答案 1 :(得分:3)
这些命令对我有用。如果这对您不起作用。首次尝试使用互动模式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"
答案 2 :(得分:1)
您很好地描述了该文件。为什么不创建一个文件并将其放在正确的位置?我刚试过......它与运行aws configure
更新:您提到要从EC2实例访问S3。在这种情况下,您根本不应该使用凭据。您应该使用角色而不是