【发布时间】:2022-01-14 04:53:55
【问题描述】:
我正在尝试将访问和密钥与 aws cli 一起嵌入。例如
aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>
还分别尝试使用 -o 和 -w 选项来获取访问权限和密钥。它说:未知选项 aws-access-key 和 aws-secret-key
【问题讨论】:
标签: aws-cli
我正在尝试将访问和密钥与 aws cli 一起嵌入。例如
aws ec2 describe-instances --aws-access-key <access_key> --aws-secret-key <secret_key>
还分别尝试使用 -o 和 -w 选项来获取访问权限和密钥。它说:未知选项 aws-access-key 和 aws-secret-key
【问题讨论】:
标签: aws-cli
您可以通过 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 历史记录中。
【讨论】:
您可以使用以下方式设置凭据:
aws configure set aws_access_key_id <yourAccessKey>
aws configure set aws_secret_access_key <yourSecretKey>
验证您的凭据:
aws sts get-caller-identity
有关设置命令的更多信息:
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
【讨论】:
An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied。有什么想法吗?
总结aws doc,有几种方法可以将凭据传递到命令行。请注意,没有命令行选项可以直接传递密钥和密钥。而是使用“供应商链”。
在我的 bash 脚本中,我经常使用环境变量。为了增加一点安全性,我获取了一个包含变量的文件,而不是将它们放在脚本中。使用命名配置文件,它会更容易。
提供者链是:
【讨论】:
我认为之前的答案是正确的,这是我的回复,更像是 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
【讨论】:
您也可以使用 aws configure:
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx
【讨论】:
我必须访问亚马逊上的多个帐户。我的解决方案:
~/.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
【讨论】:
这是使用 IAM 角色的最佳方式且更安全。您可以在此处设置此实例的特定权限以及它必须在您的帐户中访问的内容。
根据您使用的 awscli 版本,您可以通过多种方式使用 describe-instances。
喜欢这个:
ec2din -O your-key -W your-secret-key --region your-region
当您使用 pip install 或从 pkg(如 ubuntu deb 包)安装 awscli 时,也有很大的不同。
ec2din 是 ec2-describe-instances
的简短命令问候。
【讨论】:
另一种方法是将 echo 与 aws configure 一起使用:
echo -ne '%s\n%s\n%s\n%s\n' <access_key> <security_key> <region> <output> | aws configure
【讨论】:
您应该将您的凭据存储到 ~/.aws/config 文件(或 .aws/credentials)
更多信息如何设置它http://docs.aws.amazon.com/cli/latest/reference/configure/index.html
另外,您可以创建 IAM 角色和某些策略并将其设置为您将使用 aws cli 的 ec2 实例,然后您不需要在那里设置任何凭证
【讨论】:
不建议使用访问密钥和 id,因为它会存储在配置文件中。更好的方法是创建一个 IAM 角色并提供所需的访问权限。
【讨论】: