

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用したサービスコントロールポリシー (SCPsトラブルシューティング AWS Organizations
<a name="org_troubleshoot_policies"></a>

サービスコントロールポリシー (SCP) で検出された共通のエラーを診断して変更するために、この情報を使用します。

のサービスコントロールポリシー (SCPs) AWS Organizations は IAM ポリシーと似ており、共通の構文を共有します。この構文は、[JavaScript Object Notation](http://www.json.org)(JSON) のルールで始まります。JSON では、*オブジェクト*およびオブジェクトを構成する名前と値のペアを指定します。[IAM ポリシーの文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-grammar.html)は、アクセス許可を付与するためにポリシーを使用する AWS のサービス に対して名前と値がどのような意味を持ち、どのように解釈されるかを定義するものです。

AWS Organizations は、IAM 構文と文法のサブセットを使用します。詳細については、「[SCP 構文](orgs_manage_policies_scps_syntax.md)」を参照してください。

**Topics**
+ [複数のポリシーオブジェクト](#morethanonepolicyblock)
+ [複数の Statement 要素](#morethanonestatement)
+ [ポリシードキュメントが最大サイズを超えています](#scptoolong)

## 複数のポリシーオブジェクト
<a name="morethanonepolicyblock"></a>

SCP は、1 つの JSON オブジェクトのみで構成する必要があります。オブジェクトは括弧（{ }）で囲んで示します。外側の { } のペア内に追加の { } を埋め込むことによって JSON オブジェクト内で他のオブジェクトをネストすることができますが、ポリシーに含めることができるのは一番外側の { } のペアのみです。次の例は、最上位に 2 つのオブジェクトが含まれているため、***正しく***ありません。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:Describe*",
    "Resource": "*"
  }
}
{
  "Version": "2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "*"
  }
}
```

ただし、正しいポリシーの文法を使用して、前述の例の目的を果たすことができます。それぞれに独自の `Statement` 要素を含む 2 つのポリシーオブジェクトを含める代わりに、1 つの `Statement` 要素に 2 つのブロックを組み合わせて使用することができます。`Statement` 要素には、次の例に示すように 2 つのオブジェクトの配列を値として指定します。

```
{
 "Version": "2012-10-17",		 	 	 
 "Statement": [
 {
 "Effect": "Allow",
 "Action": "ec2:Describe*",
 "Resource": "*"
 },
 {
 "Effect": "Deny",
 "Action": "s3:*",
 "Resource": "*"
 }
 ]
}
```

この例では、2 つの要素による効果は異なるため、1 つの要素を含む `Statement` に圧縮することはできません。構文は、各構文の `Effect` や、`Resource` 要素が同一の場合にのみ、組み合わせることができます。

## 複数の Statement 要素
<a name="morethanonestatement"></a>

このエラーは、一見、前のセクションのエラーのバリエーションのように見えますが、構文上はエラーの種類が異なります。次の例では、最上位の 1 ペアの { } で示された 1 つのポリシーオブジェクトのみが存在します。そのオブジェクト内に 2 つの `Statement` 要素が含まれています。

SCP には、名前 (`Statement`) の後にコロン、その後に値という形式で構成される 1 つの `Statement` 要素のみを指定する必要があります。`Statement` 要素の値は、{} で示され、1 つの `Effect` 要素、1 つの `Action` 要素、および 1 つの `Resource` 要素を含むオブジェクトである必要があります。次の例は、ポリシーオブジェクトに 2 つの `Statement` 要素が含まれているため、***誤り***です。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:Describe*",
    "Resource": "*"
  },
  "Statement": {
    "Effect": "Deny",
    "Action": "s3:*",
    "Resource": "*"
  }
}
```

値オブジェクトは複数の値オブジェクトの配列にすることができるため、次の例に示すように、2 つの `Statement` 要素を組み合わせて 1 つの要素にすることで、この問題を解決できます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {{[}}
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource":"*"
    }{{,}}
    {
      "Effect": "Deny",
      "Action": "s3:*",
      "Resource": "*"
    }
 {{]}}
}
```

------

`Statement` 要素の値はオブジェクト配列です。例の配列は 2 つのオブジェクトで構成され、各オブジェクトに `Statement` 要素の正しい値が指定されています。配列内の各オブジェクトはカンマで区切ります。

## ポリシードキュメントが最大サイズを超えています
<a name="scptoolong"></a>

SCP ドキュメントの最大サイズは 5,120 文字です。この最大サイズには、空白を含むすべての文字が含まれます。SCP のサイズを減らすには、引用符の外側にあるすべての空白文字 (スペースや改行など) を削除できます。

**注記**  
を使用してポリシーを保存すると AWS マネジメントコンソール、JSON 要素と引用符の外側の間の余分な空白は削除され、カウントされません。SDK オペレーションまたは を使用してポリシーを保存すると AWS CLI、指定したとおりにポリシーが保存され、文字の自動削除は行われません。