AWS配置Bash One Liner

时间:2016-01-17 14:29:05

标签: bash amazon-web-services docker

有人可以告诉我如何使用单行程序自动化bash中的aws配置吗?

示例:

$ aws configure --profile user2
AWS Access Key ID [None]: AKIAI44QH8DHBEXAMPLE
AWS Secret Access Key [None]: je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: text

应用程序:我想在Docker入口点中自动执行此操作!

7 个答案:

答案 0 :(得分:25)

如果您运行aws configure set help,您将看到可以在命令行上单独提供设置,它们将被写入相关凭据或配置文件。例如:

aws configure set aws_access_key_id AKIAI44QH8DHBEXAMPLE

您也可以交互式运行此修改默认凭据:

aws configure

或者以交互方式运行它以创建/修改命名的配置文件:

aws configure --profile qa

答案 1 :(得分:5)

如果要自动化,则应使用文件而不是CLI。您的CLI仅写入这些文件。

➜ cat ~/.aws/config
[profile_1]
output = json
region = eu-west-1
[profile_2]
output = json
region = eu-west-1

➜ cat ~/.aws/credentials
[profile_1]
aws_access_key_id =
aws_secret_access_key =
[profile_2]
aws_access_key_id =
aws_secret_access_key = 

答案 2 :(得分:4)

对于那些倾向于使用bash的人来说,以下方法效果很好并且可以保护你的脚本不受保密。此外,它还可以一次性将您的输入保存到命名的配置文件。

printf "%s\n%s\nus-east-1\njson" "$KEY_ID" "$SECRET_KEY" | aws configure --profile my-profile

答案 3 :(得分:1)

一个班轮

function myname() {
        let uni = "missing variable";
        let name = "ABFFD";
        let str = "ベトナムの首都であるハノイです";
        console.log("私は" + name + "です." + uni + "の学生です.");
    }

注意:设置区域是可选的(如果没有区域,也不要用空字符串设置,否则会出错);以及用户配置文件,如果您不设置它,它将进入默认设置。

? 更好地练习 Secrets

使用机密,然后使用关联的环境变量:

aws configure set aws_access_key_id "AKIAI44QH8DHBEXAMPLE" --profile user2 && aws configure set --profile user2 && aws_secret_access_key "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY" --profile user2 && aws configure set region "us-east-1" --profile user2 && aws configure set output "text" --profile user2

? 了解更多

  • 运行 aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID" --profile user2 && aws configure set --profile user2 && aws_secret_access_key "$AWS_ACCESS_KEY_SECRET" --profile user2 && aws configure set region "$AWS_REGION" --profile user2 && aws configure set output "text" --profile user2 以获取命令行选项。
  • Documentation for aws configure set
  • 秘密的文档:DockerKubernetesGitLab

答案 4 :(得分:0)

根据Tom在jarmod的回答中提出的建议,“在配置文件中配置密钥,然后用docker容器共享”。

我发现稍微有些混乱,因为我刚开始使用Docker和awscli 另外,我相信大多数最终都会遇到这个问题的人也会同样尝试使用Docker和awscli

所以你想要做的是,一步一步:

创建一个包含
credentials文件 [default] aws_access_key_id = default_access_key aws_secret_access_key = default_secret_key
您使用Dockerfile中的一行复制到~/.aws/credentials,如
COPY credentials /root/.aws/credentials

和包含
config文件 [default] region = us-west-2 output = table
您使用Dockerfile中的一行复制到~/.aws/config,如
COPY config /root/.aws/config

参考:
aws configure set help

答案 5 :(得分:0)

我认为这是一行的答案

aws configure set aws_access_key_id $YOUR_ACCESS_KEY_ID; aws configure set aws_secret_access_key $YOUR_SECRET_ACCESS_KEY; aws configure set default.region $YOUR_AWS_DEFAULT_REGION

答案 6 :(得分:0)

一个班轮

aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID" --profile profile_name_here && aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY" --profile profile_name_here && aws configure set region "$AWS_REGION" --profile profile_name_here && aws configure set output "json" --profile profile_name_here

设置个人配置

profile_name_here 是要保存到 aws 配置的 aws 配置文件名称。将其替换为您自己的。

访问密钥

aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID" --profile profile_name_here

秘密访问密钥

aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY" --profile profile_name_here

地区

aws configure set region "$AWS_REGION" --profile profile_name_here

输出

aws configure set output "json" --profile profile_name_here

此处指定的值为 json,但您可以从 aws docs 的支持输出格式列表中替换它。

  • json
  • yaml
  • yaml-stream
  • 文字

注意:

<块引用>

$AWS_ACCESS_KEY_ID$AWS_SECRET_ACCESS_KEY$AWS_REGION 是您的 AWS 凭证 文件或 中的变量>环境变量(如果您使用的是 CI)。您也可以使用常规字符串值替换它们,但这并不安全。