

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

# 計画
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-projections"></a>

`GetItem`、`Scan`、`Query`、`BatchGetItem`、および `TransactGetItems` オペレーションを使用して DynamoDB のオブジェクトを読み取る場合、必要な属性を識別するプロジェクションをオプションで指定できます。プロジェクションは次のような構造で、フィルタ-に似ています。

```
"projection" : {
    "expression" : "projection expression"
    "expressionNames" : {
        "#name" : "name",
    }
}
```

各フィールドの定義は以下のようになります。

**`expression`**   
プロジェクション式、これは文字列です。1 つの属性を取得するには、名前を指定します。複数の属性の場合、名前をカンマで区切る必要があります。プロジェクション式の記述の詳細については、「[DynamoDB プロジェクション式](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ProjectionExpressions.html)」のドキュメントを参照してください。このフィールドは必須です。

 **`expressionNames`**   
式の属性*名*のプレースホルダーを示します。キー - 値のペアの形式になります。キーは、`expression` で使用される名前のプレースホルダーに対応します。値は、DynamoDB の項目の属性名に対応する文字列である必要があります。このフィールドはオプションであり、`expression` で使用される式の属性名のプレースホルダーのみを入力します。`expressionNames` の詳細については、「[Amazon DynamoDB のドキュメント](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html)」を参照してください。

## 例 1
<a name="id25"></a>

次の例は、属性 `author` と`id` が DynamoDB から返される VTL マッピングテンプレートのプロジェクション セクションです。

```
"projection" : {
    "expression" : "#author, id",
    "expressionNames" : {
        "#author" : "author"
    }
}
```

**ヒント**  
GraphQL リクエストセレクションセットには [\$1context.info.SelectionSetList](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html#aws-appsync-resolver-context-reference-info) を使用してアクセスできます。このフィールドを使うと、必要に応じてプロジェクション式を動的にフレーミングできます。

**注記**  
`Query` と `Scan` のオペレーションでプロジェクション式を使用する場合、`select` の値は `SPECIFIC_ATTRIBUTES` でなければなりません。詳細については、「[DynamoDB のドキュメント](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-Select)」を参照してください。