Gerenciando permissões de recursos com conectores AWS SAM - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciando permissões de recursos com conectores AWS SAM

O que são conectores AWS SAM?

Os conectores são um tipo de recurso AWS Serverless Application Model (AWS SAM) abstrato, identificado como AWS::Serverless::Connector, que fornece permissões simples e bem definidas entre seus recursos de aplicativos com tecnologia sem servidor. Use o atributo de recurso Connectors incorporando-o em um recurso de origem. Em seguida, defina seu recurso de destino e descreva como os dados ou eventos devem fluir entre esses recursos. O AWS SAM então, compõe as políticas de acesso necessárias para facilitar as interações necessárias.

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

Exemplo de conectores

Neste exemplo, usamos conectores para escrever dados de uma função AWS Lambda em uma tabela do Amazon DynamoDB.

Um diagrama de uma função do Lambda escrevendo dados em uma tabela do DynamoDB usando conectores AWS SAM.
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

O recurso do atributo Connectors está incorporado ao recurso de origem da função do Lambda. A tabela do DynamoDB é definida como o recurso de destino usando a propriedade Id. Os conectores provisionarão permissões Write entre esses dois recursos.

Quando você implanta seu modelo AWS SAM no AWS CloudFormation, o AWS SAM ele compõe automaticamente as políticas de acesso necessárias para que essa conexão funcione.

Conexões suportadas entre recursos de origem e destino

Suporte a conectores Read e tipos de permissão de dados e eventos Write entre uma combinação selecionada de conexões de recursos de origem e destino. Por exemplo, os conectores oferecem suporte a uma conexão Write entre um recurso de origem AWS::ApiGateway::RestApi e um recurso de destino AWS::Lambda::Function.

Os recursos de origem e destino podem ser definidos usando uma combinação de propriedades compatíveis. Os requisitos de propriedade dependerão da conexão que você está fazendo e de onde os recursos estão definidos.

nota

Os conectores podem provisionar permissões entre os tipos de recursos com tecnologia sem servidor e sem tecnologia sem servidor compatíveis.

Para obter uma lista de conexões de recursos compatíveis e seus requisitos de propriedade, consulte Tipos de recursos de origem e destino suportados para conectores.

Uso de conectores

Definir permissões de leitura e escrita

Permissões Read e Write podem ser fornecidas em um único conector:

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

Defina recursos usando outras propriedades suportadas

Para recursos de origem e destino, quando definidos no mesmo modelo, use a propriedade Id. Opcionalmente, um Qualifier pode ser adicionado para restringir o escopo do seu recurso definido. Quando o recurso não estiver no mesmo modelo, use uma combinação de propriedades compatíveis.

Ao definir um recurso de origem com uma propriedade diferente de Id, use a propriedade SourceReference.

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

Aqui está um exemplo, usando Qualifier para restringir o escopo de um recurso do Amazon API Gateway:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyApi: Type: AWS::Serverless::Api Connectors: ApiToLambdaConn: Properties: SourceReference: Qualifier: Prod/GET/foobar Destination: Id: MyFunction Permissions: - Write ...

Aqui está um exemplo, usando uma combinação compatível de Arn e Type para definir um recurso de destino a partir de outro modelo:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Connectors: TableConn: Properties: Destination: Type: AWS::DynamoDB::Table Arn: !GetAtt MyTable.Arn ...

Crie vários conectores a partir de uma única fonte

Em um recurso de origem, você pode definir vários conectores, cada um com um recurso de destino diferente.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Connectors: BucketConn: Properties: Destination: Id: MyBucket Permissions: - Read - Write SQSConn: Properties: Destination: Id: MyQueue Permissions: - Read - Write TableConn: Properties: Destination: Id: MyTable Permissions: - Read - Write TableConnWithTableArn: Properties: Destination: Type: AWS::DynamoDB::Table Arn: !GetAtt MyTable.Arn Permissions: - Read - Write ...

Crie conectores de vários destinos

Dentro de um recurso de origem, você pode definir um único conector com vários recursos de destino. Aqui está um exemplo de um recurso de origem de função do Lambda conectado a um bucket do Amazon Simple Storage Service (Amazon S3) e a uma tabela do DynamoDB:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Connectors: WriteAccessConn: Properties: Destination: - Id: OutputBucket - Id: CredentialTable Permissions: - Write ... OutputBucket: Type: AWS::S3::Bucket CredentialTable: Type: AWS::DynamoDB::Table

Defina atributos de recursos com conectores

Os atributos dos recursos podem ser definidos para que os recursos especifiquem comportamentos e relacionamentos adicionais. Para saber mais sobre os atributos de recursos, consulte Referência de atributos de recurso no AWS CloudFormationGuia do usuário.

Você pode adicionar atributos de recursos ao seu conector incorporado definindo-os no mesmo nível das propriedades do conector. Quando seu modelo AWS SAM for transformado na implantação, os atributos passarão para os recursos gerados.

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Connectors: MyConn: DeletionPolicy: Retain DependsOn: AnotherFunction Properties: ...

Como funcionam os conectores

nota

Esta seção explica como os conectores provisionam os recursos necessários nos bastidores. Isso acontece automaticamente ao usar conectores.

Primeiro, o atributo de recurso Connectors incorporado é transformado em um tipo de recurso AWS::Serverless::Connector. Seu ID lógico é criado automaticamente como < source-resource-logical-id >< embedded-connector-logical-id >.

Por exemplo, aqui está um conector incorporado:

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

Isso gerará o seguinte recurso 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
nota

Você também pode definir conectores em seu modelo AWS SAM usando essa sintaxe. Isso é recomendado quando seu recurso de origem é definido em um modelo separado do seu conector.

Em seguida, as políticas de acesso necessárias para essa conexão são compostas automaticamente. Para obter mais informações sobre os recursos gerados por conectores, consulte Os recursos AWS CloudFormation gerados quando você especifica AWS::Serverless::Connector.

Benefícios dos conectores AWS SAM

Ao compor automaticamente as políticas de acesso apropriadas entre os recursos, os conectores oferecem a capacidade de criar seus aplicativos com tecnologia sem servidor e se concentrar na arquitetura do aplicativo sem precisar de experiência em recursos de autorização AWS, linguagem de políticas e configurações de segurança específicas do serviço. Portanto, os conectores são um grande benefício para desenvolvedores que podem ser novos no desenvolvimento de tecnologia sem servidor ou desenvolvedores experientes que desejam aumentar sua velocidade de desenvolvimento.

Saiba mais

Para obter mais informações sobre como usar os conectores AWS SAM, consulte AWS::Serverless::Connector.

Envie seu feedback

Para fornecer feedback sobre conectores, envie um novo problema no serverless-application-model AWS GitHubrepositório.