1

我正在尝试使用带有 S3 后端的 Tensorflow,使用本地 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

没有其他选择。我应该如何配置这个?

4

1 回答 1

1

如果您仍在与之抗争,这可能很有用,但我仍然更喜欢在 AWS CLI 端配置它的方法。我还没有找到这种方法,所以......

这是一个 bash hack,如果.bashrc(or .bash_profile) 是有源的,它就可以工作,这通常是这种情况。如果这没有意义,快速搜索类似的东西bash_profile and bashrc shell initialization应该会给你一些更好的信息,我可以给你。

无论如何,我确信有很多更好的方法可以做到这一点,但这里的想法是调用一个与常规awsCLI 命令不同名称的类似函数。如果您正在调用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

而且,如果您不喜欢或无法使用您创建的一些随机新功能,您总是可以使用类似的 hack,这似乎更加贫民窟。目标是总结常规awsCLI 命令。这样做的方法与您在上面阅读的第一个函数几乎相同。唯一的区别是您为函数命名aws而不是您想出的某个名称,并且您从函数内部引用了真正的 awsCLI。

# ~/.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来管理我的 Python。你的可能在不同的地方,但你总是可以通过运行类似的东西找到它which aws,然后在你的.bashrc.bash_profile

我不认为后一种方法会咬你,但黑客可能会产生奇怪的副作用,我当然不是 bash、AWS CLI、pip 或任何其他相关部分的专家,但它对我有用.. .

我希望它有所帮助。

于 2019-04-08T22:25:21.283 回答