如何管理多个aws key
Description
Aws cli 配置文件的根目录一般有两个文件,一个是config
, 一个是 credentials
。分别是config配置文件,和凭证配置文件。
以macos为例,(window , linux 参考 https://docs.amazonaws.cn/cli/latest/userguide/cli-configure-profiles.html)
Example
如果我们需要管理多个key,可以按照相同的profilename添加到profile
和 credentials
文件中,config
文件中每一项需要添加 profile
前缀
我们可以在使用命令的过程中通过 --profile profile-name
来决定使用哪个key.如果我们想使用哪个key, 如果我们想使用usconfig
来上传文件,在aws命令后面跟上key的名字就可以 。
脚本
如果我们很多 aws的命令是封装好的,没办法在每条命令后面添加 --profile
, 我们可以采用脚本把当前要使用的设置成默认的即可。
#!/usr/bin/env zx
$.verbose = false;
console.log('which profile you want set as default? ')
const profileList = (await $`aws configure list-profiles`).stdout.trim()
console.log(profileList);
const key = await question(chalk.green('Please input: '))
const aws_access_key_id = (await $`aws configure get aws_access_key_id --profile ${key}`).stdout.trim()
const aws_secret_access_key = (await $`aws configure get aws_secret_access_key --profile ${key}`).stdout.trim()
const region = (await $`aws configure get region --profile ${key}`).stdout.trim()
const output = (await $`aws configure get output --profile ${key}`).stdout.trim()
$`aws configure set aws_access_key_id ${aws_access_key_id} --profile default`
$`aws configure set aws_secret_access_key ${aws_secret_access_key} --profile default`
$`aws configure set region ${region} --profile default`
$`aws configure set output ${output} --profile default`
脚本是使用google-zx
写的, 另存为一个 mjs
文件,假如 awsconf.mjs
// 如果没有zx , 我们要先全局安装一下
npm i zx -g
zx awsconf.mjs
系统会列出你所有profile, 并提示输入, 输入完回车 即可完成切换。