기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SDKRuby용 를 사용하여 AWS OpsWorks 윈도우 인스턴스를 스택합니다.
중요
더 AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트
참고
이 예제에서는 사용자가 이미 Windows 인스턴스에서 레시피 실행 예제를 완료한 것으로 가정합니다. 그렇지 않은 경우 먼저 그 예제를 수행해야 합니다. 특히, 인스턴스에 RDP 대한 액세스를 활성화하는 방법을 설명합니다.
Amazon S3 버킷에 전달한 콘텐츠에는 고객 콘텐츠가 포함될 수 있습니다. 중요 데이터 제거에 관한 자세한 내용은 S3 버킷을 비우려면 어떻게 해야 합니까? 또는 S3 버킷을 삭제하려면 어떻게 해야 합니까?를 참조하세요.
이 주제에서는 사용 방법을 설명합니다. AWS SDK for Ruby에 AWS OpsWorks Windows 인스턴스를 스택하여 S3 버킷에서 파일을 다운로드합니다.
Ruby 애플리케이션이 AWS 리소스에 액세스해야 하는 경우 적절한 권한이 있는 AWS 자격 증명 세트를 Ruby 애플리케이션에 제공해야 합니다. 레시피의 경우 AWS 자격 증명을 제공하는 가장 좋은 방법은 다음을 사용하는 것입니다. AWS Identity and Access Management (IAM) 역할. IAM역할은 IAM 사용자와 매우 유사하게 작동하며 다양한 기능을 사용할 수 있는 권한을 부여하는 정책이 첨부되어 있습니다. AWS 서비스. 하지만 역할을 개인에게 할당하는 대신 Amazon Elastic Compute Cloud (AmazonEC2) 인스턴스에 역할을 할당합니다. 그러면 이 인스턴스에서 실행되는 애플리케이션은 연결된 정책이 부여하는 권한을 획득할 수 있습니다. 역할을 사용하면 자격 증명이 간접적으로라도 코드에 표시되지 않습니다.
첫 번째 단계는 IAM 역할을 설정하는 것입니다. 이 예제는 다음과 같은 Amazon EC2 역할을 사용하는 가장 간단한 접근 방식을 취합니다. AWS OpsWorks 스택은 첫 번째 스택을 생성할 때 생성됩니다. 이 역할은 aws-opsworks-ec2-role
로 명명됩니다. 하지만 AWS OpsWorks 스택은 해당 역할에 정책을 연결하지 않으므로 기본적으로 권한을 부여하지 않습니다.
적절한 권한을 부여하려면 AmazonS3ReadOnlyAccess
정책을 aws-opsworks-ec2-role
역할에 연결해야 합니다. 정책을 역할에 연결하는 방법에 대한 자세한 내용은 사용 설명서의 IAM ID 권한 추가 (콘솔) 를 IAM 참조하십시오.
스택을 생성하거나 업데이트할 때 역할을 지정합니다. Windows 인스턴스에서 레시피 실행 섹션에 설명된 대로 사용자 지정 계층을 포함하는 스택을 설정하되 한 가지를 추가합니다. Add Stack 페이지에서 기본 IAM 인스턴스 프로필이 aws-opsworks-ec 2-role로 설정되어 있는지 확인합니다. AWS OpsWorks 그러면 Stacks가 이 역할을 스택의 모든 인스턴스에 할당합니다.
쿡북을 설정하는 절차는 Linux 인스턴스에서 레시피 실행 섹션에서 사용한 것과 비슷합니다. 다음은 간략한 요약이며, 자세한 정보는 해당 예제를 참조하세요.
쿡북을 설정하려면
-
s3bucket_ops
하위 디렉터리를 만들고 그 디렉터리로 이동합니다. -
다음 내용이 포함된
metadata.rb
파일을 만들어s3bucket_ops
에 저장합니다.name "s3download" version "0.1.0"
-
recipes
안에s3download
디렉터리를 만듭니다. -
다음 레시피가 포함된
default.rb
파일을 만들어recipes
디렉터리에 저장합니다. Replacewindows-cookbooks
다운로드할 파일을 저장하는 데 사용할 S3 버킷의 이름과 함께.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
-
s3download
의.zip
아카이브를 만들어 이 파일을 S3 버킷에 업로드합니다. 파일을 공개하고 나중에 사용할 수 있도록 URL 기록해 두십시오. -
myfile.txt
라는 텍스트 파일을 만들어 이 파일을 S3 버킷에 업로드합니다. 이 파일은 레시피에서 다운로드할 파일이므로 편리한 버킷은 어느 것이든 사용할 수 있습니다.
이 레시피가 수행하는 작업은 다음과 같습니다.
- 1: 루비 SDK v2용 앱을 설치합니다.
-
이 예제에서는 SDK for Ruby를 사용하여 객체를 다운로드합니다. 하지만 AWS OpsWorks Stacks는 SDK Windows 인스턴스에 이를 설치하지 않으므로 레시피의 첫 번째 부분에서는
chef_gem
리소스를 사용하여 해당 작업을 처리합니다. 사용자는 이 리소스를 사용하여 레시피를 포함하여 Chef가 사용하는 젬을 설치합니다. - 2: 파일을 다운로드합니다.
-
레시피의 세 번째 부분에서는
ruby_block
리소스를 사용하여 인스턴스의 /chef
디렉터리에 이름이 지정된 S3myfile.txt
버킷에서 Ruby v2 코드를 다운로드할
수 있도록 실행합니다SDK.windows-cookbooks
를windows-cookbooks
myfile.txt
가 저장된 버킷의 이름으로 변경합니다.
참고
레시피는 Ruby 애플리케이션입니다. 따라서 Ruby 코드를 레시피 본문에 배치할 수 있습니다. 코드가 반드시 ruby_block
리소스에 위치할 필요는 없습니다. 하지만 Chef는 Ruby 코드를 레시피 본문부터 실행한 다음 각 리소스를 순서대로 실행합니다. 이 예제의 경우, 레시피 본문에 다운로드 코드를 넣으면 다운로드 코드가 실패합니다. 이는 Ruby의 SDK 용도에 따라 달라지고 를 설치하는 chef_gem
리소스가 SDK 아직 실행되지 않았기 때문입니다. 리소스의 코드는 ruby_block
리소스가 실행될 때 실행되며, 이는 리소스가 Ruby용 코드를 설치한 후에 실행됩니다. chef_gem
SDK
다음과 같이 이 예제를 위한 스택을 생성합니다. 기존의 Windows 스택을 사용할 수 있습니다. 나중에 설명하듯이 쿡북을 업데이트하면 됩니다.
스택을 만듭니다
-
AWS OpsWorks스택 콘솔을 선택하고 Add Stack을 선택합니다.
다음 설정을 지정하고, 그 외 설정에 대해서는 기본값을 수락한 다음 [스택 추가]를 선택합니다. -
이름 – S3Download
-
리전 – 미국 서부(오레곤)
이 예제는 모든 리전에서 작동하지만 자습서의 경우 미국 서부(오레곤)를 사용하는 것이 좋습니다.
-
기본 운영 체제 - Microsoft Windows Server 2012 R2
-
-
[계층 추가]를 선택하여 스택에 다음 설정으로 사용자 지정 계층을 추가합니다.
-
이름 – S3Download
-
짧은 이름 - s3download
-
-
기본 설정을 사용하여 S3Download 계층에 24/7 인스턴스를 추가하고 해당 인스턴스를 시작합니다.
이제 레시피를 설치하고 실행할 수 있습니다.
레시피를 실행하려면
-
스택을 편집해 사용자 지정 쿡북을 활성화하고 다음 설정을 지정합니다.
-
리포지토리 유형 – S3 아카이브
-
리포지토리 URL - 이전에 기록한 쿡북의 URL 아카이브입니다.
기타 설정에 대해 기본값을 수락하고 [저장]을 선택하여 스택 구성을 업데이트합니다.
-
-
사용자 지정 쿡북 업데이트 스택 명령을 실행하여 스택의 온라인 인스턴스에 사용자 지정 쿡북의 최신 버전을 설치합니다. 쿡북의 이전 버전이 있으면 이 명령이 이전 버전을 덮어 씁니다.
-
실행할 레시피가
s3download::default
으로 설정된 상태에서 레시피 실행 스택 명령을 실행하여 레시피를 실행합니다. 이 명령은s3download::default
로 구성된 실행 목록을 사용하여 Chef 실행을 시작합니다.참고
보통 가지고 계신 게 있어요. AWS OpsWorks 스택은 레시피를 적절한 라이프사이클 이벤트에 할당하여 자동으로 실행합니다. 수동으로 이벤트를 트리거하여 그러한 레시피를 실행할 수도 있습니다. 스택 명령을 사용하여 설정 및 Configure 이벤트를 트리거할 수 있고, 배포 명령을 사용하여 Deploy 및 Undeploy 이벤트를 트리거할 수 있습니다.
레시피가 성공적으로 실행되면 이를 확인할 수 있습니다.
s3download를 확인하려면
-
가장 먼저 Chef 로그를 확인합니다. 스택에는 s3download1이라는 인스턴스가 하나 있어야 합니다. 인스턴스 페이지에서 인스턴스의 로그 열에서 표시를 선택하여 Chef 로그를 표시합니다. 아래로 스크롤하면 맨 아래 근처에 로그 메시지가 보입니다.
... [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) ...
-
인스턴스에 로그인하고 콘텐츠를 검사하는 RDP 데 사용합니다.
c:\chef