Usando o SDK para Ruby em uma instância do Windows AWS OpsWorks 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 para Ruby em uma instância do Windows AWS OpsWorks Stacks

Importante

O AWS OpsWorks Stacks 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 a AWS Support equipe no AWS re:POST ou por meio do Premium AWS 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. Especificamente, ele descreve como habilitar o acesso RDP para 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 uma instância do AWS OpsWorks Stacks Windows para baixar um arquivo de um bucket do S3.

Se um aplicativo Ruby precisar acessar um recurso da AWS, forneça a ela um conjunto de credenciais da AWS com as permissões apropriadas. Para receitas, sua melhor opção para fornecer credenciais da AWS é usar uma função AWS Identity and Access Management (IAM). Uma função do IAM funciona como um usuário do IAM: ela tem uma política anexada que concede permissões para usar os vários AWS serviços. No entanto, você atribui um perfil a uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em vez de atribuir um perfil 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 o perfil do IAM. Este exemplo usa a abordagem mais simples, que é usar a função do Amazon EC2 que o AWS OpsWorks Stacks cria quando você cria sua primeira pilha. Ela se chama aws-opsworks-ec2-role. No entanto, o AWS OpsWorks 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 associar uma política a um perfil, consulte Adicionar permissões de identidade do IAM (console) no Guia do usuário do IAM.

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 instância padrão do IAM está definido como aws-opsworks-ec2 funções. AWS OpsWorks As pilhas então atribuirão essa função 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. Substitua 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 público o arquivo e registre 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: Instalação do SDK for Ruby v2.

O exemplo usa o SDK for Ruby para carregar o objeto. No entanto, o AWS OpsWorks Stacks não instala esse 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 recurso ruby_block para executar o código SDK for Ruby v2 para baixar myfile.txt de um bucket do S3 chamado windows-cookbooks para o diretório /chef da instância. 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. Para este exemplo, se você colocar o código do download no corpo da receita, ele falhará porque depende do SDK for Ruby e o recurso chef_gem que instala o SDK ainda não foi executado. O código no recurso ruby_block é executado quando o recurso é executado, o que acontece depois que o recurso chef_gem 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 o console do AWS OpsWorks Stacks e selecione Add Stack (Adicionar pilha). 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.

    • URL do repositório: o URL do arquivo do livro de receitas que você registrou 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

    Normalmente, você faz com que AWS OpsWorks as pilhas executem 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 o RDP para fazer login na instância e examine o conteúdo de c:\chef.