

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# ARN 格式
<a name="qs-arn-format"></a>

ARN 用冒号分隔，由*段*，它们是用冒号分隔的部分（`:`)。ARN 区段中使用的特定组件和值取决于哪个AWSARN 用于的服务。以下示例演示了ARN 是如何构造的。

```
arn:{{partition}}:{{service}}:{{region}}:{{account-id}}:{{resource-id}}
arn:partition:{{service}}:{{region}}:{{account-id}}:{{resource-type}}/{{resource-id}}
arn:partition:{{service}}:{{region}}:{{account-id}}:{{resource-type}}:{{resource-id}}
```

这些 ARN 包含以下区段：

**{{`partition`}}**— 资源所处的分区。对于标准。AWS 区域，分区是{{aws}}. 如果资源位于其他分区，则分区是{{aws-分区名称}}. 例如，中国（北京）区域中的资源的分区为 `aws-cn`。

**{{`service`}}**— 标识AWS产品。。。。例如，`quicksight`识别亚马逊 QuickSight、`s3`标识Amazon S3。`iam`标识 IAM。

**{{`region`}}**— 该AWS 区域资源所在的。一些资源的 ARN 不需要使用AWS 区域，因此，在某些情况下，该组成部分可能会被省略。亚马逊 QuickSight ARN 需要一个AWS 区域.

**{{`account-id`}}**— 的 ID。AWS 账户拥有资源的第一个版本。当您在 ARN 或 API 操作中使用账号时，可以省略连字符（例如 123456789012）。一些资源的 ARN 不需要账号，因此，该组成部分可能会被省略。亚马逊 QuickSight ARN 需要一个AWS 账户数字。。。。但是，账号和AWS 区域在 S3 存储桶 ARN 中省略，如下所示。

```
arn:aws:s3:::{{bucket_name}}
arn:aws:s3:::{{bucket_name/key_name}}
```

**{{`resource`}}要么{{`resource-type`}}**— ARN 这部分的内容因服务而异。资源标识符可以是资源的名称或 ID（例如，`user/Bob`要么`instance/i-1234567890abcdef0`) 或资源路径。。例如，一些资源标识符包括父资源 (`{{sub-resource-type}}/{{parent-resource}}/{{sub-resource}}`) 或限定符，例如版本 ({{资源类型。}}：{{资源名称。}}：{{预选赛}})。

有些资源 ARN 可以包含路径、变量或通配符。

你可以使用通配符 (`*`和`?`) 在任何 ARN 区段中。星号 (`*`) 表示 0 个或多个字符的任意组合，问号 (`?`) 表示任何单个字符。您可在每个分段中使用多个 \* 或 ? 字符，但通配符不能跨分段。如果您使用 ARN 获取权限，请避免使用`*`如果可能，则使用通配符来限制对必需元素的访问。下面是使用路径、通配符和变量的一些示例。

在以下示例中，我们将使用 S3 ARN。在 IAMPolicy 中向 S3 授予权限时，可能会使用此功能。此 S3 ARN 显示路径和文件已指定。

**注意**  
术语。*键名称。*用来描述路径和文件之后的样子`bucketname/`. 这些名称之所以称为键名，是因为存储桶实际上并不包含计算机文件系统中使用的文件夹结构。相反，斜杠 (`/`) 是一个分隔符，有助于使存储桶的组织更加直观。在这种情况下，存储桶名为`examplebucket`，键名称，键名称为。`developers/design_info.doc`.

```
arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export-2019-q4.json}}
```

如果要标识存储桶中的所有对象，可以使用通配符指示 ARN 中包含所有键名称（或路径和文件），如下所示。

```
arn:aws:s3:::{{examplebucket}}/{{*}}
```

您可以使用键名的一部分加上通配符来标识以特定模式开头的所有对象。在这种情况下，它类似于文件夹名称加上通配符，如下所示。但是，此 ARN 还包括内部的任何 “子文件夹”`my-data`.

```
arn:aws:s3:::{{examplebucket}}/{{my-data/*}}
```

您可以通过添加通配符来指定部分名称。这个标识任何以开头的对象`my-data/sales-export*`.

```
arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export*}}
```

在这种情况下，使用此通配符指定包含名称如下所示的对象：
+ `my-data/sales-export-1.xlsx`
+ `my-data/sales-export-new.txt`
+ `my-data/sales-export-2019/file1.txt`

您可以组合使用两种类型的通配符（星号和问号），也可以单独使用，如下所示。

```
arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export-2019-q?.*}}

arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export-20??-q?.*}}
```

或者，如果您想让 ARN 面向未来，可以用通配符替换整个年份，而不仅仅是最后两位数字使用通配符。

```
arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export-????-q?.*}}
arn:aws:s3:::{{examplebucket}}/{{my-data/sales-export-*-q?.*}}
```

要了解有关 S3 ARN 的更多信息，请参阅[在策略中指定资源](https://docs.aws.amazon.com//AmazonS3/latest/dev/s3-arn-format.html)和[对象键和元数据](https://docs.aws.amazon.com//AmazonS3/latest/dev/UsingMetadata.html)中的*Amazon Simple Storage 服务用户指南*