#s3 #aws #internals #utility #sync #list #esthri

esthri-internals

esthri crate内部的通用功能

19 个稳定版本 (3 个主要版本)

12.0.0 2024年1月3日
11.2.0 2023年12月5日
11.1.1 2023年10月12日
10.0.8 2023年9月19日
9.0.0 2022年11月23日

#internals类别中排名6

Download history 6/week @ 2024-05-05 10/week @ 2024-05-12 29/week @ 2024-05-19 13/week @ 2024-05-26 8/week @ 2024-06-02 5/week @ 2024-06-09 2/week @ 2024-06-16 9/week @ 2024-07-28 22/week @ 2024-08-04 122/week @ 2024-08-11

每月下载量153
2个crate中使用(通过esthri

使用MIT许可证

8KB

Esthri (S3)

Build Status

一个极其简单(内存稳定)的S3客户端,支持获取、上传、头部信息、列出和同步操作。

esthri 6.3.0
Simple S3 file transfer utility.

USAGE:
    esthri <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    abort           Manually abort a multipart upload
    etag            Compute and print the S3 ETag of the file
    get             Download an object from S3
    head-object     Retreive the ETag for a remote object
    help            Prints this message or the help of the given subcommand(s)
    list-objects    List remote objects in S3
    put             Upload an object to S3
    serve           Launch an HTTP server attached to the specified bucket
    sync            Sync a directory with S3

AWS S3 兼容层

esthri CLI 工具还提供了一个 AWS CLI 兼容模式,其中它可以以与 aws s3 工具相同的 CLI 界面处理 cpsync 操作。目前,这些命令仅实现了基本案例,并且只处理了一些可选参数。

要使用,esthri 二进制文件必须被

  • 命名为或硬链接为 aws
  • 使用设置 ESTHRI_AWS_COMPAT_MODE 环境变量的方式运行

在此模式下,esthri 将尝试在遇到无法处理的命令时透明地调用实际的 aws 工具。为此,应将实际 aws 工具的路径放入名为 ESTHRI_AWS_PATH 的环境变量中。例如:ETHRI_AWS_PATH=/usr/bin/aws。如果没有指定此环境变量,esthri 将默认调用 aws.real 作为 aws 工具。

$ ln -s /usr/local/bin/aws /usr/local/bin/aws.real
$ ESTHRI_AWS_COMPAT_MODE=1 esthri s3 help # prints the S3 help text, as generated by the aws command

透明同步压缩

esthri 可以透明地压缩文件,使其在S3中压缩,但在本地文件系统中不压缩。要启用此功能,请设置 ESTHRI_AWS_COMPAT_MODE_COMPRESSION 环境变量或使用 --transparent-compression CLI 选项。例如

ESTHRI_AWS_COMPAT_MODE=1 esthri s3 sync mydirectory/ s3://esthri-test/myfiles/ --transparent-compression # syncs as normal, however files in S3 are gzipped
ESTHRI_AWS_COMPAT_MODE=1 esthri s3 sync s3://esthri-test/myfiles/ mynewdirectory/ --transparent-compression # syncs and decompresses files as they are synced down. mydirectory and mynewdirectory will now contain the same files

esthri 利用 S3 元数据来执行此透明压缩,将压缩文件的 esthri 版本号存储在已压缩文件的元数据中。因此,解压缩只能针对 esthri 自身压缩的文件。

AWS 凭据提供者选择

强烈建议设置特定的凭据提供者,以提供更好的安全性和更细粒度的控制。例如

CREDENTIAL_PROVIDER=profile esthri s3 sync s3://esthri-test/myfiles/ mynewdirectory/

ESTHRI_CREDENTIAL_PROVIDER=env ---> 从环境变量中获取 ESTHRI_CREDENTIAL_PROVIDER=profile ---> 从默认凭证文件中获取 ESTHRI_CREDENTIAL_PROVIDER=container ---> 从ECS任务中的IAM角色获取 ESTHRI_CREDENTIAL_PROVIDER=instance_metadata ---> 从实例元数据服务获取 ESTHRI_CREDENTIAL_PROVIDER=k8s ---> 从Kubernetes身份验证服务获取 ESTHRI_CREDENTIAL_PROVIDER ---> 如果为空,则显式使用默认凭证提供者

如果没有设置,程序将回退到默认凭证提供者,按照上述顺序遍历这些提供者,直到找到第一个有效的值。

发布

cargo-release 用于通过 release.toml 文件来自动化 esthri 的发布配置。

要执行发布,运行 cargo release <release-level> -x.

Copyright (C) 2021 Swift Navigation Inc.
Contact: Swift Navigation <[email protected]>

This source is subject to the license found in the file 'LICENSE' which must be
be distributed together with this source. All other rights reserved.

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

依赖项

~4–17MB
~238K SLoC