

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

# Consolida la generazione di URL predefiniti di Amazon S3 e il download di oggetti utilizzando un endpoint associato a indirizzi IP statici
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses"></a>

*Song Jin, Eunhye Jo e Jun Soung Lee, Amazon Web Services*

## Riepilogo
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-summary"></a>

Questo modello semplifica l'accesso ad Amazon Simple Storage Service (Amazon S3) creando file predefiniti sicuri e personalizzati per il download di oggetti. URLs La soluzione fornisce un singolo endpoint con un dominio unico e indirizzi IP statici. È personalizzato per i clienti che richiedono il consolidamento degli endpoint API e Amazon S3 in un dominio unificato con indirizzi IP statici. Il caso d'uso prevede che gli utenti seguano una politica firewall con elenchi di indirizzi IP e domini consentiti, limitando l'accesso delle API a domini e indirizzi IP specifici. 

L'architettura utilizza chiavi Servizi AWS, tra cui AWS Global Accelerator Amazon API Gateway AWS Lambda, Application Load Balancer AWS PrivateLink e Amazon S3. Questo design centralizza l'API per la generazione di endpoint predefiniti URLs e Amazon S3 in un unico dominio, collegato a un acceleratore con due indirizzi IP statici. Di conseguenza, gli utenti possono richiedere URLs e scaricare facilmente oggetti Amazon S3 predefiniti tramite un endpoint di dominio unificato con indirizzi IP statici. 

Questa architettura è particolarmente vantaggiosa per i clienti con politiche o requisiti di conformità rigorosi, come quelli dei settori pubblico, medico e finanziario.

## Prerequisiti e limitazioni
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Una zona pubblica ospitata per il tuo nome di dominio personalizzato
+ Un dominio importato in AWS Certificate Manager (ACM) in un formato Regione AWS a tua scelta

**Limitazioni**
+ Il nome del bucket Amazon S3 deve corrispondere al nome di dominio dell'endpoint. Questo requisito serve a garantire che l'endpoint Amazon S3 possa essere servito tramite un unico endpoint API.
+ Il nome di dominio personalizzato utilizzato in API Gateway deve essere allineato al nome di dominio del singolo endpoint API.
+ Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, vedi [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="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-architecture"></a>

Il diagramma seguente mostra l'architettura e il flusso di lavoro di destinazione per questo modello.

![\[Componenti e flusso di lavoro per la generazione di URL predefiniti e il download di oggetti.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/e19ebcb5-2138-481e-952e-3cfee9ad9e97/images/effd197c-d4d7-4990-8b66-3eb1c64aab4c.png)


Il diagramma illustra il concetto e il flusso di lavoro seguenti:

1. Un utente avvia una richiesta per generare un URL predefinito utilizzando l'endpoint personalizzato fornito tramite AWS Global Accelerator, utilizzando il nome di dominio personalizzato e gli indirizzi IP associati.

1. Una funzione Lambda genera l'URL predefinito, che punta all'endpoint personalizzato. Risponde con un reindirizzamento 301 che contiene l'URL prefirmato generato. Tramite l'URL prefirmato reindirizzato, l'utente scarica automaticamente l'oggetto utilizzando l'endpoint personalizzato fornito tramite Global Accelerator.

I componenti dell'architettura generale per la generazione di URL predefiniti e il flusso di lavoro per il download degli oggetti sono i seguenti:
+ Fornitura di indirizzi IP statici da parte di Global Accelerator.
+ Registrazione dell'alias dell'acceleratore come record A nella zona ospitata pubblica di Amazon Route 53 con il nome di dominio personalizzato.
+ Creazione di un bucket Amazon S3 con un nome di bucket che corrisponda al nome di dominio personalizzato registrato.
+ Creazione di endpoint VPC per API Gateway e il servizio Amazon S3.
+ Configurazione di un Application Load Balancer con interfaccia interna per la connessione a Global Accelerator.
+ Assegnazione di un nome di dominio personalizzato per API Gateway con un certificato ACM allegato.
+ Implementazione di un API Gateway privato integrato con una funzione Lambda.
+ La funzione Lambda è dotata di un ruolo AWS Identity and Access Management (IAM) associato (con [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)autorizzazioni).

## Tools (Strumenti)
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-tools"></a>

**Servizi AWS**
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) ti aiuta a creare, pubblicare, gestire, monitorare e proteggere REST, HTTP e WebSocket APIs su qualsiasi scala.
+ Gli [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) distribuiscono il traffico delle applicazioni in entrata su più destinazioni, come le istanze Amazon Elastic Compute Cloud (Amazon EC2), in più zone di disponibilità.
+ [AWS Certificate Manager (ACM)](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html) ti aiuta a creare, archiviare e rinnovare certificati e chiavi SSL/TLS X.509 pubblici e privati che proteggono i tuoi siti Web e le tue applicazioni. AWS 
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)è un framework di sviluppo software che consente di definire e fornire Cloud AWS l'infrastruttura in codice.
+ [AWS Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html)è un servizio globale che supporta endpoint multipli Regioni AWS. È possibile creare acceleratori che indirizzano il traffico verso endpoint ottimali sulla AWS rete globale. Questo migliora la disponibilità e le prestazioni delle applicazioni Internet utilizzate da un pubblico globale.
+ [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 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.
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)ti aiuta a creare connessioni private unidirezionali dai tuoi cloud privati virtuali (VPCs) a servizi esterni al VPC.
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) è un servizio Web DNS altamente scalabile e disponibile.
+ [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.

**Altri strumenti**
+ [Terraform](https://www.terraform.io/) è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.

**Archivio di codici**

Puoi implementare questo modello utilizzando AWS CDK o Terraform in base alle tue preferenze. La sezione [Epics](#consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics) contiene istruzioni per entrambi i metodi di distribuzione. Il codice per questo pattern è disponibile nei seguenti GitHub repository:
+ **AWS CDK**— [s3](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-cdk) - -cdk presignedurl-staticips-endpoint-with
+ [Terraform — s3- **-terraform** presignedurl-staticips-endpoint-with](https://github.com/aws-samples/s3-presignedurl-staticips-endpoint-with-terraform)

## Best practice
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-best-practices"></a>
+ Per migliorare la sicurezza nell'ambiente di produzione, è fondamentale implementare meccanismi di autorizzazione, come [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html), per limitare l'accesso all'API di `PresignedUrl` generazione.
+ Segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le [best practice relative alla [concessione dei privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e alla sicurezza nella documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM.

## Epiche
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-epics"></a>

### Prepara l'ambiente
<a name="prepare-the-environment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Scegli un nome di dominio. | Scegli un nome di dominio pubblico per l'endpoint Amazon S3 unificato. Il nome di dominio viene utilizzato anche come nome del bucket Amazon S3. | Amministratore AWS, amministratore di rete | 
| Crea una zona ospitata pubblica | [Crea una zona pubblica ospitata](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) in Amazon Route 53. Il nome di dominio deve corrispondere al nome di dominio utilizzato in API Gateway. | Amministratore AWS, amministratore di rete | 
| Prepara un certificato SSL. | Utilizza AWS Certificate Manager (ACM) per [richiedere](https://docs.aws.amazon.com/acm/latest/userguide/acm-public-certificates.html) o [importare](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) un certificato SSL per il dominio della tua applicazione web. | Amministratore AWS, amministratore di rete | 

### Implementa il pattern con Terraform
<a name="deploy-the-pattern-with-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura l'ambiente di sviluppo Terraform. | Per configurare l'ambiente di sviluppo, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | Amministratore AWS, amministratore cloud | 
| Modifica i **`provider.tf`**file `.tfvars` and. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html)**Tieni presente quanto segue:**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | Amministratore AWS, amministratore cloud | 
| Fornisci risorse di rete. | Per effettuare il provisioning delle risorse di rete, esegui i seguenti comandi:<pre>cd ./2.vpc_alb_ga<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre>Durante l'esecuzione del `apply ` comando, digitate **yes** quando richiesto. | Amministratore AWS, amministratore cloud | 
| Esegui il provisioning di API Gateway, Amazon S3 e Lambda. | Per effettuare il provisioning delle risorse di rete, utilizza i seguenti comandi:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --var-file=apg.tfvars<br />terraform apply --var-file=apg.tfvars</pre> | Amministratore AWS, amministratore cloud | 

### Implementa il pattern con AWS CDK
<a name="deploy-the-pattern-with-cdk"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura l'ambiente di AWS CDK sviluppo. | Per configurare l'ambiente di sviluppo, procedi come segue:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | Amministratore AWS, amministratore cloud | 
| Configura le impostazioni del dominio nel `config/index.ts` file. | Per modificare le opzioni della variabile costante, utilizzate i seguenti comandi:<pre>export const options = {<br />    certificateArn: '{arn of the acm which created before}',<br />    dnsAttr: {<br />        zoneName: '{public hosted zone name}',<br />        hostedZoneId: 'hosted zone Id',<br />    },<br />    domainNamePrefix: '{Prefix for the domain}',<br />    presignPath: 'presign',<br />    objectsPath: 'objects',<br />};</pre>Nei comandi, sostituisci ogni segnaposto con le tue informazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses.html) | Amministratore AWS, amministratore cloud | 
| Distribuisci gli stack. | Per distribuire due stack, uno per il cloud privato virtuale (VPC) e l'altro per l'applicazione, usa il seguente comando:<pre>$ npm install <br />$ cdk synth <br />$ cdk deploy --all</pre> | Amministratore AWS, amministratore cloud | 

### Prova il modello
<a name="test-the-pattern"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Verifica gli indirizzi IP dell'endpoint. | Per verificare che il dominio per questo pattern abbia indirizzi IP statici, utilizzate il seguente comando:<pre>nslookup ${s3-bucket-prefix}.${domain}</pre> | Amministratore di rete | 
| Carica un file di test che potrai scaricare in seguito. | Carica il file di test nella `'/objects'` cartella del bucket Amazon S3. | Amministratore AWS, amministratore cloud | 
| Richiama l'API per generare un URL predefinito. | Per generare un URL predefinito, richiamate l'URL da un browser o da un client API (ad esempio, [Postman](https://www.postman.com/product/what-is-postman/)) utilizzando il seguente formato:<pre>https://${s3-bucket-prefix}.${domain}/presign/objects/${uploaded-filename}</pre>Sostituisci i valori segnaposto in `${s3-bucket-prefix}` e `${domain}` con i valori impostati nei passaggi precedenti. | Proprietario dell'app | 
| Controlla il risultato. | Il risultato previsto è che dovresti ricevere un codice di stato di reindirizzamento 301 (Spostato permanentemente). Questa risposta conterrà l'URL predefinito, che dovrebbe avviare automaticamente il download del file di test. | Tecnico di test | 

### Pulisci con Terraform
<a name="clean-up-with-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distruggi le risorse API Gateway, Amazon S3 e Lambda. | Per eliminare le risorse, usa i seguenti comandi:<pre>cd ./2.apigw_s3_lambda<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | Amministratore AWS, amministratore cloud | 
| Distruggi le risorse di rete. | Per eliminare le risorse di rete, utilizzate i seguenti comandi:<pre>cd ./1.vpc_alb_ga<br />terraform init<br />terraform plan --destroy --var-file=apg.tfvars<br />terraform destroy --var-file=apg.tfvars<br /></pre> | Amministratore AWS, amministratore cloud | 

### Pulisci con AWS CDK
<a name="clean-up-with-cdk"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distruggi le pile. | Per distruggere sia il VPC che lo stack delle applicazioni, usa il seguente comando:<pre>$ cdk destroy --all</pre> | Amministratore AWS, amministratore cloud | 
| Svuota ed elimina i bucket Amazon S3. | [Svuota](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) ed [elimina](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) il bucket Amazon S3 oggetto e il bucket Amazon S3 di log che non vengono eliminati per impostazione predefinita.I nomi dei bucket Amazon S3 sono e. `${s3-bucket-prefix}.${domain}` `${s3-bucket-prefix}.${domain}-logs`Se preferisci usare il [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) per eliminare i bucket, usa i seguenti comandi:<pre>$ aws s3 rm s3://${s3-bucket-prefix}.${domain} --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain} --force<br />$ aws s3 rm s3://${s3-bucket-prefix}.${domain}-logs --recursive<br />$ aws s3 rb s3://${s3-bucket-prefix}.${domain}-logs --force</pre>Sostituite `${s3-bucket-prefix}` e `${domain}` con i valori impostati nei passaggi precedenti. , /p> | Amministratore AWS, amministratore cloud | 

## Risorse correlate
<a name="consolidate-amazon-s3-presigned-url-generation-and-object-downloads-by-using-an-endpoint-associated-with-static-ip-addresses-resources"></a>

**AWS Blog**
+ [Accesso a un Amazon API Gateway tramite indirizzi IP statici forniti da AWS Global Accelerator](https://aws.amazon.com/blogs/networking-and-content-delivery/accessing-an-aws-api-gateway-via-static-ip-addresses-provided-by-aws-global-accelerator/) 
+ [Genera un URL predefinito in formato modulare AWS CDK per JavaScript](https://aws.amazon.com/blogs/developer/generate-presigned-url-modular-aws-sdk-javascript/) 
+ [Hosting di siti Web statici HTTPS interni con ALB, S3 e PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) 