我正在尝试使用Tensorflow和S3后端,使用本地S3服务器(运行minio)。它似乎使用awscli驱动程序进行s3通信,所以我仔细看了一下aws命令行界面。现在,我可以执行所需的配置(在cacerts和.aws / config和.aws / credentials中)以这种方式运行aws
aws --endpoint-url https://my-minio-server:9000 s3 ls
我希望aws默认问这个服务器,这样我就可以做到
aws s3 ls
没有其他选择。我该如何配置?
如果您还在与它斗争,这可能会有用,但我仍然更喜欢在AWS CLI端配置此方法。我还没有找到那种方法......
这是一个bash hack,如果.bashrc
(或.bash_profile
)的来源有效,通常就是这种情况。如果这没有意义,快速搜索像bash_profile and bashrc shell initialization
这样的东西应该会给你一些更好的信息,我可以给你。
无论如何,我确信有很多方法可以做到这一点,但这里的想法是只使用与常规aws
CLI命令不同的名称调用类似的函数。如果您正在调用s3
命令,则新函数会添加端点URL。
# ~/.bashrc
# can be called using same args as AWS CLI
awsep () {
# show help message if no params are passed
if [ "$1" == "s3" ]; then
aws --endpoint-url="<your url>" "${@:-help}"
else
aws "${@:-help}"
fi
}
现在你可以调用它,确定你已经找到了你添加函数的文件;例如
$ . ~/.bashrc && awsep s3 ls
如果你不喜欢或者不能使用你创建的一些随机的新功能,你总是可以使用类似的黑客,这似乎更加贫民窟。目标是包装常规的aws
CLI命令。这样做的方式几乎与您在上面阅读的第一个功能完全相同。唯一的区别是你命名你的函数aws
而不是你想出的某个名字,你从函数内部引用了真正的aws
CLI。
# ~/.bashrc
# can be called using same args as AWS CLI
aws () {
# show help message if no params are passed
if [ "$1" == "s3" ]; then
/path/to/your/real/aws-cli --endpoint-url="<your url>" "${@:-help}"
else
/path/to/your/real/aws-cli "${@:-help}"
fi
}
我的aws-cli
碰巧像/Users/me/.pyenv/shims/aws
,因为我用pip安装了AWS CLI,并使用pyenv
来管理我的Pythons。你可能在不同的地方,但你可以通过运行像which aws
之类的东西找到它,然后在你的.bashrc
或.bash_profile
中创建该功能
我不认为后一种方法会咬你,但黑客可能会产生奇怪的副作用,我当然不是bash,AWS CLI,pip或任何其他零件和部件的专家,但它对我有用.. 。
我希望它有所帮助。