

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS IoT 裝置管理軟體套件目錄故障診斷
<a name="software-package-catalog-troubleshooting"></a>

這是 AWS IoT Device Management Software Package Catalog 的疑難排解區段。

## 對錯誤訊息進行一般故障診斷
<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."
```

**軟體套件和套件 Verion 預留位置**

由於 `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."
```

**具有 Amazon S3 預先簽章 URL 的 IAM 角色**

當您嘗試在沒有 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."
```

**套件版本成品具有 Amazon S3 預先簽章 URL 的 IAM 角色**

當您嘗試在不含 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."
```

當另一個實體因為 `bucket`、 或 `version` 參數在使用 `AssociateSbomWithPackageVersion` API 操作時拼寫錯誤而無法存取 Amazon S3 儲存貯體時`key`，會顯示下列錯誤訊息。

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