2017-07-31 110 views
1

由于某些企业的限制,我只能通过命令行访问AWS,而且我无法设置环境变量。我想知道是否有什么办法在我的钥匙通过使用命令在这样的方式:通过AWS CLI传递访问密钥和密钥

aws s3 cp <file> s3://testbucket --aws-access-key <accesskey> --aws-secret-key <secretkey>

我注意到,this question是相当类似,但它似乎答案是要么不适用我的情况或引用了ec2din命令,我无法将其转换为将文件复制到s3。我只是得到了答复Unknown options: --aws-access-key,--aws-secret-key

+0

为什么可以使用CLI而不是SDK?它们基本上都做同样的事情(使HTTPS调用到AWS端点)。 – jarmod

回答

1

试试这个:

AWS_ACCESS_KEY_ID=AAAA AWS_SECRET_ACCESS_KEY=BBB aws s3 cp <file> s3://testbucket 

这将设置键仅此命令。如果您需要会话密钥,请将它们导出,如下所示:

export AWS_ACCESS_KEY_ID=AAAA ; export AWS_SECRET_ACCESS_KEY=BBB ; aws s3 cp <file> s3://testbucket 
+0

@DanMandel如果你想让命令在bash历史中不可用,只需在它之前添加一个空格即可。 – gargsms

+0

我收到错误'java.io.IOException:无法运行程序“AWS_ACCESS_KEY_ID = ”:error = 2,没有这样的文件或目录'和'java.io.IOException:无法运行程序“导出”:错误= 2,没有这样的文件或目录。我认为这是因为我通过scala程序运行这些命令,这就是为什么我无法通过导出设置环境变量。 –

+0

然后,您要运行的“程序”是另一个解释命令的shell:'/ bin/bash -c'AWS_ACCESS_KEY_ID = AAAA AWS_SECRET_ACCESS_KEY = BBB aws s3 cp s3:// testbucket''请注意' ''引号,他们是需要的。 –

2

您是否允许将AK/SK保存到文件中? (非常像SSH私钥将保存在〜/ .ssh/id_rsa中)例如:

如果是这样,您可以运行命令aws configure,它会提示输入AK和SK(加上默认区域和默认输出格式)。凭证将被保存到〜/ .aws /凭证,并且区域和输出(如果您选择指定它们)将被保存到〜/ .aws/config。

如果您是而不是允许将您的凭证写入文件,请注意命令通过命令传递凭证,例如 - 这些凭证可能会进入“命令历史记录”文件!在某些shell中,可以进行配置,以便在命令前添加空格可防止将其写入历史记录文件。

相关问题