Download Updated Frontend and Backend Code

Faça backup das pastas existentes

YAML

Copiar

cp -R challenge-day2/ challenge-day2_bkp cp -R terraform-project/ terraform-project_bkp

Limpe os arquivos de aplicação existentes, exceto o Docker e o arquivo YAML (Backend)

Shell

Copiar

cd challenge-day2/backend rm -rf $(find . -mindepth 1 -maxdepth 1 -not \( -name “.*” -o -name Dockerfile -o -name “*.yaml” \))

Limpe os arquivos de aplicação existentes, exceto o Docker e o arquivo YAML (Frontend)

Shell

Copiar

cd challenge-day2/frontend rm -rf $(find . -mindepth 1 -maxdepth 1 -not \( -name “.*” -o -name Dockerfile -o -name “*.yaml” \))

Baixe o código-fonte atualizado e descompacte-o (Backend)

YAML

Copiar

cd challenge-day2/backend wget https://tcb-public-events.s3.amazonaws.com/mdac/resources/final/clouddica-backend-final.zip unzip clouddica-backend-final.zip

Baixe o código-fonte atualizado e descompacte-o (Frontend)

YAML

Copiar

cd challenge-day2/frontend wget https://tcb-public-events.s3.amazonaws.com/mdac/resources/final/clouddica-frontend-final.zip unzip clouddica-frontend-final.zip git add -A git commit -m “final code” git push

Configuração do Google Cloud BigQuery

Siga estes passos para configurar o Google Cloud BigQuery para o CloudDica:

Criar um Projeto Google Cloud:

Acesse o Google Cloud Console (https://console.cloud.google.com/).

Clique no menu suspenso de projetos e selecione “Novo Projeto”.

Nomeie o projeto como “CloudDica” e crie-o.

Ativar a API do BigQuery:

No Google Cloud Console, vá para “APIs & Serviços” > “Painel”.

Clique em “+ ATIVAR APIS E SERVIÇOS”.

Pesquise por “BigQuery API” e ative-a.

Criar um Dataset do BigQuery:

No Google Cloud Console, vá para “BigQuery”.

No painel Explorer, clique no nome do seu projeto.

Clique em “CRIAR DATASET”.

Defina o ID do Dataset como “cloudica”.

Escolha a localização dos dados e clique em “CRIAR DATASET”.

Criar uma Tabela do BigQuery:

No dataset que você acabou de criar, clique em “CRIAR TABELA”.

Defina o nome da Tabela como “clouddica-orders”.

Defina o schema de acordo com a estrutura do seu pedido. Por exemplo:

id: STRING

items: JSON

userEmail: STRING

total: FLOAT

status: STRING

createdAt: TIMESTAMP

Clique em “CRIAR TABELA”.

Criar Conta de Serviço e Chave:

No Google Cloud Console, vá para “IAM & Admin” > “Contas de Serviço”.

Clique em “CRIAR CONTA DE SERVIÇO”.

Nomeie-a como “clouddica-bigquery-sa” e conceda a ela a função “Editor de Dados do BigQuery”.

Após criar, clique na conta de serviço, vá para a aba “Chaves” e clique em “ADICIONAR CHAVE” > “Criar nova chave”.

Escolha JSON como o tipo de chave e crie.

Salve o arquivo JSON baixado como google_credentials.json.

Configurar Função Lambda:

Navegue até o diretório raiz do seu projeto.

Entre no diretório da função Lambda:

Plain Text

Copiar

cd src/lambda/addToBigQuery

Instale as dependências necessárias:

Plain Text

Copiar

sudo yum install npm npm install

Edite o arquivo google_credentials.json neste diretório e coloque o conteúdo da sua chave.

Crie um arquivo zip de todo o diretório:

Plain Text

Copiar

zip -r dynamodb_to_bigquery.zip .

Este arquivo zip será usado ao criar ou atualizar a função Lambda.

Retorne ao diretório raiz do seu projeto:

Plain Text

Copiar

cd ../../..

Atualizar Variáveis de Ambiente da Função Lambda:

Lembre-se de nunca fazer commit do arquivo google_credentials.json para o controle de versão. Ele deve ser adicionado ao seu arquivo .gitignore.

Passos no Terraform

Remova o arquivo main.tf e crie um novo vazio

Shell

Copiar

rm main.tf nano main.tf

Adicione estas linhas de terraform ao final do arquivo main.tf para criar o Lambda para a inserção no BigQuery. Atualize os valores em vermelho primeiro.

Shell

Copiar

provider “aws” { region = “us-east-1” # Altere para sua região preferida } # Tabelas DynamoDB resource “aws_dynamodb_table” “clouddica_products” { name = “clouddica-products” billing_mode = “PAY_PER_REQUEST” hash_key = “id” attribute { name = “id” type = “S” } } resource “aws_dynamodb_table” “clouddica_orders” { name = “clouddica-orders” billing_mode = “PAY_PER_REQUEST” hash_key = “id” attribute { name = “id” type = “S” } stream_enabled = true stream_view_type = “NEW_AND_OLD_IMAGES” } resource “aws_dynamodb_table” “clouddica_tickets” { name = “clouddica-tickets” billing_mode = “PAY_PER_REQUEST” hash_key = “id” attribute { name = “id” type = “S” } } # IAM Role for Lambda function resource “aws_iam_role” “lambda_role” { name = “clouddica_lambda_role” assume_role_policy = jsonencode({ Version = “2012-10-17” Statement = [ { Action = “sts:AssumeRole” Effect = “Allow” Principal = { Service = “lambda.amazonaws.com” } } ] }) } # IAM Policy for Lambda function resource “aws_iam_role_policy” “lambda_policy” { name = “clouddica_lambda_policy” role = aws_iam_role.lambda_role.id policy = jsonencode({ Version = “2012-10-17” Statement = [ { Effect = “Allow” Action = [ “dynamodb:Scan”, “dynamodb:GetRecords”, “dynamodb:GetShardIterator”, “dynamodb:DescribeStream”, “dynamodb:ListStreams”, “logs:CreateLogGroup”, “logs:CreateLogStream”, “logs:PutLogEvents” ] Resource = [ aws_dynamodb_table.clouddica_products.arn, aws_dynamodb_table.clouddica_orders.arn, “${aws_dynamodb_table.clouddica_orders.arn}/stream/*”, aws_dynamodb_table.clouddica_tickets.arn, “arn:aws:logs:*:*:*” ] } ] }) } # Lambda function for listing products resource “aws_lambda_function” “list_products” { filename = “list_products.zip” function_name = “clouddica-list-products” role = aws_iam_role.lambda_role.arn handler = “index.handler” runtime = “nodejs20.x” source_code_hash = filebase64sha256(“list_products.zip”) environment { variables = { PRODUCTS_TABLE = aws_dynamodb_table.clouddica_products.name } } } # Lambda permission for Bedrock resource “aws_lambda_permission” “allow_bedrock” { statement_id = “AllowBedrockInvoke” action = “lambda:InvokeFunction” function_name = aws_lambda_function.list_products.function_name principal = “bedrock.amazonaws.com” } # Output the ARN of the Lambda function output “list_products_function_arn” { value = aws_lambda_function.list_products.arn } # Lambda function for DynamoDB to BigQuery resource “aws_lambda_function” “dynamodb_to_bigquery” { filename = “../challenge-day2/backend/src/lambda/addToBigQuery/dynamodb_to_bigquery.zip” function_name = “clouddica-dynamodb-to-bigquery” role = aws_iam_role.lambda_role.arn handler = “index.handler” runtime = “nodejs20.x” source_code_hash = filebase64sha256(“../challenge-day2/backend/src/lambda/addToBigQuery/dynamodb_to_bigquery.zip”) environment { variables = { GOOGLE_CLOUD_PROJECT_ID = “lustrous-bounty-436219-f1” BIGQUERY_DATASET_ID = “clouddica” BIGQUERY_TABLE_ID = “clouddica-orders” GOOGLE_APPLICATION_CREDENTIALS = “/var/task/google_credentials.json” } } } # Lambda event source mapping for DynamoDB stream resource “aws_lambda_event_source_mapping” “dynamodb_stream” { event_source_arn = aws_dynamodb_table.clouddica_orders.stream_arn function_name = aws_lambda_function.dynamodb_to_bigquery.arn starting_position = “LATEST” }

Execute terraform apply now

Configuração do Azure Text Analytics

Siga estes passos para configurar o Azure Text Analytics para análise de sentimento:

Criar uma Conta Azure:

Acesse o portal Azure (https://portal.azure.com/).

Faça login ou crie uma nova conta se não tiver uma.

Criar um Recurso:

No portal Azure, clique em “Create a resource”.

Pesquise por “Text Analytics” e selecione.

Clique em “Create”.

Configurar o Recurso:

Escolha sua assinatura e grupo de recursos (crie um novo se necessário).

Nomeie o recurso (ex: “clouddica-text-analytics”).

Escolha sua região e nível de preço.

Clique em “Review + create”, depois “Create”.

Obter o Endpoint e a Chave:

Quando o recurso for criado, vá para a página de visão geral.

No menu à esquerda, em “Resource Management”, clique em “Keys and Endpoint”.

Copie a URL do endpoint e uma das chaves.

Implante as alterações no Backend

Abra o arquivo clouddica-backend.yaml:

Shell

Copiar

nano clouddica-backend.yaml

Conteúdo do clouddica-backend.yaml:

YAML

Copiar

apiVersion: apps/v1 kind: Deployment metadata: name: clouddica-backend-app spec: replicas: 1 selector: matchLabels: app: clouddica-backend-app template: metadata: labels: app: clouddica-backend-app spec: serviceAccountName: clouddica-pod-execution-role containers: – name: clouddica-backend-app image: public.ecr.aws/l4c0j8h9/cloudmaster-backend:latest env: – name: PORT value: “5000” – name: AWS_REGION value: “us-east-1” – name: BEDROCK_AGENT_ID value: “xxxx” – name: BEDROCK_AGENT_ALIAS_ID value: “xxxx” – name: OPENAI_API_KEY value: “xxxx” – name: OPENAI_ASSISTANT_ID value: “xxxx” – name: AZURE_ENDPOINT value: “xxxx” – name: AZURE_API_KEY value: “xxxx” — apiVersion: v1 kind: Service metadata: name: clouddica-backend-app-service spec: type: LoadBalancer selector: app: clouddica-backend-app ports: – protocol: TCP port: 5000 targetPort: 5000

Construa uma nova imagem

YAML

Copiar

<Siga passos do ECR>

Atualize o deployment no Kubernetes

JSON

Copiar

kubectl apply -f clouddica-backend.yaml

Categorias: Tecnologia

0 comentário

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.