Usare SDK for Ruby su un AWS OpsWorks Impila l'istanza di 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à.

Usare SDK for Ruby su un AWS OpsWorks Impila l'istanza di Windows

Importante

Il AWS OpsWorks Stacks il 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 Squadra su AWS Re:post o tramite AWS Supporto Premium.

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 In particolare, descrive come abilitare RDP l'accesso 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 il AWS SDK for Rubysu un AWS OpsWorks Impila un'istanza di Windows per scaricare un file da un bucket S3.

Se un'applicazione Ruby deve accedere a una AWS risorsa, è necessario fornirle un set di AWS credenziali con le autorizzazioni appropriate. Per le ricette, l'opzione migliore per fornire AWS le credenziali è utilizzare un AWS Identity and Access Management (IAM) ruolo. Un IAM ruolo funziona in modo molto simile a un IAM utente, ha una politica allegata che concede i permessi per utilizzare i vari AWS servizi. Tuttavia, assegni un ruolo a un'istanza Amazon Elastic Compute Cloud EC2 (Amazon) 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 è impostare il IAM ruolo. Questo esempio utilizza l'approccio più semplice, che consiste nell'utilizzare il EC2 ruolo Amazon AWS OpsWorks Stacks viene creato quando crei il tuo 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 Aggiungere autorizzazioni di IAM identità (console) nella Guida per l'IAMutente.

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'IAMistanza 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. Replace (Sostituisci) windows-cookbooks con il nome del bucket S3 che utilizzerai per archiviare il 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. Rendi pubblico il file e registralo URL per un uso successivo.

  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 il SDK for Ruby v2.

L'esempio utilizza SDK for Ruby per scaricare l'oggetto. Tuttavia, AWS OpsWorks Stacks non lo installa SDK sulle istanze di 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 da eseguire SDK per il download del codice Ruby v2 myfile.txt da un bucket S3 denominato windows-cookbooks 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 si inserisce il codice di download nel corpo della ricetta, l'operazione avrà esito negativo perché dipende da SDK for Ruby e la chef_gem risorsa che la installa non è ancora stata eseguita. SDK Il codice nella ruby_block risorsa viene eseguito quando viene eseguita la risorsa, e ciò accade dopo che la chef_gem risorsa ha installato il for Ruby. SDK

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 AWS OpsWorksConsole Stacks e scegli 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.

    • Repository URL: l'archivio del libro di cucina URL 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

    Di solito hai AWS OpsWorks Gli stack eseguono automaticamente le tue ricette 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. RDPDa utilizzare per accedere all'istanza ed esaminare il contenuto di. c:\chef