AWS SAM コネクタによるリソースに対するアクセス許可の管理 - AWS Serverless Application Model

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

AWS SAM コネクタによるリソースに対するアクセス許可の管理

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

AWS SAM コネクタの利点

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

AWS SAM コネクタの使用

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> ...

コネクタの仕組み

注記

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

まず、埋め込まれた 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 テンプレート内のコネクタを定義することもできます。これは、ソースリソースがコネクタとは別のテンプレートで定義されている場合に推奨されます。

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

コネクタの例

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

AWS SAM コネクタを使用して DynamoDB テーブルにデータを書き込む Lambda 関数。
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 テンプレートを にデプロイすると AWS CloudFormation、 AWS SAM は、この接続が機能するために必要なアクセスポリシーを自動的に作成します。

送信元リソースと送信先リソースの間でサポートされている接続

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

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

注記

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

サポートされているリソース接続とそのプロパティの要件のリストについては、「コネクタに対してサポートされている送信元リソースと送信先リソースのタイプ」を参照してください。

詳細

AWS SAM コネクタの使用の詳細については、以下のトピックを参照してください。

フィードバックを送信する

コネクタに関するフィードバックを提供するには、serverless-application-model AWS GitHubリポジトリ新しい問題を送信します