기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS OpsWorks 스택 데이터 백 레퍼런스
중요
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없게 되었습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS
AWS OpsWorks Stacks는 레시피에 대한 다양한 설정을 Chef 데이터 백 콘텐츠로 제공합니다. 이 참조에는 이 데이터 백 콘텐츠가 나열되어 있습니다.
데이터 백은 Chef 개념의 하나입니다. 데이터 백은 JSON 데이터로 저장되는 인스턴스에 대한 전역 변수로서, 이 JSON 데이터는 Chef에서 액세스할 수 있습니다. 예를 들어, 데이터 백은 앱의 소스 URL, 인스턴스의 호스트 이름, 관련 스택의 VPC 식별자와 같은 글로벌 변수를 저장할 수 있습니다. AWS OpsWorks 스택은 데이터 백을 각 스택의 인스턴스에 저장합니다. Linux 인스턴스에서 AWS OpsWorks Stacks는 디렉터리에 데이터 백을 저장합니다. /var/chef/runs/
Windows 인스턴스에서는 데이터 백이 run-ID
/data_bags
디렉터리에 저장됩니다. 두 경우 모두 drive
:\chef\runs\run-id
\data_bagsRun-ID는
AWS OpsWorks Stacks가 인스턴스에서 실행되는 각 Chef에 할당하는 고유 ID입니다. 이들 디렉터리에는 데이터 백 세트가 포함됩니다(하위 디렉터리). 각 데이터 백에는 여러 개의 데이터 백 콘텐츠를 포함하는 JSON 형식 파일인 데이터 백 항목이 0개 이상 들어 있습니다.
참고
AWS OpsWorks 스택은 암호화된 데이터 백을 지원하지 않습니다. 암호나 인증서 등 암호화된 형식의 민감한 데이터를 저장해야 하는 경우, 프라이빗 S3 버킷에 저장하는 것이 좋습니다. 그런 다음 Ruby용 Amazon SDK
데이터 백 콘텐츠는 다음 콘텐츠를 포함할 수 있습니다.
-
문자열 콘텐츠 - 표준 Ruby 구문을 따르며 작은따옴표 또는 큰따옴표를 사용할 수 있습니다. 단, 일부 특수 문자를 포함하는 문자열은 반드시 큰따옴표가 있어야 합니다. 자세한 정보는 Ruby
설명서 사이트를 참조하세요. -
부울 콘텐츠 -
true
또는false
입니다(따옴표 없음). -
숫자 콘텐츠 - 정수(예:
4
) 또는 소수(예:2.5
)입니다(따옴표 없음). -
목록 콘텐츠 - 대괄호로 묶인 쉼표로 구분된 값(예:
[ '80', '443' ]
)입니다(따옴표 없음). -
JSON 객체 - 추가 데이터 백 콘텐츠(예:
"my-app": {"elastic_ip": null,...}
)를 포함합니다.
Chef 레시피는 Chef 검색을 통해 또는 직접 데이터 백, 데이터 백 항목 및 데이터 백 콘텐츠에 액세스할 수 있습니다. 이제부터 두 액세스 접근 방식을 사용하는 방법을 설명합니다(Chef 검색이 선호됨).
Chef 검색을 통해 데이터 백에 액세스하려면 원하는 검색
-
aws_opsworks_app - 특정 스택의 배포된 앱 세트를 나타냅니다.
-
aws_opsworks_command - 특정 스택에서 실행된 명령 세트를 나타냅니다.
-
aws_opsworks_ecs_cluster - 특정 스택의 Amazon Elastic Container Service(Amazon ECS) 클러스터 인스턴스 집합을 나타냅니다.
-
aws_opsworks_elastic_load_balancer - 특정 스택의 Elastic Load Balancing 로드 밸런서 집합을 나타냅니다.
-
aws_opsworks_instance - 특정 스택의 인스턴스 집합을 나타냅니다.
-
aws_opsworks_layer - 특정 스택의 계층 집합을 나타냅니다.
-
aws_opsworks_rds_db_instance - 특정 스택의 Amazon Relational Database Service(RDS) 인스턴스 집합을 나타냅니다.
-
aws_opsworks_stack - 특정 스택을 나타냅니다.
-
aws_opsworks_user - 특정 스택의 사용자 집합을 나타냅니다.
검색 인덱스 이름을 알면 해당 검색 인덱스의 데이터 백의 콘텐츠에 액세스할 수 있습니다. 예를 들어 다음 레시피 코드는 aws_opsworks_app
검색 인덱스를 사용하여 aws_opsworks_app
데이터 백(aws_opsworks_app
디렉터리)에서 첫 번째 데이터 백 항목(첫 번째 JSON 파일)의 콘텐츠를 가져옵니다. 그런 다음 코드는 Chef 로그에 메시지 2개를 기록합니다. 한 메시지는 앱의 짧은 이름 데이터 백 콘텐츠(JSON 파일 내 문자열)를 포함하고 다른 메시지는 앱의 소스 URL 데이터 백 콘텐츠(JSON 파일 내 다른 문자열)를 포함합니다.
app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")
여기서 ['shortname']
및 ['app_source']['url']
은 해당 JSON 파일에서 다음 데이터 백 콘텐츠를 지정합니다.
{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }
검색 가능한 데이터 백 콘텐츠의 목록은 이 섹션의 참조 항목 단원을 참조하세요.
또한 한 데이터 백 안의 여러 데이터 백 항목에 대해 반복할 수 있습니다. 예를 들어 다음 레시피 코드는 이전 예제와 비슷합니다. 이 코드는 데이터 백 항목이 여러 개일 경우 데이터 백의 각 데이터 백 항목을 반복합니다.
search("aws_opsworks_app").each do |app| Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end
특정 데이터 백 콘텐츠의 존재를 알고 있다면 다음 구문을 사용하여 해당 데이터 백 항목을 찾을 수 있습니다.
search("
search_index
", "key
:value
").first
예를 들어 다음 레시피 코드는 aws_opsworks_app
검색 인덱스를 사용하여 mylinuxdemoapp
의 짧은 이름을 포함하는 데이터 백 항목을 찾습니다. 그런 다음 데이터 백 항목의 콘텐츠를 사용하여 해당 앱의 짧은 이름 및 소스 URL을 포함하는 메시지를 Chef 로그에 기록합니다.
app = search("aws_opsworks_app", "shortname:mylinuxdemoapp").first Chef::Log.info("********** For the app with the short name '#{app['shortname']}', the app's URL is '#{app['app_source']['url']}' **********")
aws_opsworks_instance
검색 인덱스에 한해, self:true
를 지정하여 현재 레시피가 실행되고 있는 인스턴스를 나타낼 수 있습니다. 다음 레시피 코드는 해당 데이터 백 항목의 콘텐츠를 사용하여 해당 인스턴스의 AWS OpsWorks Stacks에서 생성한 ID 및 운영 체제와 함께 Chef 로그에 메시지를 작성합니다.
instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")
Chef 검색을 사용하여 데이터 백, 데이터 백 항목 및 데이터 백 콘텐츠에 액세스하는 대신, 직접 이들에 액세스할 수 있습니다. 이렇게 하려면 data_bag
# Syntax: data_bag_item("the data bag name", "the file name in the data bag without the file extension") app = data_bag_item("aws_opsworks_app", "mylinuxdemoapp") Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") data_bag("aws_opsworks_app").each do |data_bag_item| app = data_bag_item("aws_opsworks_app", data_bag_item) Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end
두 접근 방식 중 Chef 검색을 사용할 것을 권장합니다. 이 설명서의 관련 예제에서는 모두 이 접근 방식을 예시합니다.
주제
- 앱 데이터 백(aws_opsworks_app)
- 명령 데이터 백(aws_opsworks_command)
- Amazon 클러스터 데이터 백(aws_opsworks_ecs_cluster)
- Elastic Load Balancing 데이터 백(aws_opsworks_elastic_load_balancer)
- 인스턴스 데이터 백(aws_opsworks_instance)
- 계층 데이터 백(aws_opsworks_layer)
- Amazon RDS 데이터 백(aws_opsworks_rds_db_instance)
- 스택 데이터 백(aws_opsworks_stack)
- 사용자 데이터 백(aws_opsworks_user)