

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Automatizza l'implementazione dei Catena di approvvigionamento di AWS data lake in una configurazione multi-repository utilizzando GitHub Actions, Artifactory e Terraform
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes"></a>

*Keshav Ganesh, Amazon Web Services*

## Riepilogo
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-summary"></a>

Questo modello fornisce un approccio automatizzato per l'implementazione e la gestione Catena di approvvigionamento di AWS dei data lake utilizzando funzionalità di integrazione continua multirepository e distribuzione continua (). CI/CD) pipeline. It demonstrates two deployment methods: automated deployment using GitHub Actions workflows, or manual deployment using Terraform directly. Both approaches use Terraform for infrastructure as code (IaC), with the automated method adding GitHub Actions and JFrog Artifactory for enhanced CI/CD

La soluzione sfrutta Catena di approvvigionamento di AWS Amazon Simple Storage Service (Amazon S3) per stabilire l'infrastruttura del data lake, utilizzando entrambi i metodi di distribuzione per automatizzare la configurazione e la creazione di risorse. AWS Lambda Questa automazione elimina le fasi di configurazione manuali e garantisce implementazioni coerenti in tutti gli ambienti. Inoltre, Catena di approvvigionamento di AWS elimina la necessità di competenze approfondite in materia di estrazione, trasformazione e caricamento (ETL) e può fornire approfondimenti e analisi basati su Amazon Quick Sight.

Implementando questo modello, le organizzazioni possono ridurre i tempi di implementazione, mantenere l'infrastruttura come codice e gestire i data lake della catena di fornitura attraverso un processo automatizzato e controllato dalla versione. L'approccio multirepository fornisce un controllo granulare degli accessi e supporta l'implementazione indipendente di diversi componenti. I team possono scegliere il metodo di implementazione più adatto agli strumenti e ai processi esistenti.

## Prerequisiti e limitazioni
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs"></a>

**Prerequisiti**

Assicurati che sul tuo computer locale sia installato quanto segue:
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versione 2
+ [GitHub CLI](https://docs.github.com/en/get-started/git-basics/set-up-git)
+ [Python v3.13](https://www.python.org/downloads/)
+ [Terraform v1.12](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) o versione successiva

Assicurati che siano presenti le seguenti condizioni prima della distribuzione:
+ Un attivo Account AWS.
+ Un [cloud privato virtuale (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) con due [sottoreti private](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) Account AWS a tua scelta. Regione AWS 
+ Autorizzazioni sufficienti per il ruolo AWS Identity and Access Management (IAM) utilizzato per l'implementazione nei seguenti servizi:
  + Catena di approvvigionamento di AWS — Accesso completo preferito per l'implementazione dei relativi componenti, come set di dati e flussi di integrazione, oltre ad accedervi da. Console di gestione AWS
  + Amazon CloudWatch Logs: per creare e gestire gruppi di CloudWatch log.
  + Amazon Elastic Compute Cloud (Amazon EC2) — Per i gruppi di sicurezza Amazon EC2 e gli endpoint Amazon Virtual Private Cloud (Amazon VPC).
  + Amazon EventBridge : destinato all'uso da Catena di approvvigionamento di AWS.
  + IAM: per creare ruoli AWS Lambda di servizio.
  + AWS Key Management Service (AWS KMS) — Per accedere al bucket AWS KMS keys utilizzato per il bucket di artefatti Amazon S3 e il bucket di staging Amazon S3. Catena di approvvigionamento di AWS 
  + AWS Lambda — Per creare le funzioni Lambda che distribuiscono i componenti. Catena di approvvigionamento di AWS 
  + Amazon S3: per accedere al bucket di artefatti Amazon S3, al bucket di registrazione degli accessi al server e al bucket di staging. Catena di approvvigionamento di AWS Se utilizzi la distribuzione manuale, sono necessarie anche le autorizzazioni per il bucket di artefatti Amazon S3 Terraform.
  + Amazon VPC: per creare e gestire un VPC.

Se preferisci utilizzare i flussi di lavoro GitHub Actions per la distribuzione, procedi come segue:
+ Configura [OpenID Connect (OIDC)](https://docs.github.com/en/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws#configuring-the-role-and-trust-policy) per il ruolo IAM con le autorizzazioni menzionate in precedenza.
+ Crea un ruolo IAM con autorizzazioni simili per accedere a. Console di gestione AWS Per ulteriori informazioni, consulta [Creare un ruolo per concedere le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella documentazione IAM.

Se preferisci eseguire una distribuzione manuale, procedi come segue:
+ Crea un utente IAM che assuma il ruolo IAM con le autorizzazioni menzionate in precedenza. Per ulteriori informazioni, consulta [Creare un ruolo per concedere le autorizzazioni a un utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella documentazione IAM.
+ [Assumi il ruolo](https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-role.html) nel tuo terminale locale.

Se preferisci utilizzare i flussi di lavoro di GitHub Actions per la distribuzione, configura quanto segue:
+ Un [account JFrog Artifactory](https://jfrog.com/artifactory/?utm_source=google&utm_medium=cpc_search&utm_campaign=SearchDSKBrandAPACIN202506&utm_term=jfrog%20cloud&gads_network=g&utm_content=u-bin&gads_campaign_id=22674833884&gads_adgroup_id=184501797241&gads_extension_id=233003714635&gads_target_id=aud-312135645780:kwd-1598615735032&gads_matchtype=b&gad_source=1&gad_campaignid=22674833884&gbraid=0AAAAADqV85U5B37iapTR9IIFHBvydF5AQ&gclid=CjwKCAjwiY_GBhBEEiwAFaghvqdNV-odNLZXPHjT7NAwf8lA-QuMtg666hgvDW1oCJ4nn7wvf869_xoCW4IQAvD_BwE) per ottenere il nome host, il nome utente di accesso e il token di accesso di accesso.
+ Una [chiave di JFrog progetto e un archivio](https://jfrog.com/help/r/jfrog-platform-administration-documentation/step-1-set-up-a-new-project) per archiviare gli artefatti.

**Limitazioni**
+ L' Catena di approvvigionamento di AWS istanza non supporta tecniche complesse di trasformazione dei dati.
+ Catena di approvvigionamento di AWS è più adatto per i domini della catena di fornitura perché fornisce analisi e approfondimenti integrati. Per qualsiasi altro dominio, Catena di approvvigionamento di AWS può essere utilizzato come archivio dati come parte dell'architettura del data lake.
+ Potrebbe essere necessario migliorare le funzioni Lambda utilizzate in questa soluzione per gestire i tentativi di API e la gestione della memoria in un'implementazione su scala di produzione.
+ Alcune Servizi AWS non sono disponibili in tutte. Regioni AWS Per informazioni sulla disponibilità per regione, consulta [AWS Servizi per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Endpoints and quotas del servizio](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-architecture"></a>

Puoi implementare questa soluzione utilizzando i flussi di lavoro GitHub Actions automatizzati o manualmente utilizzando Terraform.

**Distribuzione automatizzata con Actions GitHub **

Il diagramma seguente mostra l'opzione di distribuzione automatizzata che utilizza i flussi di lavoro GitHub Actions. JFrog Artifactory viene utilizzato per la gestione degli artefatti. Memorizza le informazioni sulle risorse e gli output per l'uso in una distribuzione multirepository.

![\[Opzione di distribuzione automatizzata che utilizza i flussi di lavoro GitHub Actions e. JFrog\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/d454a5c5-ed51-421c-a87f-ff74cfcb30be.png)


**Distribuzione manuale con Terraform**

Il diagramma seguente mostra l'opzione di distribuzione manuale tramite Terraform. Invece di JFrog Artifactory, Amazon S3 viene utilizzato per la gestione degli artefatti.

![\[Opzione di distribuzione manuale con Terraform e Amazon S3.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/2f0b78b0-a174-4703-b533-d66b3fb005e0/images/1130e728-44d5-4ae7-9586-1e497f54352a.png)


**Workflow di implementazione**

I diagrammi mostrano il seguente flusso di lavoro:

1. Distribuisci l'infrastruttura e i database dei set di dati dei Catena di approvvigionamento di AWS servizi utilizzando uno dei seguenti metodi di distribuzione:
   + **Distribuzione automatizzata**: utilizza i flussi di lavoro di GitHub Actions per orchestrare tutte le fasi di distribuzione e utilizza JFrog Artifactory per la gestione degli artefatti.
   + **Distribuzione manuale**: esegue i comandi Terraform direttamente per ogni fase di distribuzione e utilizza Amazon S3 per la gestione degli artefatti.

1. Crea le AWS risorse di supporto necessarie per il funzionamento del servizio: Catena di approvvigionamento di AWS 
   + Endpoint e gruppi di sicurezza Amazon VPC
   + AWS KMS keys
   + CloudWatch Registra i gruppi di log

1. Crea e distribuisci le seguenti risorse di infrastruttura:
   + Funzioni Lambda che gestiscono (creano, aggiornano ed eliminano) l'istanza del Catena di approvvigionamento di AWS servizio, i namespace e i set di dati.
   + Catena di approvvigionamento di AWS gestione temporanea del bucket Amazon S3 per l'inserimento di dati

1. Implementa la funzione Lambda che gestisce i flussi di integrazione tra lo staging bucket e i set di dati. Catena di approvvigionamento di AWS Una volta completata l'implementazione, le fasi rimanenti del flusso di lavoro gestiscono l'inserimento e l'analisi dei dati.

1. Configura l'inserimento dei dati di origine nel bucket di Catena di approvvigionamento di AWS staging Amazon S3.

1. Dopo aver aggiunto i dati al bucket Catena di approvvigionamento di AWS di staging Amazon S3, il servizio attiva automaticamente il flusso di integrazione nei set di dati. Catena di approvvigionamento di AWS 

1. Catena di approvvigionamento di AWS si integra con Quick Sight Analytics per produrre dashboard basate sui dati acquisiti.

## Tools (Strumenti)
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-tools"></a>

**Servizi AWS**
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) ti aiuta a centralizzare i log di tutti i tuoi sistemi e applicazioni, Servizi AWS così puoi monitorarli e archiviarli in modo sicuro.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) è uno strumento open source che ti aiuta a interagire Servizi AWS tramite comandi nella shell della riga di comando.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornisce capacità di calcolo scalabile nel Cloud AWS. Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, AWS Lambda funzioni, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altro modo. Account AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)ti aiuta a gestire centralmente l'accesso Single Sign-On (SSO) a tutte le tue applicazioni e a quelle sul cloud. Account AWS 
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Q](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) in Catena di approvvigionamento di AWS è un assistente AI generativo interattivo che ti aiuta a gestire la catena di approvvigionamento in modo più efficiente analizzando i dati nel tuo Catena di approvvigionamento di AWS data lake.
+ [Amazon Quick Sight](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) è un servizio di business intelligence (BI) su scala cloud che ti aiuta a visualizzare, analizzare e generare report sui dati in un'unica dashboard.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [Catena di approvvigionamento di AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)è un'applicazione gestita basata sul cloud che può essere utilizzata come archivio dati nelle organizzazioni per i domini della catena di fornitura, che può essere utilizzata per generare approfondimenti ed eseguire analisi sui dati acquisiti.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) ti aiuta a lanciare AWS risorse in una rete virtuale che hai definito. Questa rete virtuale è simile a una comune rete da gestire all'interno del proprio data center, ma con i vantaggi dell'infrastruttura scalabile di AWS. Un [endpoint Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) è un dispositivo virtuale che ti aiuta a connettere privatamente il tuo VPC a Supported Servizi AWS senza richiedere un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione. AWS Direct Connect 

**Altri strumenti**
+ [GitHub Actions](https://docs.github.com/en/actions) è una piattaforma di integrazione e distribuzione continua (CI/CD) strettamente integrata con i repository. GitHub Puoi utilizzare GitHub Actions per automatizzare la pipeline di compilazione, test e distribuzione.
+ [HashiCorp Terraform](https://www.terraform.io/) è uno strumento di infrastruttura come codice (IaC) che ti aiuta a creare e gestire risorse cloud e locali.
+ [JFrog Artifactory](https://jfrog.com/help/r/jfrog-artifactory-documentation/jfrog-artifactory) fornisce l' end-to-endautomazione e la gestione di file binari e artefatti attraverso il processo di distribuzione delle applicazioni.
+ [Python](https://www.python.org/) è un linguaggio di programmazione per computer generico. Questo modello utilizza Python con cui il codice della AWS funzione può interagire Catena di approvvigionamento di AWS

  .

## Best practice
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-best-practices"></a>
+ Mantieni la massima sicurezza possibile durante l'implementazione di questo modello. Come indicato in [Prerequisiti](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs), assicurati che un [cloud privato virtuale (VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)) con [due sottoreti private](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html) sia presente nel Account AWS Regione AWS tuo computer di tua scelta.
+ Utilizza [le chiavi gestite AWS KMS dal cliente](https://docs.aws.amazon.com/kms/latest/cryptographic-details/basic-concepts.html) laddove possibile e concedi loro autorizzazioni di accesso limitate.
+ Per configurare i ruoli IAM con il minimo accesso richiesto per l'acquisizione dei dati per questo pattern, consulta [Secure Data Ingestion from Source Systems to Amazon S3](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main?tab=readme-ov-file#secure-data-ingestion-from-source-systems-to-amazon-s3) nel repository di questo pattern.

## Epiche
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-epics"></a>

### (Entrambe le opzioni) Configura una workstation locale
<a name="both-options-set-up-local-workstation"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clonare il repository. | Per clonare il repository di questo pattern, esegui il seguente comando nella tua workstation locale:<pre>git clone https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment.git<br />cd ASC-Deployment</pre> | AWS DevOps | 
| (Opzione automatizzata) Verifica i prerequisiti per la distribuzione. | Assicurati che i [prerequisiti](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs) per la distribuzione automatizzata siano completi. | Proprietario dell'app | 
| (Opzione manuale) Preparati per la distribuzione dei Catena di approvvigionamento di AWS set di dati. | Per accedere alla `terraform-deployment` directory di`ASC-Datasets`, esegui il seguente comando:<pre>cd ASC-Datasets/terraform-deployment</pre>Per assumere il ruolo ARN creato nei [Prerequisiti](#automate-the-deployment-of-aws-supply-chain-data-lakes-prereqs), esegui il comando seguente:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Per configurare ed esportare le variabili di ambiente, esegui i seguenti comandi:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Datasets dir name><br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export AWS_USER_ROLE=<Enter user role ARN for AWS Console access and deployment><br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | AWS DevOps | 
| (Opzione manuale) Preparati a gestire i flussi di Catena di approvvigionamento di AWS integrazione durante la distribuzione. | Per accedere alla `terraform-deployment` directory di`ASC-Integration-Flows`, esegui il seguente comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre>Per assumere il ruolo ARN creato in precedenza, esegui il seguente comando:<pre>aws sts assume-role --role-arn <enter AWS user role ARN> --role-session-name <your-session-name></pre>Per configurare ed esportare le variabili di ambiente, esegui i seguenti comandi:<pre># Export Environment variables<br />export REGION=<Enter deployment region><br />export REPO_NAME=<Enter Current ASC Integration Flows dir name><br />export ASC_DATASET_VARS_REPO=<Enter Current ASC Datasets dir name>  #Must be the same directory name used for ASC Datasets deployment<br />export PROJECT_NAME="asc-deployment-poc"<br />export ACCOUNT_ID=<Enter deployment Account ID><br />export ENVIRONMENT="dev"<br />export LAMBDA_LAYER_TEMP_DIR_TERRAFORM="layerOutput"<br />export LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM="lambdaOutput"<br />export S3_TERRAFORM_ARTIFACTS_BUCKET_NAME="$PROJECT_NAME-$ACCOUNT_ID-$REGION-terraform-artifacts-$ENVIRONMENT"</pre> | Proprietario dell'app | 

### (Opzione automatizzata) Distribuisci Catena di approvvigionamento di AWS set di dati utilizzando GitHub i flussi di lavoro Actions
<a name="automated-option-deploy-supplychain-datasets-using-github-actions-workflows"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Copia la `ASC-Datasets` cartella. | Per copiare la `ASC-Datasets` directory in una nuova posizione, procedi nel seguente modo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configura la `ASC-Datasets` directory. | Per configurarlo `ASC-Datasets` come repository autonomo nell'organizzazione, esegui i seguenti comandi:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Datasets standalone repository"<br />git remote add origin <INSERT_ASC_DATASETS_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configura il nome del ramo nel file di workflow .github. | Imposta il nome del ramo nel file del flusso di lavoro di [distribuzione](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/asc-datasets.yml) come mostrato nell'esempio seguente:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Proprietario dell'app | 
| Configura GitHub gli ambienti e configura i valori dell'ambiente. | Per configurare GitHub gli ambienti nella propria GitHub organizzazione, utilizzare le istruzioni in [Configurazione GitHub degli ambienti](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-github-environments) nell'archivio di questo modello.Per configurare [i valori di ambiente](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) nei file del flusso di lavoro, utilizzate le istruzioni in [Configurazione dei valori di ambiente nei file di flusso di lavoro](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Datasets#setup-environment-values-in-the-workflow-files) nel repository di questo pattern. | Proprietario dell'app | 
| Attiva il flusso di lavoro. | Per inviare le modifiche all' GitHub organizzazione e attivare il flusso di lavoro di distribuzione, esegui il comando seguente:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Opzione automatizzata) Distribuisci flussi di Catena di approvvigionamento di AWS integrazione utilizzando i flussi di lavoro GitHub Actions
<a name="automated-option-deploy-supplychain-integration-flows-using-github-actions-workflows"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Copia la `ASC-Integration-Flows` cartella. | Per copiare la `ASC-Integration-Flows` directory in una nuova posizione, procedi nel seguente modo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | AWS DevOps | 
| Configura la `ASC-Integration-Flows` directory. | Per configurare la `ASC-Integration-Flows` directory come archivio autonomo nell'organizzazione, esegui i seguenti comandi:<pre>git init<br />git add .<br />git commit -m "Initial commit: ASC-Integration-Flows standalone repository"<br />git remote add origin <INSERT_ASC_Integration_Flows_GITHUB_URL><br />git branch -M dev</pre> | AWS DevOps | 
| Configura il nome del ramo nel file di workflow .github. | Imposta il nome del ramo nel file del flusso di lavoro di [distribuzione](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/asc-integration-flows.yml) come mostrato nell'esempio seguente:<pre>   on:<br />     workflow_dispatch:<br />     push:<br />       branches:<br />         - dev     #Change to any other branch preferred for deployment</pre> | Proprietario dell'app | 
| Configura GitHub gli ambienti e configura i valori dell'ambiente. | Per configurare GitHub gli ambienti nella propria GitHub organizzazione, utilizzare le istruzioni in [Configurazione GitHub degli ambienti](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) nell'archivio di questo modello.Per configurare [i valori di ambiente](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-github-environments) nei file del flusso di lavoro, utilizzate le istruzioni in [Configurazione dei valori di ambiente nei file di flusso di lavoro](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/tree/main/ASC-Integration-Flows#setup-environment-values-in-the-workflow-files) nel repository di questo pattern. | Proprietario dell'app | 
| Attiva il flusso di lavoro. | Per inviare le modifiche all' GitHub organizzazione e attivare il flusso di lavoro di distribuzione, esegui il comando seguente:<pre>git push -u origin dev</pre> | AWS DevOps | 

### (Opzione manuale) Distribuisci Catena di approvvigionamento di AWS set di dati utilizzando Terraform
<a name="manual-option-deploy-supplychain-datasets-using-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Passa alla directory `terraform-deployment `. | Per accedere alla `terraform-deployment` directory di`ASC-Datasets`, esegui il seguente comando:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configura il bucket Amazon S3 dello stato Terraform. | Per configurare il bucket Amazon S3 dello stato Terraform, usa lo script seguente:<pre># Setup terraform bucket<br />chmod +x ../scripts/setup-terraform.sh<br />../scripts/setup-terraform.sh</pre> | AWS DevOps | 
| Configura il bucket Terraform Artifacts Amazon S3. | Per configurare il bucket Terraform Artifacts Amazon S3, usa lo script seguente:<pre># Setup terraform artifacts bucket<br />chmod +x ../scripts/setup-terraform-artifacts-bucket.sh<br />../scripts/setup-terraform-artifacts-bucket.sh</pre> | AWS DevOps | 
| Configura il backend Terraform e la configurazione dei provider. | Per configurare il backend Terraform e la configurazione dei provider, utilizza il seguente script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Genera un piano di distribuzione. | Per generare un piano di distribuzione, esegui i seguenti comandi:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Implementa le configurazioni. | Per distribuire le configurazioni, esegui il comando seguente:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Aggiorna altre configurazioni e archivia gli output. | Per aggiornare le politiche AWS KMS chiave e archiviare gli output delle configurazioni applicate nel bucket Terraform Artifacts Amazon S3, esegui i seguenti comandi:<pre># Update AWS Supply Chain KMS Key policy with the service's requirements<br />chmod +x ../scripts/update-asc-kms-policy.sh<br />../scripts/update-asc-kms-policy.sh<br /></pre><pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy.sh<br />../scripts/update-kms-policy.sh<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Opzione manuale) Distribuisci i flussi Catena di approvvigionamento di AWS di integrazione dei servizi utilizzando Terraform
<a name="manual-option-deploy-supplychain-service-integration-flows-using-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Passa alla directory `terraform-deployment`. | Per accedere alla `terraform-deployment` directory di`ASC-Integration-Flows`, esegui il seguente comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configura il backend Terraform e la configurazione dei provider. | Per configurare il backend Terraform e le configurazioni del provider, utilizza il seguente script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Genera un piano di distribuzione. | Per generare un piano di distribuzione, esegui i comandi seguenti. Questi comandi inizializzano l'ambiente Terraform, uniscono le variabili di configurazione `ASC-Datasets` con le configurazioni Terraform esistenti e generano un piano di implementazione.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan \<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Implementa le configurazioni. | Per distribuire le configurazioni, esegui il comando seguente:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Aggiorna altre configurazioni. | Per aggiornare le politiche AWS KMS chiave e archiviare gli output delle configurazioni applicate nel bucket Terraform Artifacts Amazon S3, esegui i seguenti comandi:<pre># Update AWS KMS Keys' policy with IAM roles<br />chmod +x ../scripts/update-kms-policy-through-s3.sh<br />../scripts/update-kms-policy-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Create terraform outputs file to be used as input variables<br />terraform output -json > raw_output.json<br />jq -r 'to_entries | map(<br />  if .value.type == "string" then<br />      "\(.key) = \"\(.value.value)\""<br />  else<br />      "\(.key) = \(.value.value | tojson)"<br />  end<br />) | .[]' raw_output.json > $REPO_NAME-outputs.tfvars<br /></pre><pre># Upload reformed outputs file to Amazon S3 terraform artifacts bucket (For retrieval from other repositories)<br />aws s3 cp $REPO_NAME-outputs.tfvars s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars<br />rm -f raw_output.json<br />rm -f $REPO_NAME-outputs.tfvars<br /></pre> | AWS DevOps | 

### (Entrambe le opzioni) Inserisci dati
<a name="both-options-ingest-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Carica file CSV di esempio. | Per caricare file CSV di esempio per i set di dati, procedi nel seguente modo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Ingegnere dei dati | 

### (Entrambe le opzioni) Configura Catena di approvvigionamento di AWS l'accesso
<a name="both-options-set-up-supplychain-access"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura Catena di approvvigionamento di AWS l'accesso. | Per configurare Catena di approvvigionamento di AWS l'accesso da Console di gestione AWS, procedi nel seguente modo:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | Proprietario dell'app | 

### (Opzione automatizzata) Pulisci tutte le risorse utilizzando i flussi di lavoro GitHub Actions
<a name="automated-option-clean-up-all-resources-using-github-actions-workflows"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Attiva il flusso di lavoro Destroy per le risorse dei flussi di integrazione. | Attiva il [flusso di lavoro di distruzione](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/.github/workflows/destroy-workflow.yml) `ASC-Integration-Flows` dal tuo ramo di distribuzione GitHub all'interno dell'organizzazione. | AWS DevOps | 
| Attiva il flusso di lavoro di distruzione delle risorse dei set di dati. | Attiva il [flusso di lavoro di distruzione](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/.github/workflows/destroy-workflow.yml) `ASC-Datasets` dal tuo ramo di distribuzione all'interno GitHub dell'organizzazione. | AWS DevOps | 

### (Opzione manuale) Pulisci le risorse dai flussi di Catena di approvvigionamento di AWS integrazione utilizzando Terraform
<a name="manual-option-clean-up-resources-of-supplychain-integration-flows-using-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Passa alla directory `terraform-deployment`. | Per accedere alla `terraform-deployment` directory di`ASC-Integration-Flows`, esegui il seguente comando:<pre>cd ASC-Integration-Flows/terraform-deployment</pre> | AWS DevOps | 
| Configura il backend Terraform e la configurazione dei provider. | Per configurare il backend Terraform e la configurazione dei provider, utilizza il seguente script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Genera un piano di distruzione dell'infrastruttura. | Per prepararti alla distruzione controllata dell' AWS infrastruttura generando un piano di smontaggio dettagliato, esegui i seguenti comandi. Il processo inizializza Terraform, incorpora le configurazioni Catena di approvvigionamento di AWS dei set di dati e crea un piano di distruzione che è possibile esaminare prima dell'esecuzione.<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /></pre><pre># Download and merge ASC DATASET tfvars<br />chmod +x ../scripts/download-vars-through-s3.sh<br />../scripts/download-vars-through-s3.sh $ASC_DATASET_VARS_REPO<br /></pre><pre># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Esegui un piano di distruzione dell'infrastruttura. | Per eseguire la distruzione pianificata dell'infrastruttura, esegui il seguente comando:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Rimuovi gli output Terraform dal bucket Amazon S3. | Per rimuovere il file di output che è stato caricato durante la distribuzione di`ASC-Integration-Flows`, esegui il seguente comando:<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

### (Opzione manuale) Pulisci le risorse dei set di dati di Catena di approvvigionamento di AWS servizio utilizzando Terraform
<a name="manual-option-clean-up-resources-of-supplychain-service-datasets-using-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Passa alla directory `terraform-deployment`. | Per accedere alla `terraform-deployment` directory di`ASC-Datasets`, esegui il seguente comando:<pre>cd ASC-Datasets/terraform-deployment</pre> | AWS DevOps | 
| Configura il backend Terraform e la configurazione dei provider. | Per configurare il backend Terraform e la configurazione dei provider, utilizza il seguente script:<pre># Setup terraform backend and providers config if they don't exist<br />chmod +x ../scripts/generate-terraform-config.sh<br />../scripts/generate-terraform-config.sh</pre> | AWS DevOps | 
| Genera un piano di distruzione dell'infrastruttura. | Per creare un piano per la distruzione delle risorse del Catena di approvvigionamento di AWS set di dati, esegui i seguenti comandi:<pre># Run terraform init and validate<br />terraform init<br />terraform validate<br /><br /># Run terraform plan<br />terraform plan -destroy\<br />-var-file="tfInputs/$ENVIRONMENT.tfvars" \<br />-var="project_name=$PROJECT_NAME" \<br />-var="environment=$ENVIRONMENT" \<br />-var="user_role=$AWS_USER_ROLE" \<br />-var="lambda_temp_dir=$LAMBDA_FUNCTION_TEMP_DIR_TERRAFORM" \<br />-var="layer_temp_dir=$LAMBDA_LAYER_TEMP_DIR_TERRAFORM" \<br />-parallelism=40 \<br />-out='tfplan.out'</pre> | AWS DevOps | 
| Bucket Amazon S3 vuoti. | Per svuotare tutti i bucket Amazon S3 (tranne il bucket di registrazione degli accessi al server, che è configurato per`force-destroy`), usa lo script seguente:<pre># Delete S3 buckets excluding server access logging bucket<br />chmod +x ../scripts/empty-s3-buckets.sh<br />../scripts/empty-s3-buckets.sh tfplan.out</pre> | AWS DevOps | 
| Esegui un piano di distruzione dell'infrastruttura. | Per eseguire la distruzione pianificata dell'infrastruttura del Catena di approvvigionamento di AWS set di dati utilizzando il piano generato, esegui il comando seguente:<pre># Run terraform apply<br />terraform apply tfplan.out</pre> | AWS DevOps | 
| Rimuovi gli output Terraform dal bucket di artefatti Terraform di Amazon S3. | Per completare il processo di pulizia, rimuovi il file di output che è stato caricato durante la distribuzione di eseguendo il comando seguente: `ASC-Datasets`<pre># Delete the outputs file<br />aws s3 rm s3://$S3_TERRAFORM_ARTIFACTS_BUCKET_NAME/$REPO_NAME-outputs.tfvars</pre> | AWS DevOps | 

## Risoluzione dei problemi
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Un Catena di approvvigionamento di AWS set di dati o un flusso di integrazione non è stato distribuito correttamente a causa di errori Catena di approvvigionamento di AWS interni o autorizzazioni IAM insufficienti per il ruolo di servizio. | Innanzitutto, pulisci tutte le risorse. [Quindi, ridistribuisci le risorse del Catena di approvvigionamento di AWS[set di dati e quindi ridistribuisci le risorse](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Datasets/README.md) del flusso di integrazione. Catena di approvvigionamento di AWS](https://github.com/aws-samples/sample-automate-aws-supply-chain-deployment/blob/main/ASC-Integration-Flows/README.md) | 
| Il flusso di Catena di approvvigionamento di AWS integrazione non recupera i nuovi file di dati caricati per i set di dati. Catena di approvvigionamento di AWS  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/automate-the-deployment-of-aws-supply-chain-data-lakes.html) | 

## Risorse correlate
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-resources"></a>

**AWS documentazione**
+ [Catena di approvvigionamento di AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/adminguide/getting-started.html)

**Altre risorse**
+ [Comprensione dei flussi di lavoro di GitHub Actions](https://docs.github.com/en/actions/get-started/understand-github-actions) (GitHub documentazione)

## Informazioni aggiuntive
<a name="automate-the-deployment-of-aws-supply-chain-data-lakes-additional"></a>

Questa soluzione può essere replicata per più set di dati e può essere interrogata per ulteriori analisi, tramite dashboard predefiniti forniti o integrazione Catena di approvvigionamento di AWS personalizzata con Amazon Quick Sight. Inoltre, puoi utilizzare Amazon Q per porre domande relative alla tua Catena di approvvigionamento di AWS istanza.

**Analizza i dati con Catena di approvvigionamento di AWS Analytics**

Per istruzioni su come configurare Catena di approvvigionamento di AWS Analytics, consulta [Impostazione di Catena di approvvigionamento di AWS Analytics](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/setting_analytics.html) nella Catena di approvvigionamento di AWS documentazione.

Questo modello ha dimostrato la creazione di set di dati **Calendar** e **Outbound\$1Order\$1Line**. Per creare un'analisi che utilizzi questi set di dati, procedi nel seguente modo:

1. Per analizzare i set di dati, utilizza la dashboard di **Seasonality** Analysis. Per aggiungere la dashboard, segui i passaggi in [Dashboard predefiniti](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/prebuilt_dashboards.html) nella documentazione. Catena di approvvigionamento di AWS 

1. Scegli la dashboard per visualizzarne l'analisi basata su file CSV di esempio per i dati del calendario e i dati della linea degli ordini in uscita.

La dashboard fornisce informazioni sulla domanda nel corso degli anni sulla base dei dati acquisiti per i set di dati. È possibile specificare ulteriormente ProductID, CustomerId, years e altri parametri per l'analisi.

**Usa Amazon Q per porre domande relative alla tua Catena di approvvigionamento di AWS istanza**

[Amazon Q in Catena di approvvigionamento di AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/qinasc.html) è un assistente AI generativo interattivo che ti aiuta a gestire la catena di approvvigionamento in modo più efficiente. Amazon Q può fare quanto segue:
+ Analizza i dati nel tuo Catena di approvvigionamento di AWS data lake.
+ Fornisci informazioni operative e finanziarie.
+ Rispondi alle tue domande immediate sulla catena di fornitura.

Per ulteriori informazioni sull'uso di Amazon Q, consulta la sezione [Attivazione di Amazon Q in Catena di approvvigionamento di AWS](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/enabling_QinASC.html) [e Uso](https://docs.aws.amazon.com/aws-supply-chain/latest/userguide/using_QinASC.html) di Amazon Q Catena di approvvigionamento di AWS nella Catena di approvvigionamento di AWS documentazione.