애플리케이션으로 데이터 전달 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

애플리케이션으로 데이터 전달

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 만료되었으며 신규 및 기존 고객 모두에 대해 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 AWS re:Post 또는 AWS Premium Support를 통해 AWS Support 팀에 문의하세요.

키-값 페어와 같은 데이터를 서버 상의 애플리케이션으로 전달하는 것이 유용한 경우가 있습니다. 이렇게 하려면 사용자 지정 JSON을 사용하여 데이터를 스택에 추가합니다. AWS OpsWorks Stacks는 각 수명 주기 이벤트에 대해 각 인스턴스의 노드 객체에 데이터를 추가합니다.

그러나 레시피는 Chef 속성을 사용하여 노드 객체로부터 사용자 지정 JSON 데이터를 가져올 수 있지만 애플리케이션을 그럴 수 없습니다. 사용자 지정 JSON 데이터를 하나 이상의 애플리케이션으로 가져오기 위한 접근 방법 한 가지는 node 객체에서 데이터를 추출하여 애플리케이션이 읽을 수 있는 파일에 기록하는 사용자 지정 레시피를 구현하는 것입니다. 이 항목의 예제에서는 데이터를 YAML 파일로 기록하는 방법을 보여주지만, JSON 또는 XML과 같은 다른 형식에도 동일한 기본 접근 방법을 사용할 수 있습니다.

키-값 데이터를 스택의 인스턴스에 전달하려면 다음과 같은 사용자 지정 JSON을 스택에 추가합니다. 사용자 지정 JSON을 스택에 추가하는 방법에 대한 자세한 정보는 사용자 지정 JSON 사용 단원을 참조하세요.

{ "my_app_data": { "app1": { "key1": "value1", "key2": "value2", "key3": "value3" }, "app2": { "key1": "value1", "key2": "value2", "key3": "value3" } } }

예제에서는 짧은 이름이 app1app2이고 각각 세 개의 데이터 값을 갖는 앱이 두 개 있는 것으로 가정합니다. 함께 제공되는 레시피는 사용자가 앱의 짧은 이름을 사용하여 연결된 데이터를 식별하는 것으로 가정합니다. 다른 이름은 임의의 이름입니다. 앱 짧은 이름에 대한 자세한 정보는 설정 단원을 참조하세요.

다음 예제의 레시피는 deploy 속성에서 각 앱에 대한 데이터를 추출하여 .yml 파일에 저장하는 방법을 보여줍니다. 이 레시피는 사용자 지정 JSON이 각 앱에 대한 데이터를 포함하는 것으로 가정합니다.

node[:deploy].each do |app, deploy| file File.join(deploy[:deploy_to], 'shared', 'config', 'app_data.yml') do content YAML.dump(node[:my_app_data][app].to_hash) end end

deploy 속성에는 각 앱마다 앱의 짧은 이름으로 명명된 속성이 하나씩 포함됩니다. 각 앱 속성에는 앱에 대한 다양한 정보를 표현하는 속성 세트가 포함됩니다. 이 예제는 [:deploy][:app_short_name][:deploy_to] 속성으로 표현되는 앱의 배포 디렉터리를 사용합니다. [:deploy]에 대한 자세한 내용은 deploy 속성 단원을 참조하세요.

deploy의 각 앱에 대해 레시피가 다음을 수행합니다.

  1. 애플리케이션의 app_data.yml 디렉터리 내 shared/config 하위 디렉터리에 [:deploy_to]라는 파일을 생성합니다.

    AWS OpsWorks Stacks가 앱을 설치하는 방법에 대한 자세한 내용은 섹션을 참조하세요Deploy 레시피.

  2. 앱의 사용자 지정 JSON 값을 YAML으로 변환하여 app_data.yml에 기록합니다.

앱에 데이터를 전달하려면
  1. 스택에 앱을 추가하고 해당 앱의 짧은 이름을 기록해 둡니다. 자세한 내용은 앱 추가 단원을 참조하십시오.

  2. 앞서 설명한 대로 앱의 데이터가 포함된 사용자 지정 JSON을 deploy 속성에 추가합니다. 사용자 지정 JSON을 스택에 추가하는 방법에 대한 자세한 정보는 사용자 지정 JSON 사용 단원을 참조하세요.

  3. 쿡북을 생성한 다음, 사용자 지정 JSON에 사용한 속성 이름에 맞게 수정한 이전 예제의 코드를 사용하여 쿡북에 레시피를 추가합니다. 쿡북 및 레시피를 생성하는 방법에 대한 자세한 정보는 쿡북과 레시피 단원을 참조하세요. 이 스택에 대한 사용자 지정 쿡북이 이미 있는 경우 기존 쿡북에 레시피를 추가하거나 기존 Deploy 레시피에 코드를 추가할 수 있습니다.

  4. 스택에 쿡북을 설치합니다. 자세한 내용은 사용자 지정 쿡북 설치 단원을 참조하십시오.

  5. 앱 서버 계층의 수명 주기 배포 이벤트에 레시피를 할당합니다. 그러면 AWS OpsWorks 스택이 부팅된 후 새 인스턴스마다 레시피를 실행합니다. 자세한 내용은 레시피 실행 단원을 참조하십시오.

  6. 앱을 배포합니다. 이제 사용자 데이터가 포함된 스택 구성 및 배포 속성이 설치됩니다.

참고

데이터 파일이 앱 배포 전에 배치되어야 할 경우 레시피를 계층의 설정 수명 주기 이벤트에도 할당할 수 있습니다. 이 이벤트는 인스턴스 부팅이 완료된 직후 한 번 발생합니다. 그러나 AWS OpsWorks Stacks는 아직 배포 디렉터리를 생성하지 않았으므로 레시피는 데이터 파일을 생성하기 전에 필요한 디렉터리를 명시적으로 생성해야 합니다. 다음 예제에서는 명시적으로 앱의 /shared/config 디렉터리를 생성한 후 여기에 데이터 파일을 생성합니다.

node[:deploy].each do |app, deploy| directory "#{deploy[:deploy_to]}/shared/config" do owner "deploy" group "www-data" mode 0774 recursive true action :create end file File.join(deploy[:deploy_to], 'shared', 'config', 'app_data.yml') do content YAML.dump(node[:my_app_data][app].to_hash) end end

데이터를 로드하려면 다음의 Sinatra 코드와 같은 코드를 사용할 수 있습니다.

#!/usr/bin/env ruby # encoding: UTF-8 require 'sinatra' require 'yaml' get '/' do YAML.load(File.read(File.join('..', '..', 'shared', 'config', 'app_data.yml'))) End

다음과 같이 사용자 지정 JSON을 업데이트하여 언제라도 앱의 데이터 값을 업데이트할 수 있습니다.

앱 데이터를 업데이트하려면
  1. 사용자 지정 JSON을 편집하여 데이터 값을 업데이트합니다.

  2. 앱을 다시 배포하면 AWS OpsWorks 스택이 스택의 인스턴스에서 배포 레시피를 실행하도록 지시합니다. 이러한 레시피는 업데이트된 스택 구성의 속성 및 배포 속성을 사용하므로 사용자 지정 레시피가 현재 값으로 데이터 파일을 업데이트합니다.