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