Usando o SDK for Ruby em um AWS OpsWorks Instância do Windows Stacks - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando o SDK for Ruby em um AWS OpsWorks Instância do Windows Stacks

Importante

A ferramenta AWS OpsWorks Stacks o serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com o AWS Support Equipe em AWS Re:post ou através de AWS Premium Support.

nota

Este exemplo supõe que você já tenha concluído o exemplo em Executar uma receita na instância Windows. Caso contrário, conclua esse exemplo primeiro. Em particular, ele descreve como habilitar o RDP acesso às suas instâncias.

O conteúdo entregue aos buckets do Amazon S3 pode conter conteúdo do cliente. Para obter mais informações sobre a remoção de dados confidenciais, consulte Como faço para esvaziar um bucket do S3? ou Como faço para excluir um bucket do S3?.

Este tópico descreve como usar o AWS SDK for Rubyem um AWS OpsWorks Empilha a instância do Windows para baixar um arquivo de um bucket do S3.

Se um aplicativo Ruby precisar acessar um AWS recurso, você deverá fornecer a ele um conjunto de AWS credenciais com as permissões apropriadas. Para receitas, sua melhor opção para fornecer AWS credenciais é usar um AWS Identity and Access Management (IAM) papel. Uma IAM função funciona como um IAM usuário: ela tem uma política anexada que concede permissões para usar as várias AWS serviços. No entanto, você atribui uma função a uma instância do Amazon Elastic Compute Cloud (AmazonEC2) em vez de a um indivíduo. Os aplicativos em execução na instância podem, por sua vez, adquirir as permissões concedidas pela política associada. Com uma função, as credenciais nunca aparecem em seu código, sequer indiretamente.

A primeira etapa é configurar a IAM função. Este exemplo usa a abordagem mais simples, que é usar a EC2 função da Amazon que AWS OpsWorks As pilhas são criadas quando você cria sua primeira pilha. Ela se chama aws-opsworks-ec2-role. No entanto, AWS OpsWorks O Stacks não anexa uma política a essa função, portanto, por padrão, ele não concede permissões.

Você deve anexar a política AmazonS3ReadOnlyAccess ao perfil aws-opsworks-ec2-role para conceder as permissões apropriadas. Para obter mais informações sobre como anexar uma política a uma função, consulte Adicionar permissões de IAM identidade (console) no Guia do IAM usuário.

Você especifica a função quando cria ou atualiza uma pilha. Configure uma pilha com uma camada personalizada, conforme descrito em Executar uma receita na instância Windows, com uma adição. Na página Add Stack, confirme se o perfil de IAM instância padrão está definido como aws-opsworks-ec2 funções. AWS OpsWorks Em seguida, o Stacks atribuirá esse perfil a todas as instâncias da pilha.

O procedimento para configurar o livro de receitas é semelhante ao usado para Executar uma receita em uma instância Linux. A seguir, há um breve resumo; consulte esse exemplo para obter detalhes.

Para configurar o livro de receitas
  1. Crie um diretório chamado s3bucket_ops e navegue até ele.

  2. Crie um arquivo metadata.rb com o seguinte conteúdo e salve-o em s3bucket_ops.

    name "s3download" version "0.1.0"
  3. Criar um diretório recipes em s3download.

  4. Crie um arquivo default.rb com a seguinte receita e salve-o no diretório recipes. Substituir windows-cookbooks com o nome do bucket do S3 que você usará para armazenar o arquivo a ser baixado.

    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. Crie um arquivo .zip de s3download e carregue o arquivo em um bucket do S3. Torne o arquivo público e grave-o URL para uso posterior.

  6. Crie um arquivo de texto chamado myfile.txt e carregue em um bucket do S3. Este é o arquivo que sua receita baixará para que você possa usar qualquer bucket.

A receita executa as seguintes tarefas.

1: Instale o SDK para Ruby v2.

O exemplo usa o SDK for Ruby para baixar o objeto. No entanto, AWS OpsWorks O Stacks não instala isso SDK em instâncias do Windows, então a primeira parte da receita usa um chef_gemrecurso para lidar com essa tarefa. Utilize esse recurso para instalar gems para uso pelo Chef, que inclui receitas.

2: Faça download do arquivo.

A terceira parte da receita usa um ruby_blockrecurso a ser executado SDK para que o código Ruby v2 seja baixado myfile.txt de um bucket do S3 chamado windows-cookbooks para o diretório da instância. /chef Altere windows-cookbooks para o nome do bucket que contém myfile.txt.

nota

Uma receita é um aplicativo Ruby, por isso, você pode colocar código Ruby no corpo da receita; ele não precisa estar em um recurso ruby_block. No entanto, o Chef executa o código Ruby no corpo da receita primeiro, seguido por cada recurso, em ordem. Neste exemplo, se você colocar o código de download no corpo da receita, ele falhará porque depende do SDK for Ruby e o chef_gem recurso que o instala SDK ainda não foi executado. O código no ruby_block recurso é executado quando o recurso é executado, e isso acontece depois que o chef_gem recurso instala o SDK for Ruby.

Crie uma pilha para este exemplo da seguinte maneira. Você também pode usar uma pilha existente do Windows. Basta atualizar os livros de receitas, como será descrito mais tarde.

Criar uma pilha
  1. Abra as AWS OpsWorks Console Stacks e escolha Add Stack. Especifique as seguintes configurações, aceite os padrões para as outras configurações e escolha Add Stack.

    • Nome: S3Download

    • Região: Oeste dos EUA (Oregon)

      Este exemplo funcionará em qualquer região, mas recomendamos o uso de Oeste dos EUA (Oregon) para tutoriais.

    • Sistema operacional padrão: Microsoft Windows Server 2012 R2

  2. Clique em Add a layer e adicione uma camada personalizada à pilha com as seguintes configurações.

    • Nome: S3Download

    • Nome curto: s3download

  3. Adicione uma instância ininterrupta com as configurações padrão à camada S3Download e inicie-a.

Agora você pode instalar e executar a receita

Para executar a receita
  1. Edite a pilha para habilitar livros de receitas personalizados, e especifique as seguintes configurações.

    • Tipo de repositório: Arquivamento do S3.

    • Repositório URL — O arquivo do livro de receitas URL que você gravou anteriormente.

    Aceite os valores padrão para as outras configurações e escolha Save para atualizar a configuração da pilha.

  2. Execute o comando de pilha Update Custom Cookbooks, que instala a versão mais recente de seu livro de receitas personalizado nas instâncias online da pilha. Se uma versão mais antiga de seus livros de receitas estiver presente, este comando a sobrescreverá.

  3. Execute a receita acionando o comando de stack Execute Recipes (Executar receitas) com a opção Recipes to execute (Receitas para executar) definida como s3download::default. Este comando inicia uma execução do Chef, com uma lista de execução que consiste em s3download::default.

    nota

    Você normalmente tem AWS OpsWorks As pilhas executam suas receitas automaticamente, atribuindo-as ao evento de ciclo de vida apropriado. Essas receitas também podem ser executadas acionando o evento manualmente. Use um comando de stack para acionar eventos Setup e Configure, e um comando de pilha para acionar eventos Deploy e Undeploy.

Após a receita ser executada com sucesso, verifique isso.

Para verificar s3download
  1. A primeira etapa é examinar o log do Chef. Sua pilha deve ter uma instância designada s3download1. Na página Instances, escolha show na coluna Log da instância para exibir o log do Chef. Role para baixo para encontrar a mensagem de log próximo ao fim.

    ... [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. Use RDP para fazer login na instância e examinar o conteúdo doc:\chef.