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
0 comentário