传递访问权限和密钥aws cli

时间:2015-04-28 00:04:30

标签: aws-cli

我正在尝试将访问和密钥与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

11 个答案:

答案 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脚本中,我经常使用环境变量。为了增加一点安全性,我提供了一个包含变量的文件,而不是将其放在脚本中。使用命名的配置文件,甚至更容易。

提供商链为:

  1. 命令行选项:指定区域,输出格式或配置文件
  2. 环境变量:AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY和AWS_SESSION_TOKEN
  3. AWS凭证文件–在Linux上的〜/ .aws / credentials中, macOS,Unix或C:\ Users \ USERNAME .aws \ credentials 视窗。该文件还可以包含多个命名的配置文件 到默认配置文件。
  4. CLI配置文件–通常位于以下位置的〜/ .aws / config中 Linux,macOS或Unix,或位于C:\ Users \ USERNAME .aws \ config 视窗。该文件可以包含一个默认配置文件,名为配置文件, 以及每个CLI的特定于配置的参数。
  5. 容器凭证–由Amazon Elastic Container Service提供 容器实例上,当您为任务分配角色时。
  6. 实例配置文件凭据–这些凭据可以在EC2上使用 具有指定实例角色的实例,并通过 Amazon EC2元数据服务。

答案 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

Linux / Mac

export AWS_ACCESS_KEY_ID=your_key; export AWS_SECRET_ACCESS_KEY=your_secret;  aws s3 ls 

为Linux / Mac换猫的另一种方法

AWS_ACCESS_KEY_ID=your_key AWS_SECRET_ACCESS_KEY=your_secret aws s3 ls 

Windows Powershell

$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)

enter image description here

要通过cli访问aws,

aws configure

答案 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角色并提供所需的所需访问权限。