6 个版本
0.3.1 | 2022 年 7 月 8 日 |
---|---|
0.3.0 | 2022 年 7 月 8 日 |
0.2.1 | 2022 年 6 月 30 日 |
0.2.0 | 2021 年 4 月 9 日 |
0.1.1 | 2019 年 11 月 14 日 |
#715 in 网络编程
18,376 每月下载量
用于 rops
99KB
1.5K SLoC
Crate aws-arn
提供类型、构建器和其它辅助工具来操作 AWS 资源名称 (ARN) 字符串。
ARN 是所有 AWS 服务 API 的关键组件,但几乎所有客户端工具包都将其简单地视为字符串。虽然这可能是一个合理且快捷的决定,但似乎有必要不仅确保 ARN 的正确性,而且还需要构造器来确保这些字符串一开始就是正确的。
ARN 类型
本库提供了多个层次的 ARN 操作,首先是通过使用核心 ResourceName
、Identifier
、AccountIdentifier
和 ResourceIdentifier
类型直接构建 ARN 类型。
use aws_arn::{ResourceName, ResourceIdentifier};
use aws_arn::known::{Partition, Service};
use std::str::FromStr;
let arn = ResourceName {
partition: Some(Partition::default().into()),
service: Service::S3.into(),
region: None,
account_id: None,
resource: ResourceIdentifier::from_str("mythings/thing-1").unwrap()
};
在上面的例子中,由于我们正在定义一个最小的 ResourceName,我们可以使用定义的构造函数之一。
use aws_arn::{ResourceName, ResourceIdentifier};
use aws_arn::known::Service;
use std::str::FromStr;
let arn = ResourceName::aws(
Service::S3.into(),
ResourceIdentifier::from_str("mythings/thing-1").unwrap()
);
或者,使用 FromStr
,你可以将现有的 ARN 字符串解析为 ARN 值。
use aws_arn::ResourceName;
use std::str::FromStr;
let arn: ResourceName = "arn:aws:s3:::mythings/thing-1"
.parse()
.expect("didn't look like an ResourceName");
另一种方法是使用更易读的 构建器,它还允许你忽略 ARN 中你通常不需要的字段,并使用更流畅的 ARN 构造风格。
45Muse aws_arn::builder::{ArnBuilder, ResourceBuilder};
use aws_arn::known::{Partition, Service};
use aws_arn::{ResourceName, Identifier};
use std::str::FromStr;
let arn: ResourceName = ArnBuilder::service_id(Service::S3.into())
.resource(ResourceBuilder::named(Identifier::from_str("mythings").unwrap())
.resource_name(Identifier::new_unchecked("my-layer"))
.build_resource_path())
.in_partition_id(Partition::Aws.into())
.into();
最后,可以使用特定于资源类型的函数,这允许更直接和简单的构造(模块 aws_arn::builder::service - 服务构建器函数,尽管目前支持的服务较少)。
use aws_arn::builder::s3;
use aws_arn::Identifier;
use std::str::FromStr;
let arn = s3::object(
Identifier::from_str("mythings").unwrap(),
Identifier::from_str("thing-1").unwrap(),
);
更多信息,请参阅 AWS 关于 资源名称 (ARN) 的文档。
可选功能
本库尽可能保持精简,具有极少的依赖项,我们已将以下功能作为可选功能包含在内。
builders
添加构建器模块。此功能默认启用,还需要known
功能。known
添加了一个包含分区、区域和服务枚举的模块。此功能默认启用。serde_support
为ARN
和Resource
类型添加了派生Serialize
和Deserialize
实现。此功能默认启用。
变更
版本 0.3.1
- 为
AccountIdentifier
添加了单元测试。
版本 0.3.0
- 重大变更:将
ARN
重命名为ResourceName
。 - 重大变更:将
ArnError
重命名为Error
。 - 添加了通用标识符操作的接口。
- 为
ResourceIdentifier
和ResourceName
添加了变量扩展。 - 添加了更多的单元测试。
版本 0.2.1
- 为 12 位值创建了一个新的
AccountIdentifier
类型。 consts
功能重命名为known
。
版本 0.2.0
- 放宽了标识符和资源标识符的验证。
- 移除了增加了大量验证困惑的
Resource
类型。 - 使用新的
Identifier
和ResourceIdentifier
类型来构建正确的ARN
值,无需任何外部验证方法。 - 将
ResourceBuilder
替换为用于ResourceIdentifier
值的一个。 - 移除了
ext_validation
功能 - 添加了
consts
功能 - 将
builder
模块放入新的builders
功能。 - 添加了许多更多测试,包括一个
examples.txt
文件,它是一个要解析的长列表。 - 修复了 Github 问题-2。
版本 0.1.1
- 添加和修复了文档,包括 README 和 Rustdoc。
- 重命名服务构建函数,为 s3 添加了父/子模式。
- 添加了 Serde 功能。
- 使外部验证可选。
版本 0.1.0
- 初始提交。
- 提供具有
Display
和FromStr
的基本 ARN 类型。 - 为特定服务的验证提供脚手架。
- 为 ARN 构建提供初始的一组服务构建函数,
make_{format}
。
待办事项
- 更多测试!
- 更多验证服务格式。
- 更多服务构建函数。
依赖项
~2–3.5MB
~57K SLoC