AWS::Serverless::Connector - AWS Serverless Application Model

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS::Serverless::Connector

Configure les autorisations entre deux ressources. Pour obtenir une présentation des connecteurs, veuillez consulter Gestion des autorisations de ressource avec des connecteurs AWS SAM.

Pour plus d'informations sur les ressources AWS CloudFormation générées, veuillez consulter Ressources AWS CloudFormation générées lorsque vous spécifiez AWS::Serverless::Connector.

Pour fournir des commentaires sur les connecteurs, soumettez un nouveau problème dans le serverless-application-model AWS GitHub référentiel.

Note

Lorsque vous déployez vers AWS CloudFormation, AWS SAM transforme vos ressources AWS SAM en ressources AWS CloudFormation. Pour plus d’informations, consultez Ressources AWS CloudFormation générées.

Syntaxe

Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez l'une des syntaxes suivantes :

Note

Nous vous recommandons d'utiliser la syntaxe des connecteurs intégrés dans la plupart des cas d'utilisation. Le fait d'être intégré à la ressource source facilite sa lecture et sa maintenance au fil du temps. Lorsque vous devez référencer une ressource source qui ne se trouve pas dans le même modèle AWS SAM, telle qu'une ressource dans une pile imbriquée ou une ressource partagée, utilisez la syntaxe AWS::Serverless::Connector.

Connecteurs intégrés

<source-resource-logical-id>: Connectors: <connector-logical-id: Properties: Destination: ResourceReference | List of ResourceReference Permissions: List SourceReference: SourceReference

AWS::Serverless::Connector

Type: AWS::Serverless::Connector Properties: Destination: ResourceReference | List of ResourceReference Permissions: List Source: ResourceReference

Propriétés

Destination

Ressource de destination.

Type : ResourceReference| Liste des ResourceReference

Obligatoire : oui

Compatibilité AWS CloudFormation : cette propriété est unique pour AWS SAM et ne dispose pas d'équivalent AWS CloudFormation.

Permissions

Type d'autorisation que la ressource source est autorisée à exécuter sur la ressource de destination.

Read inclut des actions AWS Identity and Access Management (IAM) qui permettent de lire les données à partir de la ressource.

Write inclut des actions IAM qui permettent de lancer et d'écrire des données dans une ressource.

Valeurs valides : Read ou Write

Type : liste

Obligatoire : oui

Compatibilité AWS CloudFormation : cette propriété est unique pour AWS SAM et ne dispose pas d'équivalent AWS CloudFormation.

Source

Ressource source. Obligatoire lors de l'utilisation de la syntaxe AWS::Serverless::Connector.

Type : ResourceReference

Obligatoire : Conditionnelle

Compatibilité AWS CloudFormation : cette propriété est unique pour AWS SAM et ne dispose pas d'équivalent AWS CloudFormation.

SourceReference

Ressource source.

Note

À utiliser avec la syntaxe des connecteurs intégrés lors de la définition de propriétés supplémentaires pour la ressource source.

Type : SourceReference

Obligatoire : non

Compatibilité AWS CloudFormation : cette propriété est unique pour AWS SAM et ne dispose pas d'équivalent AWS CloudFormation.

Exemples

Connecteurs intégrés

L'exemple suivant utilise des connecteurs intégrés pour définir une connexion de données Write entre une fonction AWS Lambda et un tableau Amazon DynamoDB :

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

L'exemple suivant utilise des connecteurs intégrés pour définir les autorisations Read et Write :

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

L'exemple suivant utilise des connecteurs intégrés pour définir une ressource source avec une propriété autre que la propriété Id :

Transform: AWS::Serverless-2016-10-31 Transform: AWS::Serverless-2016-10-31 ... Resources: MyApi: Type: AWS::Serverless::Api Connectors: ApitoLambdaConn: Properties: SourceReference: Qualifier: Prod/GET/foobar Destination: Id: MyTable Permissions: - Read - Write MyTable: Type: AWS::DynamoDB::Table ...

AWS::Serverless::Connector

L'exemple de base suivant utilise la ressource AWS::Serverless::Connector pour qu'une fonction AWS Lambda lise à partir d'un tableau Amazon DynamoDB :

MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyFunction Destination: Id: MyTable Permissions: - Read - Write

L'exemple suivant utilise la ressource AWS::Serverless::Connector pour qu'une fonction Lambda écrive dans une rubrique Amazon SNS, avec les deux ressources dans le même modèle :

MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyLambda Destination: Id: MySNSTopic Permissions: - Write

L'exemple suivant utilise la ressource AWS::Serverless::Connector pour qu'une rubrique Amazon SNS écrive dans une fonction Lambda, qui écrit à son tour dans un tableau Amazon DynamoDB, avec toutes les ressources dans le même modèle  :

Transform: AWS::Serverless-2016-10-31 Resources: Topic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: !GetAtt Function.Arn Protocol: lambda Function: Type: AWS::Serverless::Function Properties: Runtime: nodejs16.x Handler: index.handler InlineCode: | const AWS = require('aws-sdk'); exports.handler = async (event, context) => { const docClient = new AWS.DynamoDB.DocumentClient(); await docClient.put({ TableName: process.env.TABLE_NAME, Item: { id: context.awsRequestId, event: JSON.stringify(event) } }).promise(); }; Environment: Variables: TABLE_NAME: !Ref Table Table: Type: AWS::Serverless::SimpleTable TopicToFunctionConnector: Type: AWS::Serverless::Connector Properties: Source: Id: Topic Destination: Id: Function Permissions: - Write FunctionToTableConnector: Type: AWS::Serverless::Connector Properties: Source: Id: Function Destination: Id: Table Permissions: - Write

Voici le modèle AWS CloudFormation transformé à partir de l'exemple ci-dessus :

"FunctionToTableConnectorPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Metadata": { "aws:sam:connectors": { "FunctionToTableConnector": { "Source": { "Type": "AWS::Lambda::Function" }, "Destination": { "Type": "AWS::DynamoDB::Table" } } } }, "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:PartiQLDelete", "dynamodb:PartiQLInsert", "dynamodb:PartiQLUpdate" ], "Resource": [ { "Fn::GetAtt": [ "MyTable", "Arn" ] }, { "Fn::Sub": [ "${DestinationArn}/index/*", { "DestinationArn": { "Fn::GetAtt": [ "MyTable", "Arn" ] } } ] } ] } ] }, "Roles": [ { "Ref": "MyFunctionRole" } ] } }