Pré-requisites: Compartment, vcn e subnet container registry.
-
Instalar OCI CLI: Siga as instruções na documentação da OCI CLI. Configure no Vscode oci credencial e uma chave de API chaves, caso ja tenha criado copie para sua pasta o arquivo de configuração (~/.oci/oci_key.pem). Configure localmente oci id user e tenancy. Corrigir Permissões da pasta onde esta a chave
oci setup repair-file-permissions --file /home/joyce/.oci/sessions/DEFAULT/oci_api_key
-
Instalar Fn CLI: O Fn Project é usado para desenvolver, testar e deployar funções para Oracle Functions. Siga as instruções na documentação do Fn Project.
-
Configurar o Fn Project para OCI: Certifique-se de que o Fn CLI está configurado para usar o Oracle Functions.
fn update context oracle.compartment-id <compartment-ocid> fn update context oracle.profile DEFAULT fn update context registry <region-key>.ocir.io/<repo-name>
Substitua
<compartment-ocid>
,<region-key>
e<repo-name>
pelos valores apropriados.Neste passo siga as instruções do "Getting started" ate a etapa 5.
-
Criar uma Aplicação de Oracle Functions: No Console OCI, navegue para "Developer Services" > "Functions" e crie uma nova aplicação.
-
Inicializar a Função: Use o CLI do Fn Project para inicializar a função.
fn init --runtime python fn-create-tenancy cd fn-create-tenancy
-
Escrever a Função Python: Substitua o conteúdo de
func.py
pelo seguinte:import oci import json def handler(ctx, data: str = None): config = oci.config.from_file() organizations_client = oci.organizations.OrganizationsClient(config) body = json.loads(data) create_child_tenancy_details = oci.organizations.models.CreateChildTenancyDetails( compartment_id=body["compartment_id"], tenancy_name=body["tenancy_name"], tenancy_description=body["tenancy_description"], home_region=body["home_region"], admin_email=body["admin_email"] ) response = organizations_client.create_child_tenancy(create_child_tenancy_details) return json.dumps({"tenancy_id": response.data.tenancy_id})
-
Configurar o Dockerfile: Verifique se o
Dockerfile
está configurado corretamente:FROM fnproject/python:3.8 ADD . /function/ WORKDIR /function/ RUN pip3 install --target /function/ oci CMD ["func.py"]
-
Empurrar a Imagem Docker para o Registro da OCI:
-
Siga apartir do passo 6: Log into the Registry using the Auth Token as your password
docker login -u 'xxxxxx/[email protected]' gru.ocir.io
- Entre com a senha (passos 7)
- Construir a Imagem Docker no diretório contendo o Dockerfile,
docker build -t gru.ocir.io/<tenancy-namespace>/<registtrirepo>:tag
docker push gru.ocir.io/<tenancy-namespace>/<registtrirepo>:tag
-
Deployar a Função: Use o CLI do Fn Project para empacotar e deployar sua função na OCI:
fn -v deploy --app <app-name>
Substitua
<app-name>
pelo nome da aplicação criada na OCI.
-
Criar um API Gateway: No Console OCI, navegue para "Developer Services" > "API Gateway" e crie um novo API Gateway.
-
Criar um Deployment: Navegar até o API Gateway e selecione o API Gateway que você criou.
2.1. Criar um Deployment: Clique em "Create Deployment". Preencha os detalhes necessários:
- Name: Nome do Deployment.
- Compartment: Compartimento onde o Deployment será criado.
- Path Prefix: Prefixo de caminho para a sua API, por exemplo, /api.
- Route Type: Selecione "HTTP_BACKEND".
2.2 Configurar a Rota: Clique em "Next: Routes". Clique em "Add Route".
- Path: O caminho para a rota, por exemplo, /createTenancy.
- Methods: Selecione POST.
- Type: Selecione "Function".
- Function: Selecione a função que você acabou de deployar.
- Invocation Policy: (Opcional) Configure políticas de invocação, se necessário.
2.3 Revisar e Criar o Deployment:
- Clique em "Next" para revisar as configurações.
- Clique em "Create" para criar o Deployment.
- Testar o Endpoint: Agora que o Deployment está configurado, você pode testar a API.
Obter o Endpoint do API Gateway
- Navegue para o API Gateway e selecione o Deployment que você acabou de criar.
- Copie a URL do Deployment.
-
Chamar a API: Os dados como compartment_id, tenancy_name, tenancy_description, home_region, e admin_email que você mencionou são necessários para a criação do tenancy e devem ser fornecidos pelo usuário ao chamar a API. Eles não são gerados automaticamente; você precisa fornecer esses valores na solicitação à sua API. Use
curl
ou qualquer cliente HTTP para chamar sua API. Exemplo de Configuração de Corpo da Requisição Quando você faz a chamada à API para criar um tenancy, você deve enviar esses dados no corpo da solicitação (payload). Aqui está um exemplo de como isso pode ser feito usando curl:curl -X POST https://<api-gateway-endpoint>/<resource-path> \ -H "Content-Type: application/json" \ -d '{ "compartment_id": "ocid1.compartment.oc1..example", "tenancy_name": "NewTenancyName", "tenancy_description": "Description of the new tenancy", "home_region": "us-phoenix-1", "admin_email": "[email protected]" }'
- Configurar o ambiente local com OCI CLI e Fn CLI.
- Criar uma aplicação e função no Oracle Functions.
- Escrever e empacotar a função em Python.
- Deployar a função na OCI usando o Fn CLI.
- Configurar um API Gateway para expor a função como uma API.
- Testar a API usando
curl
ou outro cliente HTTP.
Seguindo esses passos, você terá uma API na OCI que cria tenancies utilizando Python, Oracle Functions e API Gateway.