Gerenciar ambiente às funções
Gerencie as funções Serverless e ambientes de customização nos provedores de nuvem. Através deste gerenciamento é fornecido um ambiente de customização de regras de negócio na senior X Platform através da IDE Cloud9, que permite que os responsáveis pela customização tenham controle das funções Serverless criadas no provedor da nuvem a partir da plataforma.
Para uma documentação técnica completa acesse a documentação completa disponível no portal Dev.senior.
Para saber mais sobre como depurar uma regra customizada na senior X Platform, assista ao nosso vídeo no Youtube a seguir:
O que você pode fazer:
Para que seja possível configurar o ambiente é necessário garantir que as chaves de acesso ao provedor da nuvem já estejam devidamente configuradas. Por padrão, o serviço utiliza as chaves já informadas nas configurações globais, no entanto, existe a possibilidade de sobrescrever as chaves de acesso através das configurações do tenant:
- acesse Tecnologia > Configuração > Por tenant e pesquise os campos destinados para as chaves de configuração do provedor da nuvem;
- preencha as informações, clique em Salvar e aguardar a notificação de sucesso.
- Acesse Tecnologia > Customização > Configurar Ambiente > Gerenciar Ambiente;
- Com as chaves de acesso ao provedor da nuvem devidamente configuradas, clique em Criar Ambiente;
- Em caso de falha em alguma das etapas, o botão tentar novamente será habilitado. Clique nele para que o serviço tente configurar o ambiente novamente;
- Verifique as instruções recebidas por e-mail para acessar o ambiente;
- Quando o ambiente estiver completamente configurado, clique em Abrir ambiente para acessar o ambiente criado no Cloud9.
Opcionalmente, utilize o botão Atualizar status para atualizar as informações em caso de demora após a configuração da chave de acesso e antes de configurar o ambiente. Caso opte por esta opção, as informações serão atualizadas automaticamente a cada dez segundos, já que existem casos em que o passos para configuração do ambiente podem levar até 40 segundos para serem concluídos.
Importante
O responsável pela criação do ambiente precisa acessá-lo logo após a criação ter sido finalizada, o ambiente só estará disponível aos demais após esse passo.
A Senior fornece uma conta para criação do ambiente, porém, dependendo seu uso, poderá haver custos extras. Entre em contato com o comercial para obter mais informações.
Selecione a primitiva a ser customizada através da customização de regras, e clique no botão Gerar URL e preencha o nome da função desejada. Esta tela permite criação de pontos de regras, que não dependem do uso da SDK, ou seja, sem a necessidade de gerar uma URL, e apenas informando a URL desejada.
A Lambda AWS padrão criada através da SDK possui algumas informações nos comentários como nome da primitiva, domínio, serviço e tenant. E o seu código padrão responde automaticamente com a mensagem "Olá mundo". O ambiente está configurado com o NodeJS na versão 12 e permite o uso da linguagem JavaScript.
Após realizar as alterações no código da função:
- Abra a guia de recursos da AWS e selecione a função a qual deseja subir as alterações;
- Clique em Upload para que suas alterações sejam automaticamente aplicadas no código da função e estejam aptas a serem utilizadas.
Código Lambda simples utilizando Node.js como linguagem de programação:
'use strict';
/**
* Nome da primitiva : getStages
* Nome do dominio : platform
* Nome do serviço : functions
* Nome do tenant : brenon
**/
exports.handler = async (event) => {
return sendRes(200, JSON.parse(event.body));
};
const sendRes = (status, body) => {
body.helloWorld = "Olá mundo";
var response = {
statusCode: status,
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(body)
};
console.log(body);
return response;
};
Para uma interpretação correta da resposta pela Bridge é necessário seguir uma formatação adequada de payload, informando alguns itens básicos como cabeçalhos, corpo e código de resposta.
Função Lambda utilizando Node.js 6.10 como linguagem de programação, acessando serviço S3 da AWS:
var AWS = require('aws-sdk');
const BUCKET = process.env.BUCKET_NAME;
const REGION = process.env.REGION || 'sa-east-1';
const PREFIX = 'events/';
var s3 = new AWS.S3( { region: REGION });
exports.handler = (event, context, callback) => {
var params = {
Bucket: BUCKET,
Prefix: PREFIX
};
s3.listObjectsV2(params, function(err, data) {
if (err) {
console.log(err, err.errStack);
var response = {
statusCode: 500,
body : JSON.stringify({ message: "Error retrieving calendar" }),
headers: {
"Access-Control-Allow-Origin": "*"
},
isBase64Encoded: false
}
callback(null, response);
} else {
collectEvents(data, callback);
}
});
};
function collectEvents(items, callback) {
let totalObjects = items.KeyCount;
let events = [];
items.Contents.forEach(obj => {
s3.getObject({ Bucket: BUCKET, Key: obj.Key }, function(err, object) {
if (err) {
console.log(err, err.st);
} else {
let content = object.Body.toString("utf-8");
let date = extractDate(obj.Key);
if (date && content.length > 0 && date < new Date()) {
events.push({ date: date, content: content});
}
}
if (--totalObjects == 0) {
events.sort((e1, e2) => e2.date - e1.date);
let result = { events : events };
let response = {
statusCode: 200,
body: JSON.stringify(result),
headers: {
"Access-Control-Allow-Origin": "*"
},
isBase64Encoded: false
};
callback(null, response);
}
})
})
}
function extractDate(objectKey) {
let regex = new RegExp("^" + PREFIX);
let dateStr = objectKey.substr(0, objectKey.length - 3).replace(regex, '');
let dateRegex = new RegExp("([0-9]{4}\-[0-9]{2}\-[0-9]{2})\-([0-9]{2}\-[0-9]{2})", "g");
let matches = dateRegex.exec(dateStr);
if (matches) {
return new Date(matches[1] + "T" + matches[2].replace('-', ':'));
} else {
return null;
}
}
Para uma interpretação correta da resposta pela Bridge é necessário seguir uma formatação adequada de payload, informando alguns itens básicos como cabeçalhos, corpo e código de resposta.
Acesse Tecnologia > Customização > Regras > Funcionalidades (API) e ative a função customizada.
A SDK tem o objetivo de ajudar o usuário na configuração de um ambiente para execução de regras customizadas. Mesmo com o foco na utilização no serviço de customização, ele foi desacoplado de outros serviços. Com isto, as funções enviadas para o servidor de nuvem podem ser consumidas por qualquer serviço.
As requisições para uma função devem possuir os seguintes cabeçalhos: seniorx-tenant-api-key e seniorx-tenant-domain.
A URL de acesso e API KEY podem ser obtidos pelas primitivas da SDK.