2017-07-31 109 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中,可以進行配置,以便在命令前添加空格可防止將其寫入歷史記錄文件。

相關問題