Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS::Serverless::Connector
Configura permisos entre dos recursos. Para obtener una introducción a los conectores, consulta Para obtener más información, consulta administración de los permisos de recursos con conectores de AWS SAM..
Para obtener más información sobre los recursos AWS CloudFormation generados, consulta CloudFormation recursos generados cuando se especifica AWS::Serverless::Connector.
Para hacer comentarios sobre los conectores, envíe un nuevo problema
nota
Al realizar la implementación en AWS CloudFormation, AWS SAM transforma sus recursos de AWS SAM en recursos de CloudFormation. Para obtener más información, consulta Recursos de CloudFormation generados para AWS SAM.
Sintaxis
Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), use una de las siguientes sintaxis:
nota
Recomendamos utilizar la sintaxis de los conectores integrados en la mayoría de los casos de uso. Al estar integrado en el recurso de origen, es más fácil de leer y mantener a lo largo del tiempo. Cuando necesite hacer referencia a un recurso de origen que no esté dentro de la misma plantilla de AWS SAM, como un recurso de una pila anidada o un recurso compartido, utilice la sintaxis AWS::Serverless::Connector.
Conectores integrados
<source-resource-logical-id>: Connectors:<connector-logical-id: Properties: Destination:ResourceReference|List of ResourceReferencePermissions:ListSourceReference:SourceReference
AWS::Serverless::Conector
Type: AWS::Serverless::Connector Properties: Destination:ResourceReference|List of ResourceReferencePermissions:ListSource:ResourceReference
Propiedades
-
Destination -
El recurso de destino.
Tipo: ResourceReference | Lista de ResourceReference
Obligatorio: sí
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Permissions -
El tipo de permiso que el recurso de origen puede realizar en el recurso de destino.
Readincluye acciones de AWS Identity and Access Management (IAM) que permiten leer los datos del recurso.Writeincluye acciones de IAM que permiten iniciar y escribir datos en un recurso.Valores válidos:
ReadoWriteTipo: lista
Obligatorio: sí
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
Source -
El recurso fuente. Obligatorio cuando se utiliza la sintaxis
AWS::Serverless::Connector.Tipo: ResourceReference
Obligatorio: condicional
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
SourceReference -
El recurso fuente.
nota
Utilícelo con la sintaxis de los conectores integrados al definir propiedades adicionales para el recurso de origen.
Tipo: SourceReference
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
Ejemplos
Conectores integrados
En el siguiente ejemplo, se utilizan conectores integrados para definir una conexión de datos Write entre una función de AWS Lambda y una tabla de 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 ...
En el siguiente ejemplo, se utilizan conectores integrados para definir los Read y los permisos 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 ...
En el siguiente ejemplo, se utilizan conectores integrados para definir un recurso fuente con una propiedad distinta de 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::Conector
En el siguiente ejemplo, se utiliza el recurso AWS::Serverless::Connector para que una función de AWS Lambda lea y escriba en una tabla de Amazon DynamoDB:
MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyFunction Destination: Id: MyTable Permissions: - Read - Write
En el siguiente ejemplo, se utiliza el recurso AWS::Serverless::Connector para que una función de Lambda escriba en un tema de Amazon SNS, con ambos recursos en la misma plantilla:
MyConnector: Type: AWS::Serverless::Connector Properties: Source: Id: MyLambda Destination: Id: MySNSTopic Permissions: - Write
En el siguiente ejemplo, se utiliza el recurso AWS::Serverless::Connector para que un tema de Amazon SNS se escriba en una función de Lambda y, a continuación, en una tabla de Amazon DynamoDB, con todos los recursos en la misma plantilla:
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
La siguiente es la plantilla AWS CloudFormation transformada del ejemplo anterior:
"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" } ] } }