Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS配置Bash一行程序_Bash_Amazon Web Services_Docker - Fatal编程技术网

AWS配置Bash一行程序

AWS配置Bash一行程序,bash,amazon-web-services,docker,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]:

有人能告诉我如何用一行程序在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入口点内实现自动化

如果要实现自动化,应该使用文件而不是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 = 

如果运行aws configure set help(aws配置集帮助),您将看到可以在命令行上单独提供设置,这些设置将写入相关凭据或配置文件。例如:

aws配置设置aws访问密钥id AKIAI44QH8DHBEXAMPLE

您还可以以交互方式运行此操作以修改默认凭据:

aws配置

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

aws配置——配置文件qa


注意:使用上述第一种技术,您键入的任何命令都会出现在历史记录中,这对密码、密钥等都不是一件好事。因此,在这种情况下,请使用不会导致将secret参数记录到历史记录中的替代方法,或者。

对于倾向于使用bash的用户,下面的代码工作得很好,可以为脚本保密。此外,它还将一次性将您的输入保存到命名的配置文件中

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

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

我发现这有点令人困惑,因为我对使用Docker和awscli还不熟悉。
此外,我相信大多数最终回答这个问题的人都试图将Docker和
awscli
结合起来使用

所以你想一步一步地做的是:

创建包含
[默认值]
aws\u访问\u密钥\u id=默认访问\u密钥
aws_secret_access_key=默认_secret_key

使用Dockerfile中的一行,如
复制凭证/root/.aws/credentials

以及包含
[默认值]
地区=美国西部2
输出=表格

使用Dockerfile中的一行,如
复制config/root/.aws/config

参考资料:
aws配置设置帮助

一行程序
aws配置集aws\u访问密钥\u id“akai44qh8dhbexample”--配置文件用户2和aws配置集--配置文件用户2和aws\u密钥访问密钥“je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY”--配置文件用户2和aws配置集区域“us-east-1”--配置文件用户2和aws配置集输出“text”--配置文件用户2
注意:设置区域是可选的(如果没有任何区域,请不要使用空字符串设置它,否则会出现问题);以及用户配置文件,如果您不设置它将进入默认设置


我认为这是一句话的答案

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

如果此docker映像超出了您的控制范围(即对客户等),请不要在其中预配置AWS凭据。如果docker映像将在EC2实例或ECS上运行,则改用IAM角色。这将是一个多用途映像。凭据不是映像的一部分,但将为容器实例提供。容器是否在EC2上运行?容器将在EC2内外的主机上运行。请查看此处:。基本上,您可以创建IAM EC2角色,运行分配了该角色的EC2实例,然后在实例中使用AWS CLI,而不必配置AWS凭据。实例将从角色获取凭据。我强烈建议不要将访问密钥嵌入脚本中,这是非常糟糕的做法。以Thomas L.answer为例,在一个配置文件中配置密钥,然后与docker容器共享。Instedi也提到了这一点,因为Mayberg愿意自动化docker容器部署,因此他很可能最终使用脚本嵌入他的真实访问/秘密密钥。这是一种配置,不应混入代码中(例如,不在github上提交等)。谢谢你的提示,我正在查看aws配置--帮助