

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

# 每個資源的政策大小
<a name="policy-size-per-resource"></a>

Verified Permissions 會限制參考相同資源之所有政策的總大小。此限制是*每個資源配額的政策大小*，其預設值為 200，000 位元組。當您呼叫 `CreatePolicy`或 時`UpdatePolicy`，已驗證許可會計算參考資源的新總計。如果新的總計超過配額，請求會失敗並顯示 `ServiceQuotaExceededException`。

未指定資源的政策會套用至所有資源。這些政策共用`"unspecified"`資源的個別總計，限制為相同的配額值。

如需所有已驗證許可配額的清單，請參閱 [Amazon 驗證許可的配額](quotas.md)。

**Topics**
+ [如何計算政策大小](#policy-size-per-resource-calculation)
+ [保持在配額內](#policy-size-per-resource-manage)
+ [範本連結政策大小範例](#policy-size-per-resource-example)

## 如何計算政策大小
<a name="policy-size-per-resource-calculation"></a>

每個政策會貢獻資源的總計，如下所示：
+ **靜態政策** – 靜態政策提供其完整大小。這是根據*政策大小*配額測量的相同值。
+ **範本連結政策** – 範本連結政策提供用於執行個體化之主體和資源的合併長度。如果您未指定委託人或資源，其長度會計為 0。政策範本內文的大小不會計入此配額。

每個政策也會將高達數百位元組的固定額外負荷新增至總計。範本連結政策會增加比靜態政策更多的額外負荷。

## 保持在配額內
<a name="policy-size-per-resource-manage"></a>

如果您的應用程式接近*每個資源配額的政策大小*，請考慮下列策略：
+ **使用適當的政策類型。**如果許多政策授予相同資源的類似許可，政策範本可能會減少政策存放區的儲存體使用量。每個範本連結政策只會存放其主體和資源。政策範本會儲存共用陳述式一次，但每個連結的政策也具有固定的儲存開銷。範本只會在共用陳述式夠大以抵消大約 200 個位元組以上的額外負荷時自行付費。低於該閾值時，個別靜態政策會耗用較少的空間。如需詳細資訊，請參閱[Amazon Verified Permissions 政策範本和範本連結政策](policy-templates.md)。
+ **在政策範圍內指定主體和資源。**未指定資源的政策會共用整個政策存放區中`"unspecified"`資源的單一總計。將每個政策擴展到特定資源會將您的政策分散到不同的總計，每個資源各一個。
+ **將您的委託人和資源分組。**不是為每個委託人撰寫政策，而是為群組撰寫政策，並將委託人新增至群組。將資源分組到容器中可以類似地減少參考單一資源的政策數量。
+ **請求提高配額**。如果您的政策設計符合特定限制條件，您可以請求提高此配額。若要符合資格，您的政策必須在政策範圍內指定委託人或資源。增加也可能減少主體和資源可以擁有的階層父項數量。即使配額增加，200，000 位元組的子限制仍適用於參考相同委託人和相同資源的政策。您無法請求提高此子限制。

## 範本連結政策大小範例
<a name="policy-size-per-resource-example"></a>

若要了解範本連結政策對*每個資源配額的政策大小*有何貢獻，請新增主體的長度和資源的長度。如果您未指定資源，Verified Permissions 會將其大小計入`"unspecified"`資源總計。

檢閱下列範本：

```
permit (
  principal in ?principal,
  action in
    [MyApplication::Action::"ContentManagement",
     MyApplication::Action::"AccountAdministration",
     MyApplication::Action::"BillingOperations"],
  resource in ?resource
)
when {
  resource has authorizedTenantIds &&
  principal has tenantId &&
  resource.authorizedTenantIds.contains(principal.tenantId)
};
```

從該範本建立下列政策：

```
TemplateLinkedPolicy {
  policyId: "policy1",
  templateId: "template1",
  principal: User::"alice",
  resource: Photo::"car.jpg"
}

TemplateLinkedPolicy {
  policyId: "policy2",
  templateId: "template1",
  principal: User::"bob",
  resource: Photo::"boat.jpg"
}

TemplateLinkedPolicy {
  policyId: "policy3",
  templateId: "template1",
  principal: User::"jane",
  resource: Photo::"car.jpg"
}

TemplateLinkedPolicy {
  policyId: "policy4",
  templateId: "template1",
  principal: User::"jane",
  resource
}
```

透過計算 中的位元組`principal`和`resource`每個位元組來計算這些政策的大小。Verified Permissions 以 UTF-8 位元組為單位測量大小。可列印 ASCII 範圍中的字元各計為 1 個位元組，但其他字元可以使用更多。下列範例僅使用 ASCII 字元，因此每個字元計為 1 個位元組。這些計算不包括固定的額外負荷。您的實際總計將會更高。

的大小`policy1`是主體的長度 `User::"alice"`(13) 加上資源的長度 `Photo::"car.jpg"`(16)。總計為 13 \+ 16 = 29 個位元組。

的大小`policy2`是委託人 `User::"bob"`(11) 的長度加上資源 `Photo::"boat.jpg"`(17) 的長度。總計為 11 \+ 17 = 28 個位元組。

的大小`policy3`是主體的長度 `User::"jane"`(12) 加上資源的長度 `Photo::"car.jpg"`(16)。總計為 12 \+ 16 = 28 個位元組。

的大小`policy4`是主體的長度 `User::"jane"`(12) 加上資源的長度 (0)。總計為 12 \+ 0 = 12 個位元組。

由於 `policy2`是唯一參考資源 的政策`Photo::"boat.jpg"`，因此總資源大小為 28 個位元組。

由於 `policy1`和 `policy3`都參考資源 `Photo::"car.jpg"`，因此總資源大小為 29 \+ 28 = 57 位元組。

由於 `policy4`是唯一參考`"unspecified"`資源的政策，因此總資源大小為 12 個位元組。