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
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
-
Crie um diretório chamado
s3bucket_ops
e navegue até ele. -
Crie um arquivo
metadata.rb
com o seguinte conteúdo e salve-o ems3bucket_ops
.name "s3download" version "0.1.0"
-
Criar um diretório
recipes
ems3download
. -
Crie um arquivo
default.rb
com a seguinte receita e salve-o no diretóriorecipes
. Substituirwindows-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
-
Crie um arquivo
.zip
des3download
e carregue o arquivo em um bucket do S3. Torne o arquivo público e grave-o URL para uso posterior. -
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_gem
recurso 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_block
recurso a ser executado SDK para que o código Ruby v2 seja baixado myfile.txt
de um bucket do S3 chamado
para o diretório da instância.windows-cookbooks
/chef
Altere
para o nome do bucket que contémwindows-cookbooks
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
-
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
-
-
Clique em Add a layer e adicione uma camada personalizada à pilha com as seguintes configurações.
-
Nome: S3Download
-
Nome curto: s3download
-
-
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
-
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.
-
-
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á.
-
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 ems3download::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
-
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) ...
-
Use RDP para fazer login na instância e examinar o conteúdo do
c:\chef
.