我正在尝试将访问和密钥与aws cli一起嵌入。 e.g。
aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>
还分别尝试使用-o和-w选项进行访问和密钥。它说:未知选项aws-access-key和aws-secret-key
答案 0 :(得分:39)
您可以通过envars在命令行上提供密钥:
AWS_ACCESS_KEY_ID=ABCD AWS_SECRET_ACCESS_KEY=EF1234 aws ec2 describe-instances
请参阅http://docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials
编辑:@wisbucky注意到这可能会在你的命令历史中留下秘密。在bash中解决这个问题的一种方法至少我认为是在命令前加上一个空格,命令不应该传播到你的bash历史记录。答案 1 :(得分:4)
总结aws doc,有几种方法可以将凭据传递给命令行。请注意,没有命令行选项可以直接传递密钥和秘密密钥。而是使用“供应商链”。
在我的bash脚本中,我经常使用环境变量。为了增加一点安全性,我提供了一个包含变量的文件,而不是将其放在脚本中。使用命名的配置文件,甚至更容易。
提供商链为:
答案 2 :(得分:4)
您可以像这样使用它;
aws configure set aws_access_key_id <yourAccessKey>
aws configure set aws_secret_access_key <yourSecretKey>
有关更多信息,请使用此内容;
aws configure set help
一般模式是;
aws <command> help
aws <command> <subcommand> help
希望对您有帮助!
答案 3 :(得分:3)
我认为以前的答案是正确的,这是我的回答,更像Danh的回答,但也包括多个选项和Windows
export AWS_ACCESS_KEY_ID=your_key; export AWS_SECRET_ACCESS_KEY=your_secret; aws s3 ls
AWS_ACCESS_KEY_ID=your_key AWS_SECRET_ACCESS_KEY=your_secret aws s3 ls
$Env:AWS_ACCESS_KEY_ID="your_key"
$Env:AWS_SECRET_ACCESS_KEY="your_secret"
aws s3 ls
高度赞赏AWS document
答案 4 :(得分:2)
使用IAM角色是最好的方式,也更安全。在那里,您可以设置此实例的特定权限以及您在帐户中必须访问的内容。
根据您使用的awscli版本,您可以通过几种方式使用describe-instances。
喜欢这个:
ec2din -O your-key -W your-secret-key --region your-region
使用pip install或者像pbu这样的ubuntu deb软件包安装awscli时也会有很大的不同。
ec2din 是对 ec2-describe-instances
的简短命令此处有更多示例:ec2-describe-instances
问候。
答案 5 :(得分:1)
您应该将凭据存储到〜/ .aws / config文件(或.aws / credentials)
更多信息如何设置http://docs.aws.amazon.com/cli/latest/reference/configure/index.html
另外,作为替代方法,您可以创建IAM角色和某些策略并将其设置为您将使用aws cli的ec2实例,那么您将不需要任何凭据设置
答案 6 :(得分:1)
您也可以使用aws configure:
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
答案 7 :(得分:0)
答案 8 :(得分:0)
我必须访问Amazon上的多个帐户。...所以我的解决方案:
位于:〜/ .aws / config
[默认] aws_access_key_id = xxxx aws_secret_access_key = xxxxxx region = sa-east-1 output = text
[profile prof1] region = us-east-1 output = text aws_access_key_id = yyy aws_secret_access_key = yyyyy
[profile prof2] region = us-east-1 output = text aws_access_key_id = wwwwww aws_secret_access_key = wwwww
..然后调用aws CLI时,我将参数“ --profile”传递为:
/ usr / local / bin / aws ec2 describe-security-groups --group-ids sg-xxxx --profile prof2
...就是这样!
答案 9 :(得分:0)
另一种方法是将echo
与aws配置为单线使用:
echo -ne '%s\n%s\n%s\n%s\n' <access_key> <security_key> <region> <output> | aws configure
答案 10 :(得分:0)
使用访问密钥,建议不要使用id,因为它将存储在配置文件中。更好的方法是创建一个IAM角色并提供所需的所需访问权限。