传递访问权限和密钥aws cli

use*_*927 29 aws-cli

我试图嵌入访问和密钥以及aws cli.例如

aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>
Run Code Online (Sandbox Code Playgroud)

还分别尝试使用-o和-w选项进行访问和密钥.它说:未知选项aws-access-key和aws-secret-key

Dan*_*anH 58

您可以通过envars在命令行上提供密钥:

AWS_ACCESS_KEY_ID=ABCD AWS_SECRET_ACCESS_KEY=EF1234 aws ec2 describe-instances
Run Code Online (Sandbox Code Playgroud)

请参见http://docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials

编辑:@wisbucky注意到这可能会在你的命令历史中留下秘密.至少我认为在bash中解决这个问题的一种方法是在命令前加上一个空格,命令不应该传播到你的bash历史记录中.

  • 请小心谨慎,将您的密钥记录在命令历史记录中. (12认同)
  • 如果已配置,则前面加上空格只会将其从 BASH 历史记录中忽略。并非所有 BASH 环境都配置为忽略历史记录中以空格开头的命令。 (3认同)

cos*_*rix 14

我必须访问亚马逊上的多个帐户。我的解决方案:

在下面~/.aws/config

[default] 
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
Run Code Online (Sandbox Code Playgroud)

...然后当调用 AWS CLI 时,我--profile按如下方式传递参数:

/usr/local/bin/aws ec2 describe-security-groups --group-ids sg-xxxx --profile prof2
Run Code Online (Sandbox Code Playgroud)

  • 这对我有帮助,但我必须将我的凭据和区域存储在一个名为“credentials”的文件中,而不是“config.json”。 (2认同)

ulu*_*eyn 7

您可以像这样使用它;

aws configure set aws_access_key_id <yourAccessKey>
aws configure set aws_secret_access_key <yourSecretKey>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请使用此。

aws configure set help
Run Code Online (Sandbox Code Playgroud)

一般模式是;

aws <command> help
aws <command> <subcommand> help
Run Code Online (Sandbox Code Playgroud)

希望对您有所帮助!


gre*_*pit 7

我认为以前的答案是正确的,这是我的回复,它更像是 Danh 的回复,但也包括多个选项和 Windows

Linux/Mac

export AWS_ACCESS_KEY_ID=your_key; export AWS_SECRET_ACCESS_KEY=your_secret;  aws s3 ls 
Run Code Online (Sandbox Code Playgroud)

为 Linux/Mac 剥猫皮的另一种方法

AWS_ACCESS_KEY_ID=your_key AWS_SECRET_ACCESS_KEY=your_secret aws s3 ls 
Run Code Online (Sandbox Code Playgroud)

Windows PowerShell

$Env:AWS_ACCESS_KEY_ID="your_key"
$Env:AWS_SECRET_ACCESS_KEY="your_secret"
aws s3 ls  
Run Code Online (Sandbox Code Playgroud)

完全归功于出色的AWS 文档


Max*_*ind 6

您还可以使用 aws 配置:

$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)


LHW*_*ard 5

总结aws doc,有几种方法可以将凭据传递给命令行。请注意,没有命令行选项可以直接传递密钥和秘密密钥。而是使用“供应商链”。

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

提供者链为:

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


Evg*_*min -1

您应该将凭证存储到 ~/.aws/config 文件(或 .aws/credentials)

更多信息如何设置http://docs.aws.amazon.com/cli/latest/reference/configure/index.html

另外,作为替代方法,您可以创建 IAM 角色和某些策略并将其设置为您将使用 aws cli 的 ec2 实例,然后您将不需要在那里设置任何凭据