

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

# AWS IoT 设备管理软件 Package 目录疑难解答
<a name="software-package-catalog-troubleshooting"></a>

这是 AWS IoT 设备管理软件 Package 目录的疑难解答部分。

## 一般错误消息疑难解答
<a name="spc-general-troubleshooting"></a>

本节列出了在整个程序包版本生命周期中出现的常见错误。

**`HeadBucket` 错误**

在任务部署期间调用 [`HeadBucket` API 操作](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)或 [`head-bucket` CLI 命令](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html)来验证用于文件上传的 Amazon S3 存储桶时，会出现以下错误消息。

有关在任务部署期间使用 Amazon S3 存储桶上传文件的更多信息，请参阅 [用于文件上传的预签名 URL](create-manage-jobs.md#create-manage-jobs-presigned-URLs-upload)。

```
InvalidRoleException
    "Permission denied when attempting to use role %s to access bucket %s."
```

```
InvalidRequestException
    "Cross region S3 bucket is not supported for presigned url upload placeholder"
```

```
InvalidRequestException
    "S3 bucket in job document presigned url upload placeholder not found"
```

```
InvalidRequestException
    "Given S3 bucket name is invalid."
```

```
InvalidRequestException
    "Provided S3 bucket is not valid: %s. Error: %s"
```

**Amazon S3 GetObject**

如果提供的参数无效，从而导致 Amazon S3 `GetObject` API 操作失败，则会出现以下错误消息。

```
InvalidRequestException
    "Provided argument for presigned url is invalid"
```

**Amazon S3 版本 ID 支持**

请求访问使用版本控制的 Amazon S3 存储桶时，请确保包含您的 `versionId`，否则可能会出现以下错误。

有关使用版本控制的 Amazon S3 存储桶的更多信息，请参阅[在 Amazon S3 存储桶中使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。

```
InvalidRequestException
    "VersionId not found when attempting to access s3 url"
```

**用于文件上传的预签名 URL 中的占位符**

在任务部署期间，如果在用于将文件上传到目标 Amazon S3 存储桶的预签名 URL 中遇到占位符问题，则会出现以下错误消息。有关在任务部署期间使用 Amazon S3 存储桶上传文件以及什么是本地占位符的更多信息，请参阅 [用于文件上传的预签名 URL](create-manage-jobs.md#create-manage-jobs-presigned-URLs-upload)。

当无法识别本地占位符时，会出现以下错误消息。

```
InvalidJobDocumentException
    "Undefined placeholder, ${...}, inside of presign url upload parameter"
```

尝试在不适用于文件上传的预签名 URL 中使用本地占位符时，会出现以下错误消息。

```
InvalidJobDocumentException
    "Local placeholder, ${...}, is only valid inside of presign url upload"
```

**Amazon S3 URL 嵌套不正确**

当 Amazon S3 URL 错误地嵌套在另一个占位符中时，会出现以下错误消息。

```
InvalidJobDocumentException
    "${aws:%s[...]} should not be the second layer pattern."
```

**程序包版本构件嵌套**

当程序包版本构件预签名 URL 错误地嵌套在另一个占位符中时，会出现以下错误消息。

```
InvalidJobDocumentException
    "${aws:iot:package:[...]:artifact:s3-presigned-url} cannot be nested inside another placeholder."
```

**缺少程序包版本构件**

如果找不到引用的程序包版本构件，则会出现以下错误消息。

```
InvalidJobDocumentException
    "Package %s version %s does not have an associated artifact to generate an S3 presigned url."
```

**软件包和程序包版本占位符**

如果由于 `destinationPackageVersions` 参数或*程序包版本*详细信息页面上的*版本 ARN* 选项卡中引用了多个软件包和程序包版本，软件包和程序包版本的任务文档占位符无法解析为任务部署所需的有效值，则会出现以下错误消息。

```
InvalidJobDocumentException
    "Cannot resolve empty package name and version name given multiple elements in destination package versions."
```

**使用空的软件包和程序包版本**

当您尝试在任务文档中使用空软件包或程序包版本而不使用其他版本时，会出现以下错误消息。

```
InvalidJobDocumentException
    "Empty package name and version name have to be used in pair."
```

**任务文档中使用 Null**

当您尝试在任务文档中指定 `$null` 为程序包版本时，会出现以下错误消息。使用 `CreateJob` API 操作时，`$null` 只能在 `destinationPackageVersions` 参数内部使用。

```
InvalidJobDocumentException
    "$null is not allowed to be referenced as a package version in job documents."
```

**程序包版本中的所有属性**

当您尝试使用程序包版本中的所有属性并在其周围添加其他文本或占位符时，会出现以下错误消息。

有关在程序包版本中使用所有属性的更多信息，请参阅 [AWS IoT 任务的替代参数](preparing-jobs-for-service-package-catalog.md#substitution-parameters)

```
InvalidJobDocumentException
    "The package version attribute placeholder for all attributes has to be a json value by itself and not appended with other strings or nested with other placeholders."
```

**用于文件上传的预签名 URL 中的本地占位符限制**

当您超出任务部署期间用于文件上传的预签名 URL 中可使用的本地占位符数量限制时，会出现以下错误消息。

有关在作业部署期间使用预签名 URL 上传文件的更多信息，请参阅[用于文件上传的预签名 URL](create-manage-jobs.md#create-manage-jobs-presigned-URLs-upload)

```
InvalidJobDocumentException
    "The occurrence of local placeholder %s within S3 presigned url upload placeholder exceeds limit of %d."
```

**Amazon S3 存储桶中的本地占位符**

对于任务部署期间用于文件上传的预签名 URL 占位符，如果您尝试在 Amazon S3 存储桶名称中放置本地占位符 URL，则会出现以下错误消息。

有关在作业部署期间使用预签名 URL 上传文件的更多信息，请参阅[用于文件上传的预签名 URL](create-manage-jobs.md#create-manage-jobs-presigned-URLs-upload)

```
InvalidJobDocumentException
    "S3 bucket name in presigned url upload is not allowed to contain any placeholders"
```

**左括号和右括号**

当您在任务文档中添加不带右大括号“\$1”的参数或占位符时，会出现以下错误消息。

```
InvalidJobDocumentException
    "One or more parameters or placeholders are not terminated."
```

**IAM 角色和 Amazon S3 预签名 URL**

当您尝试在没有 IAM 角色的情况下在任务文档中使用 Amazon S3 预签名 URL 时，会出现以下错误消息。

有关 Amazon S3 预签名的更多信息 URLs，请参阅[使用预 URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)签名。

```
InvalidRequestException
    "presignedUrlConfig role ARN is required to generate an S3 presigned url in job document."
```

**IAM 角色和用于程序包版本构件的 Amazon S3 预签名 URL**

当您尝试在没有 IAM 角色的情况下在任务文档中使用代表程序包版本构件的 Amazon S3 预签名 URL 时，会出现以下错误消息。

```
InvalidRequestException
    "presignedUrlConfig role ARN is required to generate an S3 presigned url in job document for package %s version %s artifact."
```

## 软件物料清单错误消息
<a name="spc-sbom-validation-troubleshooting"></a>

本节列出了与程序包版本关联的软件物料清单（SBOM）相关的常见错误。

**SBOM 关联请求的输入验证**

使用 `AssociateSbomWithPackageVersion` API 操作且 `s3Location` 参数为 null 时，会出现以下错误消息。

```
InvalidRequestException "Associate request needs to include SBOM reference"
```

有关 `AssociateSbomWithPackageVersion` API 操作的更多信息，请参阅[AssociateSbomWithPackageVersion](https://amazonaws.com/iot/latest/apireference/API_AssociateSbomWithPackageVersion.html)。

**SBOM 验证错误**

本节列出了初次验证与程序包版本关联的软件物料清单（SBOM）时的常见错误。

使用 `AssociateSbomWithPackageVersion` API 操作且 `s3Location` 参数中的 `bucket` 为 null 时，会出现以下错误消息。

```
InvalidRequestException "S3 bucket name for SBOM cannot be null"
```

如果 `AssociateSbomWithPackageVersion` API 操作的 `s3Location` 参数的 `bucket` 中的字符串过长，则会出现以下错误消息。

```
InvalidRequestException "S3 bucket name for SBOM is illegal. String length exceeds limit"
```

当 `key` 参数为 null 时，会出现以下错误消息。

```
InvalidRequestException "S3 key name for SBOM cannot be null"
```

如果 `AssociateSbomWithPackageVersion` API 操作的 `s3Location` 参数的 `key` 中的字符串过长，则会出现以下错误消息。

```
InvalidRequestException "S3 key name for SBOM is illegal. String length exceeds limit"
```

如果 `AssociateSbomWithPackageVersion` API 操作的 `s3Location` 参数的 `version` 中的字符串为 null，会出现以下错误消息。

```
InvalidRequestException "S3 object version for SBOM cannot be null"
```

如果 `AssociateSbomWithPackageVersion` API 操作的 `s3Location` 参数的 `version` 中的字符串过长，则会出现以下错误消息。

```
InvalidRequestException "S3 object version for SBOM is illegal. String length exceeds limit"
```

当存储在 Amazon S3 存储桶中的 SBOM zip 存档文件的大小过大时，会出现以下错误消息。

```
InvalidRequestException "S3 object file size exceeds limit"
```

当您使用 `AssociateSbomWithPackageVersion` API 操作并且当前正在进行的 SBOM 验证数量已达到最大限制时，会出现以下错误消息。

```
LimitExceededException "Too many ongoing SBOM validation workflows. Please wait and retry"
```

**Amazon S3 存储桶中 SBOM 文件的访问问题**

如果由于 Amazon S3 存储桶不存在或未授予访问 Amazon S3 存储桶的适当权限而导致其他实体无法访问 Amazon S3 存储桶，则会出现以下错误消息。

有关访问 Amazon S3 存储桶所需的权限策略的更多信息，请参阅 [软件物料清单存储](preparing-to-use-software-package-catalog.md#spc-sbom-storage)。

```
InvalidRequestException "SBOM not accessible by the service. Please make sure the bucket exists and S3 permission is granted."
```

如果由于 Amazon S3 存储桶不存在或未授予访问 Amazon S3 存储桶中所存储内容的适当权限而导致其他实体无法访问 `key` 参数中的 SBOM zip 文件，则会出现以下错误消息。

```
InvalidRequestException "SBOM not accessible by the service. Please make sure the key exists and S3 permission is granted."
```

如果由于存储桶、密钥、版本 ID 不存在或未授予访问 Amazon S3 存储桶的适当权限而导致其他实体无法访问 Amazon S3 存储桶，则会出现以下错误消息。此外，如果授予的权限不足以访问 Amazon S3 存储桶中的 SBOM zip 存档文件，则可能会出现此错误消息。

```
InvalidRequestException "SBOM not accessible by the service. Please make sure the bucket/key/version exists and S3 permission is granted."
```

如果由于存储桶位于其他区域而导致其他实体无法访问 Amazon S3 存储桶时，则会出现以下错误消息。

```
InvalidRequestException "Cross-region S3 bucket for %s is not supported."
```

如果由于使用 `AssociateSbomWithPackageVersion` API 操作时将 `bucket`、`key` 或 `version` 参数拼写错误而导致其他实体无法访问 Amazon S3 存储桶，则会出现以下错误消息。

```
InvalidRequestException "Please make sure SBOM S3 bucket name/key length/version is valid"
```