Utilizzo dell'SDK for Ruby AWS OpsWorks su un'istanza Stacks Windows - AWS OpsWorks

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

Utilizzo dell'SDK for Ruby AWS OpsWorks su un'istanza Stacks Windows

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

Nota

Questo esempio presuppone che tu abbia già completato l'esempio Esecuzione di una ricetta su un'istanza Windows. In caso contrario, ti consigliamo di iniziare da questo esempio, che descrive in particolare come abilitare l'accesso RDP alle istanze.

I contenuti distribuiti ai bucket Amazon S3 potrebbero contenere informazioni dei clienti. Per ulteriori informazioni sulla rimozione di dati sensibili, vedi Come svuotare un bucket S3? o Come eliminare un bucket S3?.

Questo argomento descrive come utilizzare AWS SDK for Rubysu un'istanza Windows AWS OpsWorks Stacks per scaricare un file da un bucket S3.

Se un'applicazione Ruby ha l'esigenza di accedere a una risorsa AWS, devi fornirle un set di credenziali di AWS con le autorizzazioni appropriate. Per le ricette, l'opzione migliore per fornire le credenziali AWS è utilizzare un ruolo AWS Identity and Access Management (IAM). Un ruolo IAM funziona in modo molto simile a un utente IAM: ha una policy allegata che concede le autorizzazioni per utilizzare i vari servizi. AWS Tuttavia, assegni un ruolo a un'istanza Amazon Elastic Compute Cloud (Amazon EC2) anziché a un individuo. Le applicazioni in esecuzione su tale istanza possono quindi acquisire le autorizzazioni concesse dalla policy collegata. Con un ruolo, le credenziali non compaiono mai nel codice, neanche indirettamente.

Il primo passo è configurare il ruolo IAM. Questo esempio utilizza l'approccio più semplice, che consiste nell'utilizzare il ruolo Amazon EC2 creato da AWS OpsWorks Stacks quando crei il primo stack. È denominato aws-opsworks-ec2-role. Tuttavia, AWS OpsWorks Stacks non associa una policy a quel ruolo, quindi per impostazione predefinita non concede autorizzazioni.

È necessario allegare la AmazonS3ReadOnlyAccess politica al aws-opsworks-ec2-role ruolo per concedere le autorizzazioni appropriate. Per ulteriori informazioni su come allegare una policy a un ruolo, consulta Adding IAM identity permissions (console) nella IAM User Guide.

Specifica il ruolo durante la creazione o l'aggiornamento di uno stack. Configura uno stack con un livello personalizzato, come descritto in Esecuzione di una ricetta su un'istanza Windows, con un'aggiunta. Nella pagina Add Stack, verifica che il profilo predefinito dell'istanza IAM sia impostato su 2 ruoli. aws-opsworks-ec AWS OpsWorks Stacks assegnerà quindi quel ruolo a tutte le istanze dello stack.

La procedura per la configurazione del libro di ricette è simile a quella utilizzata da Esecuzione di una ricetta su un'istanza Linux. Di seguito è riportato un breve riepilogo. Per i dettagli, fai riferimento a tale esempio.

Per configurare il libro di ricette
  1. Creare una directory denominata s3bucket_ops e accedervi.

  2. Creare un file metadata.rb con il seguente contenuto e salvarlo in s3bucket_ops.

    name "s3download" version "0.1.0"
  3. Creare una directory recipes in s3download.

  4. Creare un file default.rb con la seguente ricetta e salvarlo nella directory recipes. Sostituire windows-cookbooks con il nome del bucket S3 da utilizzare per archiviare i file da scaricare.

    Chef::Log.info("******Downloading an object from S3******") chef_gem "aws-sdk-s3" do compile_time false action :install end ruby_block "download-object" do block do require 'aws-sdk-s3' Aws.use_bundled_cert! s3_client = Aws::S3::Client.new(region:'us-west-2') s3_client.get_object(bucket: 'windows-cookbooks', key: 'myfile.txt', response_target: '/chef/myfile.txt') end action :run end
  5. Creare un archivio .zip di s3download e caricare il file in un bucket S3. Rendere il file pubblico e registrare l'URL per utilizzarlo successivamente.

  6. Creare un file di testo denominato myfile.txt e caricarlo in un bucket S3. Questo è il file che verrà scaricato dalla ricetta, perciò è possibile usare qualsiasi bucket comodo.

La ricetta esegue le seguenti attività.

1: Installa l'SDK per Ruby v2.

L'esempio utilizza l'SDK for Ruby per scaricare l'oggetto. Tuttavia, AWS OpsWorks Stacks non installa questo SDK su istanze Windows, quindi la prima parte della ricetta utilizza una chef_gemrisorsa per gestire tale attività. Questa risorsa viene utilizzata per installare gem per l'utilizzo da parte di Chef, che include ricette.

2: Scarica il file.

La terza parte della ricetta utilizza una ruby_blockrisorsa per eseguire il codice SDK for Ruby v2 da myfile.txt scaricare da un windows-cookbooks bucket S3 denominato nella directory dell'istanza. /chef Sostituisci windows-cookbooks con il nome del bucket che contiene myfile.txt.

Nota

Una ricetta è un'applicazione Ruby, pertanto puoi inserire il codice Ruby nel corpo della ricetta. Tale codice non deve trovarsi in una risorsa ruby_block. Tuttavia, Chef esegue prima il codice Ruby nel corpo della ricetta, quindi ciascuna risorsa, nell'ordine. Per questo esempio, se inserisci il codice di download nel corpo della ricetta, fallirà perché dipende dall'SDK for Ruby chef_gem e la risorsa che installa l'SDK non è ancora stata eseguita. Il codice nella ruby_block risorsa viene eseguito quando viene eseguita la risorsa e ciò avviene dopo che la chef_gem risorsa ha installato l'SDK for Ruby.

Crea uno stack per questo esempio nel modo seguente. Puoi anche utilizzare uno stack Windows esistente. È sufficiente aggiornare i libri di ricette, come descritto di seguito.

Creare uno stack
  1. Aprire la console AWS OpsWorks Stacks e scegliere Add Stack (Aggiungi stack). Specificare le impostazioni seguenti, accettare i valori predefiniti di altre impostazioni e scegliere Add Stack (Aggiungi stack).

    • Nome: S3Download

    • Regione: Stati Uniti occidentali (Oregon)

      Questo esempio funzionerà in qualsiasi regione, ma consigliamo di utilizzare Stati Uniti occidentali (Oregon) per i tutorial.

    • Sistema operativo predefinito: Microsoft Windows Server 2012 R2

  2. Scegliere Add a layer (Aggiungi un livello) e aggiungere un livello personalizzato allo stack con le impostazioni seguenti.

    • Nome: S3Download

    • Nome breve: s3download

  3. Aggiungere un'istanza 24/7 con impostazioni predefinite al livello S3Download e avviarla.

Ora puoi installare ed eseguire la ricetta

Per eseguire la ricetta
  1. Modificare lo stack per abilitare i libri di ricette personalizzati e specificare le impostazioni seguenti.

    • Tipo di repository: S3 Archive.

    • URL del repository: l'URL di archivio del libro di cucina che hai registrato in precedenza.

    Accettare i valori predefiniti per altre impostazioni e scegliere Save (Salva) per aggiornare la configurazione dello stack.

  2. Eseguire il comando dello stack Update Custom Cookbooks (Aggiorna libri di ricette personalizzati), che installa la versione più recente del libro di ricette personalizzato nelle istanze online dello stack. Se è presente una versione precedente dei libri di cucina, verrà sovrascritta da questo comando.

  3. Eseguire la ricetta utilizzando il comando dello stack Execute Recipes (Esegui ricette) con Recipes to execute (Ricette da eseguire) impostato su s3download::default. Questo comando avvia un'esecuzione di Chef, con un elenco di esecuzione costituito da s3download::default.

    Nota

    In genere, fai in modo che AWS OpsWorks Stacks esegua le tue ricette automaticamente assegnandole all'evento del ciclo di vita appropriato. Puoi anche eseguire tali ricette attivando manualmente l'evento. Puoi utilizzare un comando dello stack per attivare gli eventi Setup e Configure e un comando di distribuzione per attivare gli eventi Deploy e Undeploy.

Dopo aver eseguito correttamente la ricetta, puoi verificarla.

Per verificare s3download
  1. Il primo passaggio consiste nell'esaminare il log di Chef. Lo stack deve disporre di un'istanza denominata s3download1. Nella pagina Instances (Istanze) scegliere show (mostra) nella colonna Log dell'istanza per visualizzare il log di Chef. Scorrere verso il basso per trovare il messaggio di log.

    ... [2015-05-01T21:11:04+00:00] INFO: Loading cookbooks [s3download@0.0.0] [2015-05-01T21:11:04+00:00] INFO: Storing updated cookbooks/s3download/recipes/default.rb in the cache. [2015-05-01T21:11:04+00:00] INFO: ******Downloading an object from S3****** [2015-05-01T21:11:04+00:00] INFO: Processing chef_gem[aws-sdk] action install (s3download::default line 3) [2015-05-01T21:11:05+00:00] INFO: Processing ruby_block[download-object] action run (s3download::default line 8) ...
  2. Utilizzare RDP per accedere all'istanza ed esaminare i contenuti di c:\chef.