当使用AWS CLI时,是否有一种方法可以指定它使用凭据文件,而不是存储在env变量中的值?
$aws ec2描述-实例-配置文件SAML
SAML
是存储在~/.aws/credentials中的凭据文件中的配置文件名。我希望AWS CLI默认使用此凭据文件,而不使用存储在env变量中的凭据文件。我怎么能这么做?
不幸的是,您不能为凭据文件指定优先于环境变量的优先级。
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-gett-started.html#cli-environment
环境变量覆盖配置文件和凭据文件,对于编写脚本或临时将命名配置文件设置为默认值非常有用。
我用下面的(非常基本的)bash脚本对此进行了测试。我有一个名为$region的环境变量。考虑下面名为“script.sh”的shell脚本。
#!/bin/bash
export REGION=""
echo "REGION = "$REGION
在调用脚本之前,我用'echo$region'来证明它确实存在:
ubuntu@ip-172-31-24-61:~$ echo $REGION
us-east-1
ubuntu@ip-172-31-24-61:~$ ./script.sh
REGION =
脚本结束后,我从命令行中“echo$region”,环境变量就完全正常了。
ubuntu@ip-172-31-24-61:~$ echo $REGION
us-east-1
如果您将此应用于您的用例,则可以编写一个包装脚本,将环境变量清空(只需导出aws_access_key_id=“”),并将所有命令行选项传递给AWS CLI。当CLI执行时,它将看不到环境变量,因为它们在其执行范围内已被清空。
我不知道如何做的一件事是让bash脚本接受所有未知数量的命令行参数,并将它们全部传递给另一个命令。我不认为这是困难的,我只是不知道怎么做。
但是,我敢肯定,如果你创造另一个问题,有人可以帮助!
另一种方法是,如果您永远不会使用环境变量,只需删除它们。
编辑2我已经找到了如何制作一个非常简单的包装器脚本来解决你的问题。在实现此功能之前,我强烈建议您查看以下链接,以更好地了解此功能的工作方式以及实现此功能的其他方法。例如,您可以使用$@或$*来执行此操作,而那可能是更普遍接受的方法。
#!/bin/bash
params=""
export AWS_ACCESS_KEY_ID=""
export AWS_SECRET_ACCESS_KEY=""
for arg; do
params="$params $arg"
done
aws $params
http://tldp.org/ldp/abs/html/wrapper.html
Bash:将命令行参数转换为数组
https://linuxconfig.org/bash-script-how-to-check-number-of-supply-command-line-arguments
检查传递给Bash脚本的参数数
我在php项目中有一个Dockerfile,我需要在执行过程中传递用户和密码以下载库。 用户和密码必须在生产或本地 .env 文件中隐藏。目前我只是尝试本地选项,用户和密码为空。 我使用过和,但不仅登录失败,而且当我打印变量时,它们是空的。我也试过将变量硬编码,它工作正常,所以问题是变量没有从. env文件中检索。 docker compose开始如下 还有 Dockerfile: .env 的开
我必须在nifi进程中使用aws临时凭证AccessKey、SecretKey和令牌来访问S3对象。AccessKey、SecretKey和Token将由Api调用提供。如何在nifi ListS3对象等中使用这些临时凭证? 我发现的选项之一是使用AWSCre的alsProviderControlllerService,因为这可以根据API调用更新控制器服务的值吗? 在这个场景中我还可以使用其他选
问题内容: 我正在使用Docker和Docker-compose构建一堆nginx + php。 我试图在我的文件中设置时区,并在Dockerfile中使用它,但是我可能会误解文档中的内容。 .env docker-compose.yml php7-fpm / Dockerfile 容器内部的时区设置不正确(在php容器bash中运行)。如果我在Dockerfile中手动编写区域,那么它将起作用。
我的文件夹根目录上有一个。env文件。这是我的。环境 我试图访问application.yml上的PORT变量,但它没有从。env文件中读取变量。这是我的申请。yml
我有一个现有的属性文件,如下所示 系统中有两个操作将获取并设置值。 其思想是,当I调用为true时,该值必须反映在application.properties文件中。 有可能实现我想要的吗?或者我需要一个额外的配置文件吗?
问题内容: 我想创建一个Laravel Web应用程序,允许管理员用户使用Web后端系统更改.env文件中的某些变量(例如数据库凭据)。但是,如何保存更改? 问题答案: 没有内置的方法可以做到这一点。如果您确实想更改文件的内容,则必须结合使用PHP的文件写入方法和某些字符串替换。为了获得一些启发,您应该看一下命令:KeyGenerateCommand.php: 构建文件路径并检查是否存在后,该命令