传递访问和密钥

我试图嵌入访问和秘密密钥以及法律。例如。

aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>

还尝试分别使用-o 和-w 选项进行访问和加密密钥。上面写着: 未知选项 aws-access-key 和 aws-secret-key

102603 次浏览

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

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

另外,作为替代方法,您可以创建 IAM 角色和某些策略,并将其设置为 ec2实例,您将在其中使用 awscli,这样就不需要在其中设置任何凭据

这是使用 IAM 角色的最佳方式和更安全的方法。在那里,您可以设置此实例的特定权限,以及它在您的帐户中可以访问的内容。

根据您使用的 awscli 版本,您可以通过几种方式使用描述实例。

比如这个:

ec2din -O your-key -W your-secret-key --region your-region

当你使用 pip 安装或者像 ubuntu deb 包一样从 pkg 安装 awscli 时,也会有很大的不同。

Ec2din 是 < strong > ec2-description-instance 的简短命令

这里有更多的例子: Ec2-描述-实例

问候。

您可以通过 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 历史记录。

您还可以使用 awsconfigure:

$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx

总结 Aws Doc,有几种方法可以将凭据传递到命令行。请注意,没有命令行选项可以直接传递密钥和机密密钥。而是使用“提供者链”。

在 bash 脚本中,我经常使用环境变量。为了增加一点点安全性,我提供了一个包含变量的文件,而不是将它们放在脚本中。有了命名档案,就更简单了。

供应商链是:

  1. 命令行选项: 指定区域、输出格式或 侧写
  2. 环境变量: AWS _ ACCESS _ KEY _ ID、 AWS _ Secret T _ ACCESS _ KEY 和 AWS _ SESSION _ TOKEN
  3. AWS 凭据文件-位于 Linux 上的 ~/. AWS/凭据, 上的用户 USERNAME. aws 凭证 此文件还可以包含多个命名配置文件 到默认配置文件。
  4. CLI 配置文件-通常位于 Linux、 macOS 或 Unix,或者在 C: UserUSERNAME. awsconfig 上 此文件可以包含默认配置文件、命名配置文件、, 和 CLI 特定的配置参数。
  5. 容器凭证-由亚马逊弹性容器服务提供 在为任务分配角色时,对容器实例进行。
  6. 实例配置文件凭据——这些凭据可以在 EC2上使用 实例,并通过 Amazon EC2元数据服务。

您可以使用以下方法设置凭据:

aws configure set aws_access_key_id <yourAccessKey>
aws configure set aws_secret_access_key <yourSecretKey>

核实你的证件:

aws sts get-caller-identity

关于 set 命令的更多信息:

aws configure set help

一般情况是:

aws <command> help
aws <command> <subcommand> help

注意: 在覆盖您的凭证之前,您可能需要保留一份副本:

aws configure get aws_access_key_id
aws configure get aws_secret_access_key

enter image description here

通过 CLI 访问法律,

aws configure

我不得不进入亚马逊的多个账户,我的解决方案是:

~/.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

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

/usr/local/bin/aws ec2 describe-security-groups --group-ids sg-xxxx --profile prof2

另一种方法是使用带 aws 配置的 echo作为一行程序:

echo -ne '%s\n%s\n%s\n%s\n' <access_key> <security_key> <region> <output> | aws configure

我认为以前的答案是正确的,这里是我的回应,这更像 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 文档

使用访问键,不建议使用 id,因为它将存储在配置文件中。更好的方法是创建一个 IAM 角色并提供所需的访问权限。