

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

# AWS SAM コネクタを使用したリソースアクセス許可の管理
<a name="managing-permissions-connectors"></a>

コネクタは、 として識別される AWS Serverless Application Model (AWS SAM) 抽象リソースタイプであり`AWS::Serverless::Connector`、サーバーレスアプリケーションリソース間にシンプルで適切な範囲のアクセス許可を提供します。

## AWS SAM コネクタの利点
<a name="connector-benefits"></a>

コネクタは、リソース間で適切なアクセスポリシーを自動的に作成することで、 AWS 認可機能、ポリシー言語、サービス固有のセキュリティ設定に関する専門知識を必要とせずに、サーバーレスアプリケーションを作成し、アプリケーションアーキテクチャに集中できます。したがって、コネクタは、サーバーレス開発に慣れていない開発者や、開発速度を上げたいと考えている経験豊富な開発者にとって大きなメリットです。

## AWS SAM コネクタの使用
<a name="what-are-connectors"></a>

`Connectors` リソース属性を**ソース**リソース内に埋め込んで使用します。次に、**送信先**リソースを定義し、それらのリソース間でデータまたはイベントがどのように流れるかを記述します。 AWS SAM 次に、 は、必要なやり取りを容易にするために必要なアクセスポリシーを構成します。

以下に、このリソース属性の記述方法の概要を示します。

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  <source-resource-logical-id>:
    Type: <resource-type>
    ...
    Connectors:
      <connector-name>:
        Properties:
          Destination:
            <properties-that-identify-destination-resource>
          Permissions:
            <permission-types-to-provision>
  ...
```

## コネクタの仕組み
<a name="connectors-work"></a>

**注記**  
このセクションでは、コネクタがバックグラウンドで必要なリソースをプロビジョニングする方法について説明します。これは、コネクタを使用する際に自動的に実行されます。

まず、埋め込まれた `Connectors` リソース属性が `AWS::Serverless::Connector` リソースタイプに変換されます。その論理 ID は、*<source-resource-logical-id><embedded-connector-logical-id>* として自動的に作成されます。

例えば、これは埋め込みコネクタです。

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
...
Resources:
  MyFunction:
    Type: AWS::Lambda::Function
    Connectors:
      MyConn:
        Properties:
          Destination:
            Id: MyTable
          Permissions:
            - Read
            - Write
  MyTable:
    Type: AWS::DynamoDB::Table
```

これにより、次の `AWS::Serverless::Connector` リソースが生成されます。

```
Transform: AWS::Serverless-2016-10-31
Resources:
  ...
  MyFunctionMyConn:
    Type: AWS::Serverless::Connector
    Properties:
      Source:
        Id: MyFunction
      Destination:
        Id: MyTable
      Permissions:
        - Read
        - Write
```

**注記**  
この構文を使用して、 AWS SAM テンプレートでコネクタを定義することもできます。これは、ソースリソースがコネクタとは別のテンプレートで定義されている場合に推奨されます。

次に、この接続に必要なアクセスポリシーが自動的に作成されます。コネクタによって生成されるリソースの詳細については、「[CloudFormation を指定したときに生成される リソース AWS::Serverless::Connector](sam-specification-generated-resources-connector.md)」を参照してください。

## コネクタの例
<a name="what-are-connectors-example"></a>

次の例は、コネクタを使用して AWS Lambda 関数から Amazon DynamoDB テーブルにデータを書き込む方法を示しています。

![\[AWS SAM コネクタを使用して DynamoDB テーブルにデータを書き込む Lambda 関数。\]](http://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/images/managing-connectors-example.png)


```
Transform: AWS::Serverless-2016-10-31
Resources:
  MyTable:
    Type: AWS::Serverless::SimpleTable
  MyFunction:
    Type: AWS::Serverless::Function
    Connectors:
      MyConn:
        Properties:
          Destination:
            Id: MyTable
          Permissions:
            - Write
    Properties:
      Runtime: nodejs16.x
      Handler: index.handler
      InlineCode: |
        const AWS = require("aws-sdk");
        const docClient = new AWS.DynamoDB.DocumentClient();
        exports.handler = async (event, context) => {
          await docClient.put({
            TableName: process.env.TABLE_NAME,
            Item: {
              id: context.awsRequestId,
              event: JSON.stringify(event) 
            }
          }).promise();
        }
      Environment:
        Variables:
          TABLE_NAME: !Ref MyTable
```

`Connectors` リソース属性は、Lambda 関数のソースリソース内に埋め込まれています。DynamoDB テーブルは、`Id` プロパティを使用して送信先リソースとして定義されます。コネクタは、これら 2 つのリソース間の `Write` 許可をプロビジョニングします。

 AWS SAM テンプレートを にデプロイすると CloudFormation、 AWS SAM は、この接続が機能するために必要なアクセスポリシーを自動的に作成します。

## 送信元リソースと送信先リソースの間でサポートされている接続
<a name="supported-connector-resources"></a>

コネクタは、ソースと送信先のリソース接続の選択された組み合わせの間におけるデータとイベントの `Read` および `Write` 許可タイプをサポートします。例えば、コネクタは `AWS::ApiGateway::RestApi` ソースリソースと `AWS::Lambda::Function` 送信先リソースの間の `Write` 接続をサポートします。

ソースリソースと送信先リソースは、サポートされているプロパティを組み合わせて定義できます。プロパティの要件は、使用する接続と、リソースが定義されている場所によって異なります。

**注記**  
コネクタは、サポートされているサーバーレスリソースタイプと非サーバーレスリソースタイプの間の許可をプロビジョニングできます。

サポートされているリソース接続とそのプロパティの要件のリストについては、「[コネクタに対してサポートされている送信元リソースと送信先リソースのタイプ](reference-sam-connector.md#supported-connector-resource-types)」を参照してください。

## 詳細情報
<a name="connector-learn-more"></a>

 AWS SAM コネクタの使用の詳細については、以下のトピックを参照してください。
+ [AWS::Serverless::Connector](sam-resource-connector.md)
+ [で読み取りおよび書き込みアクセス許可を定義する AWS SAM](connector-usage-define.md)
+ [でサポートされている他のプロパティを使用してリソースを定義する AWS SAM](connector-usage-other-properties.md)
+ [で 1 つのソースから複数のコネクタを作成する AWS SAM](connector-usage-single-source.md)
+ [でマルチ宛先コネクタを作成する AWS SAM](connector-usage-multi-destination.md)
+ [で読み取りおよび書き込みアクセス許可を定義する AWS SAM](connector-usage-define.md)
+ [でコネクタを使用してリソース属性を定義する AWS SAM](connector-usage-resource-attributes.md)

## フィードバックを送信する
<a name="connector-feedback"></a>

コネクタに関するフィードバックを提供するには、*serverless-application-model AWS GitHubリポジトリ*で[新しい問題を送信します](https://github.com/aws/serverless-application-model/issues/new?assignees=&labels=area%2Fconnectors,stage%2Fneeds-triage&template=other.md&title=%28Feature%20Request%29)。