Skip to content

passoszup/tenancychilden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pré-requisites: Compartment, vcn e subnet container registry.

Passo 1: Configurar o Ambiente Local

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

Passo 2: Criar e Configurar uma Oracle Function

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

  2. Criar uma Aplicação de Oracle Functions: No Console OCI, navegue para "Developer Services" > "Functions" e crie uma nova aplicação.

  3. 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
  4. 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})
  5. 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"]
  6. Empurrar a Imagem Docker para o Registro da OCI:

  7. 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
  1. Entre com a senha (passos 7)
  2. 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
  1. 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.

Passo 3: Configurar o API Gateway

  1. Criar um API Gateway: No Console OCI, navegue para "Developer Services" > "API Gateway" e crie um novo API Gateway.

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

Passo 4: Testar a API

  1. 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]"
        }'

Resumo dos Passos

  1. Configurar o ambiente local com OCI CLI e Fn CLI.
  2. Criar uma aplicação e função no Oracle Functions.
  3. Escrever e empacotar a função em Python.
  4. Deployar a função na OCI usando o Fn CLI.
  5. Configurar um API Gateway para expor a função como uma API.
  6. 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.

About

repo for function and api gateway

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published