기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
애플리케이션으로 데이터 전달
중요
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 만료되었으며 신규 및 기존 고객 모두에 대해 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 AWS re:Post
키-값 페어와 같은 데이터를 서버 상의 애플리케이션으로 전달하는 것이 유용한 경우가 있습니다. 이렇게 하려면 사용자 지정 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" } } }
예제에서는 짧은 이름이 app1
및 app2
이고 각각 세 개의 데이터 값을 갖는 앱이 두 개 있는 것으로 가정합니다. 함께 제공되는 레시피는 사용자가 앱의 짧은 이름을 사용하여 연결된 데이터를 식별하는 것으로 가정합니다. 다른 이름은 임의의 이름입니다. 앱 짧은 이름에 대한 자세한 정보는 설정 단원을 참조하세요.
다음 예제의 레시피는 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
의 각 앱에 대해 레시피가 다음을 수행합니다.
-
애플리케이션의
app_data.yml
디렉터리 내shared/config
하위 디렉터리에[:deploy_to]
라는 파일을 생성합니다.AWS OpsWorks Stacks가 앱을 설치하는 방법에 대한 자세한 내용은 섹션을 참조하세요Deploy 레시피.
-
앱의 사용자 지정 JSON 값을 YAML으로 변환하여
app_data.yml
에 기록합니다.
앱에 데이터를 전달하려면
-
스택에 앱을 추가하고 해당 앱의 짧은 이름을 기록해 둡니다. 자세한 내용은 앱 추가 단원을 참조하십시오.
-
앞서 설명한 대로 앱의 데이터가 포함된 사용자 지정 JSON을
deploy
속성에 추가합니다. 사용자 지정 JSON을 스택에 추가하는 방법에 대한 자세한 정보는 사용자 지정 JSON 사용 단원을 참조하세요. -
쿡북을 생성한 다음, 사용자 지정 JSON에 사용한 속성 이름에 맞게 수정한 이전 예제의 코드를 사용하여 쿡북에 레시피를 추가합니다. 쿡북 및 레시피를 생성하는 방법에 대한 자세한 정보는 쿡북과 레시피 단원을 참조하세요. 이 스택에 대한 사용자 지정 쿡북이 이미 있는 경우 기존 쿡북에 레시피를 추가하거나 기존 Deploy 레시피에 코드를 추가할 수 있습니다.
-
스택에 쿡북을 설치합니다. 자세한 내용은 사용자 지정 쿡북 설치 단원을 참조하십시오.
-
앱 서버 계층의 수명 주기 배포 이벤트에 레시피를 할당합니다. 그러면 AWS OpsWorks 스택이 부팅된 후 새 인스턴스마다 레시피를 실행합니다. 자세한 내용은 레시피 실행 단원을 참조하십시오.
-
앱을 배포합니다. 이제 사용자 데이터가 포함된 스택 구성 및 배포 속성이 설치됩니다.
참고
데이터 파일이 앱 배포 전에 배치되어야 할 경우 레시피를 계층의 설정 수명 주기 이벤트에도 할당할 수 있습니다. 이 이벤트는 인스턴스 부팅이 완료된 직후 한 번 발생합니다. 그러나 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을 업데이트하여 언제라도 앱의 데이터 값을 업데이트할 수 있습니다.
앱 데이터를 업데이트하려면
-
사용자 지정 JSON을 편집하여 데이터 값을 업데이트합니다.
-
앱을 다시 배포하면 AWS OpsWorks 스택이 스택의 인스턴스에서 배포 레시피를 실행하도록 지시합니다. 이러한 레시피는 업데이트된 스택 구성의 속성 및 배포 속성을 사용하므로 사용자 지정 레시피가 현재 값으로 데이터 파일을 업데이트합니다.