쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

보안 암호 값 검색

포커스 모드

이 페이지에서

보안 암호 값 검색 - AWS IoT Greengrass

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

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

보안 암호 관리자 IPC 서비스를 사용하여 코어 디바이스의 보안 암호에서 보안 암호 값을 검색합니다. 보안 암호 관리자 구성 요소를 사용하여 암호화된 보안 암호를 코어 디바이스에 배포합니다. 그런 다음 IPC 작업을 사용하여 보안 암호를 해독하고 사용자 지정 구성 요소에서 해당 값을 사용할 수 있습니다.

최소 SDK 버전

다음 표에는 코어 디바이스의 보안 암호에서 보안 암호 값을 검색하는 데 사용해야 AWS IoT Device SDK 하는의 최소 버전이 나열되어 있습니다.

권한 부여

사용자 지정 구성 요소에서 보안 암호 관리자를 사용하려면 구성 요소가 코어 디바이스에 저장하는 보안 암호의 값을 가져올 수 있도록 허용하는 권한 부여 정책을 정의해야 합니다. 권한 부여 정책 정의에 대한 자세한 내용은 IPC 작업을 수행하도록 구성 요소 승인 섹션을 참조하세요.

보안 암호 관리자에 대한 권한 부여 정책에는 다음 속성이 있습니다.

IPC 서비스 식별자: aws.greengrass.SecretManager

Operation 설명 리소스

aws.greengrass#GetSecretValue 또는 *

구성 요소가 코어 디바이스에서 암호화된 보안 암호의 값을 가져올 수 있도록 허용합니다.

모든 보안 암호*에 대한 액세스를 허용하는 Secrets Manager 보안 암호 ARN또는 .

권한 부여 정책 예제

다음 권한 부여 정책 예제를 참조하면 구성 요소의 권한 부여 정책을 구성하는 데 도움이 됩니다.

예 권한 부여 정책 예제

다음 예제 권한 부여 정책에서는 구성 요소가 코어 디바이스에서 보안 암호 값을 가져올 수 있도록 허용합니다.

참고

프로덕션 환경에서는 구성 요소가 사용하는 보안 암호만 검색하도록 권한 부여 정책의 범위를 줄이는 것이 좋습니다. 구성 요소를 배포할 ARNs 때 * 와일드카드를 보안 암호 목록으로 변경할 수 있습니다.

{ "accessControl": { "aws.greengrass.SecretManager": { "com.example.MySecretComponent:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } }

GetSecretValue

코어 디바이스에 저장하는 보안 암호의 값을 가져옵니다.

이 작업은 AWS 클라우드에서 보안 암호의 값을 가져오는 데 사용할 수 있는 Secrets Manager 작업과 유사합니다. 자세한 내용은 AWS Secrets Manager API 참조GetSecretValue 섹션을 참조하세요.

요청

이 작업의 요청에서는 다음 파라미터를 사용합니다.

refresh(Python: refresh)

(선택 사항): 요청된 보안 암호를 AWS Secrets Manager 서비스의 최신 값과 동기화할지 여부입니다.

true로 설정하면 Secret Manager가 지정된 보안 암호 레이블의 최신 값에 대한 AWS Secrets Manager 서비스를 요청하고 해당 값을 응답으로 반환합니다. 그렇지 않으면 로컬에 저장된 보안 암호 값이 반환됩니다.

이 파라미터는 요청의 versionId 파라미터와 함께 사용할 수 없습니다. 이 파라미터는 Nucleus 2.13.0 이상과 함께 사용할 때 작동합니다.

secretId(Python: secret_id)

가져올 보안 암호의 이름입니다. Amazon 리소스 이름(ARN) 또는 보안 암호의 표시 이름을 지정할 수 있습니다.

versionId(Python: version_id)

(선택 사항) 가져올 버전의 ID입니다.

versionId 또는 versionStage를 지정할 수 있습니다.

versionId 또는 versionStage를 지정하지 않으면 이 작업의 기본값은 AWSCURRENT 레이블이 있는 버전입니다.

versionStage(Python: version_stage)

(선택 사항) 가져올 버전의 스테이징 레이블입니다.

versionId 또는 versionStage를 지정할 수 있습니다.

versionId 또는 versionStage를 지정하지 않으면 이 작업의 기본값은 AWSCURRENT 레이블이 있는 버전입니다.

응답

이 작업의 응답에는 다음 정보가 포함됩니다.

secretId(Python: secret_id)

보안 암호의 ID입니다.

versionId(Python: version_id)

이 보안 암호 버전의 ID입니다.

versionStage(Python: version_stage)

이 보안 암호 버전에 연결된 스테이징 레이블의 목록입니다.

secretValue(Python: secret_value)

이 보안 암호 버전의 값입니다. 이 객체 SecretValue에는 다음 정보가 포함됩니다.

secretString(Python: secret_string)

Secrets Manager에 문자열로 제공한 보호된 보안 암호 정보의 복호화된 부분입니다.

secretBinary(Python: secret_binary)

(선택 사항) Secrets Manager에 바이트 배열 형식의 이진 데이터로 제공한 보호된 보안 암호 정보의 복호화된 부분입니다. 이 속성에는 base64로 인코딩된 문자열인 이진 데이터가 포함됩니다.

Secrets Manager 콘솔에서 보안 암호를 생성한 경우 이 속성은 사용되지 않습니다.

예시

다음 예제에서는 사용자 지정 구성 요소 코드에서 이 작업을 직접 호출하는 방법을 보여줍니다.

Java (IPC client V1)
예: 보안 암호 값 가져오기
참고

이 예제에서는 IPCUtils 클래스를 사용하여 AWS IoT Greengrass Core IPC 서비스에 대한 연결을 생성합니다. 자세한 내용은 AWS IoT Greengrass Core IPC 서비스에 연결 단원을 참조하십시오.

package com.aws.greengrass.docs.samples.ipc; import com.aws.greengrass.docs.samples.ipc.util.IPCUtils; import software.amazon.awssdk.aws.greengrass.GetSecretValueResponseHandler; import software.amazon.awssdk.aws.greengrass.GreengrassCoreIPCClient; import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; import software.amazon.awssdk.aws.greengrass.model.GetSecretValueResponse; import software.amazon.awssdk.aws.greengrass.model.UnauthorizedError; import software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class GetSecretValue { public static final int TIMEOUT_SECONDS = 10; public static void main(String[] args) { String secretArn = args[0]; String versionStage = args[1]; try (EventStreamRPCConnection eventStreamRPCConnection = IPCUtils.getEventStreamRpcConnection()) { GreengrassCoreIPCClient ipcClient = new GreengrassCoreIPCClient(eventStreamRPCConnection); GetSecretValueResponseHandler responseHandler = GetSecretValue.getSecretValue(ipcClient, secretArn, versionStage); CompletableFuture<GetSecretValueResponse> futureResponse = responseHandler.getResponse(); try { GetSecretValueResponse response = futureResponse.get(TIMEOUT_SECONDS, TimeUnit.SECONDS); response.getSecretValue().postFromJson(); String secretString = response.getSecretValue().getSecretString(); System.out.println("Successfully retrieved secret value: " + secretString); } catch (TimeoutException e) { System.err.println("Timeout occurred while retrieving secret: " + secretArn); } catch (ExecutionException e) { if (e.getCause() instanceof UnauthorizedError) { System.err.println("Unauthorized error while retrieving secret: " + secretArn); } else { throw e; } } } catch (InterruptedException e) { System.out.println("IPC interrupted."); } catch (ExecutionException e) { System.err.println("Exception occurred when using IPC."); e.printStackTrace(); System.exit(1); } } public static GetSecretValueResponseHandler getSecretValue(GreengrassCoreIPCClient greengrassCoreIPCClient, String secretArn, String versionStage) { GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest(); getSecretValueRequest.setSecretId(secretArn); getSecretValueRequest.setVersionStage(versionStage); return greengrassCoreIPCClient.getSecretValue(getSecretValueRequest, Optional.empty()); } }
Python (IPC client V1)
예: 보안 암호 값 가져오기
참고

이 예제에서는 Python v2 AWS IoT Device SDK 용의 버전 1.5.4 이상을 사용하고 있다고 가정합니다.

import json import awsiot.greengrasscoreipc from awsiot.greengrasscoreipc.model import ( GetSecretValueRequest, GetSecretValueResponse, UnauthorizedError ) secret_id = 'arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef' TIMEOUT = 10 ipc_client = awsiot.greengrasscoreipc.connect() request = GetSecretValueRequest() request.secret_id = secret_id request.version_stage = 'AWSCURRENT' operation = ipc_client.new_get_secret_value() operation.activate(request) future_response = operation.get_response() response = future_response.result(TIMEOUT) secret_json = json.loads(response.secret_value.secret_string) # Handle secret value.
JavaScript
예: 보안 암호 값 가져오기
import { GetSecretValueRequest, } from 'aws-iot-device-sdk-v2/dist/greengrasscoreipc/model'; import * as greengrasscoreipc from "aws-iot-device-sdk-v2/dist/greengrasscoreipc"; class GetSecretValue { private readonly secretId : string; private readonly versionStage : string; private ipcClient : greengrasscoreipc.Client constructor() { this.secretId = "<define_your_own_secretId>" this.versionStage = "<define_your_own_versionStage>" this.getSecretValue().then(r => console.log("Started workflow")); } private async getSecretValue() { try { this.ipcClient = await getIpcClient(); const getSecretValueRequest : GetSecretValueRequest = { secretId: this.secretId, versionStage: this.versionStage, }; const result = await this.ipcClient.getSecretValue(getSecretValueRequest); const secretString = result.secretValue.secretString; console.log("Successfully retrieved secret value: " + secretString) } catch (e) { // parse the error depending on your use cases throw e } } } export async function getIpcClient(){ try { const ipcClient = greengrasscoreipc.createClient(); await ipcClient.connect() .catch(error => { // parse the error depending on your use cases throw error; }); return ipcClient } catch (err) { // parse the error depending on your use cases throw err } } const getSecretValue = new GetSecretValue();
예: 보안 암호 값 가져오기
참고

이 예제에서는 IPCUtils 클래스를 사용하여 AWS IoT Greengrass Core IPC 서비스에 대한 연결을 생성합니다. 자세한 내용은 AWS IoT Greengrass Core IPC 서비스에 연결 단원을 참조하십시오.

package com.aws.greengrass.docs.samples.ipc; import com.aws.greengrass.docs.samples.ipc.util.IPCUtils; import software.amazon.awssdk.aws.greengrass.GetSecretValueResponseHandler; import software.amazon.awssdk.aws.greengrass.GreengrassCoreIPCClient; import software.amazon.awssdk.aws.greengrass.model.GetSecretValueRequest; import software.amazon.awssdk.aws.greengrass.model.GetSecretValueResponse; import software.amazon.awssdk.aws.greengrass.model.UnauthorizedError; import software.amazon.awssdk.eventstreamrpc.EventStreamRPCConnection; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class GetSecretValue { public static final int TIMEOUT_SECONDS = 10; public static void main(String[] args) { String secretArn = args[0]; String versionStage = args[1]; try (EventStreamRPCConnection eventStreamRPCConnection = IPCUtils.getEventStreamRpcConnection()) { GreengrassCoreIPCClient ipcClient = new GreengrassCoreIPCClient(eventStreamRPCConnection); GetSecretValueResponseHandler responseHandler = GetSecretValue.getSecretValue(ipcClient, secretArn, versionStage); CompletableFuture<GetSecretValueResponse> futureResponse = responseHandler.getResponse(); try { GetSecretValueResponse response = futureResponse.get(TIMEOUT_SECONDS, TimeUnit.SECONDS); response.getSecretValue().postFromJson(); String secretString = response.getSecretValue().getSecretString(); System.out.println("Successfully retrieved secret value: " + secretString); } catch (TimeoutException e) { System.err.println("Timeout occurred while retrieving secret: " + secretArn); } catch (ExecutionException e) { if (e.getCause() instanceof UnauthorizedError) { System.err.println("Unauthorized error while retrieving secret: " + secretArn); } else { throw e; } } } catch (InterruptedException e) { System.out.println("IPC interrupted."); } catch (ExecutionException e) { System.err.println("Exception occurred when using IPC."); e.printStackTrace(); System.exit(1); } } public static GetSecretValueResponseHandler getSecretValue(GreengrassCoreIPCClient greengrassCoreIPCClient, String secretArn, String versionStage) { GetSecretValueRequest getSecretValueRequest = new GetSecretValueRequest(); getSecretValueRequest.setSecretId(secretArn); getSecretValueRequest.setVersionStage(versionStage); return greengrassCoreIPCClient.getSecretValue(getSecretValueRequest, Optional.empty()); } }

예시

다음 예제를 사용하여 구성 요소에서 Secret Manager IPC 서비스를 사용하는 방법을 알아봅니다.

이 예제 구성 요소에서는 코어 디바이스에 배포하는 보안 암호의 값을 출력합니다.

중요

이 예제 구성 요소는 보안 암호의 값을 출력하므로 테스트 데이터를 저장하는 보안 암호로만 사용하세요. 중요한 정보를 저장하는 보안 암호의 값을 출력하기 위해 이 구성 요소를 사용하지 마세요.

레시피

다음 예제 레시피는 보안 암호 ARN 구성 파라미터를 정의하고 구성 요소가 코어 디바이스에서 보안 암호의 값을 가져올 수 있도록 허용합니다.

참고

프로덕션 환경에서는 구성 요소가 사용하는 보안 암호만 검색하도록 권한 부여 정책의 범위를 줄이는 것이 좋습니다. 구성 요소를 배포할 ARNs 때 * 와일드카드를 보안 암호 목록으로 변경할 수 있습니다.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PrintSecret", "ComponentVersion": "1.0.0", "ComponentDescription": "Prints the value of an AWS Secrets Manager secret.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.SecretManager": { "VersionRequirement": "^2.0.0", "DependencyType": "HARD" } }, "ComponentConfiguration": { "DefaultConfiguration": { "SecretArn": "", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "python3 -m pip install --user awsiotsdk", "Run": "python3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "py -3 -m pip install --user awsiotsdk", "Run": "py -3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PrintSecret ComponentVersion: 1.0.0 ComponentDescription: Prints the value of a Secrets Manager secret. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.SecretManager: VersionRequirement: "^2.0.0" DependencyType: HARD ComponentConfiguration: DefaultConfiguration: SecretArn: '' accessControl: aws.greengrass.SecretManager: com.example.PrintSecret:secrets:1: policyDescription: Allows access to a secret. operations: - aws.greengrass#GetSecretValue resources: - "*" Manifests: - Platform: os: linux Lifecycle: install: python3 -m pip install --user awsiotsdk Run: python3 -u {artifacts:path}/print_secret.py "{configuration:/SecretArn}" - Platform: os: windows Lifecycle: install: py -3 -m pip install --user awsiotsdk Run: py -3 -u {artifacts:path}/print_secret.py "{configuration:/SecretArn}"

아티팩트

다음 예제 Python 애플리케이션은 보안 암호 관리자 IPC 서비스를 사용하여 코어 디바이스에서 보안 암호 값을 가져오는 방법을 보여줍니다.

import concurrent.futures import json import sys import traceback import awsiot.greengrasscoreipc from awsiot.greengrasscoreipc.model import ( GetSecretValueRequest, GetSecretValueResponse, UnauthorizedError ) TIMEOUT = 10 if len(sys.argv) == 1: print('Provide SecretArn in the component configuration.', file=sys.stdout) exit(1) secret_id = sys.argv[1] try: ipc_client = awsiot.greengrasscoreipc.connect() request = GetSecretValueRequest() request.secret_id = secret_id operation = ipc_client.new_get_secret_value() operation.activate(request) future_response = operation.get_response() try: response = future_response.result(TIMEOUT) secret_json = json.loads(response.secret_value.secret_string) print('Successfully got secret: ' + secret_id) print('Secret value: ' + str(secret_json)) except concurrent.futures.TimeoutError: print('Timeout occurred while getting secret: ' + secret_id, file=sys.stderr) except UnauthorizedError as e: print('Unauthorized error while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception as e: print('Exception while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception: print('Exception occurred when using IPC.', file=sys.stderr) traceback.print_exc() exit(1)

사용법

이 예제 구성 요소를 보안 암호 관리자 구성 요소와 함께 사용하여 코어 디바이스의 보안 암호 값을 배포하고 출력할 수 있습니다.

테스트 보안 암호를 생성, 배포 및 출력하려면
  1. 테스트 데이터를 사용하여 Secrets Manager 보안 암호를 생성합니다.

    Linux or Unix
    aws secretsmanager create-secret \ --name MyTestGreengrassSecret \ --secret-string '{"my-secret-key": "my-secret-value"}'
    Windows Command Prompt (CMD)
    aws secretsmanager create-secret ^ --name MyTestGreengrassSecret ^ --secret-string '{"my-secret-key": "my-secret-value"}'
    PowerShell
    aws secretsmanager create-secret ` --name MyTestGreengrassSecret ` --secret-string '{"my-secret-key": "my-secret-value"}'

    다음 단계에서 사용할 보안 암호ARN의를 저장합니다.

    자세한 내용은 AWS Secrets Manager 사용 설명서보안 암호 생성을 참조하세요.

  2. 다음 구성 병합 업데이트를 사용하여 보안 암호 관리자 구성 요소(aws.greengrass.SecretManager)를 배포합니다. 이전에 생성한 보안 암호ARN의를 지정합니다.

    { "cloudSecrets": [ { "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef" } ] }

    자세한 내용은 디바이스에 AWS IoT Greengrass 구성 요소 배포 또는 Greengrass CLI 배포 명령을 참조하세요.

  3. 다음 구성 병합 업데이트를 사용하여 이 섹션의 예제 구성 요소를 생성하고 배포합니다. 이전에 생성한 보안 암호ARN의를 지정합니다.

    { "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef" ] } } } }

    자세한 내용은 AWS IoT Greengrass 구성 요소 생성 단원을 참조하세요.

  4. AWS IoT Greengrass 코어 소프트웨어 로그를 보고 배포가 성공했는지 확인하고 구성 com.example.PrintSecret 요소 로그를 보고 인쇄된 보안 암호 값을 확인합니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.

이 예제 구성 요소에서는 코어 디바이스에 배포하는 보안 암호의 값을 출력합니다.

중요

이 예제 구성 요소는 보안 암호의 값을 출력하므로 테스트 데이터를 저장하는 보안 암호로만 사용하세요. 중요한 정보를 저장하는 보안 암호의 값을 출력하기 위해 이 구성 요소를 사용하지 마세요.

레시피

다음 예제 레시피는 보안 암호 ARN 구성 파라미터를 정의하고 구성 요소가 코어 디바이스에서 보안 암호의 값을 가져올 수 있도록 허용합니다.

참고

프로덕션 환경에서는 구성 요소가 사용하는 보안 암호만 검색하도록 권한 부여 정책의 범위를 줄이는 것이 좋습니다. 구성 요소를 배포할 ARNs 때 * 와일드카드를 보안 암호 목록으로 변경할 수 있습니다.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PrintSecret", "ComponentVersion": "1.0.0", "ComponentDescription": "Prints the value of an AWS Secrets Manager secret.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.SecretManager": { "VersionRequirement": "^2.0.0", "DependencyType": "HARD" } }, "ComponentConfiguration": { "DefaultConfiguration": { "SecretArn": "", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "python3 -m pip install --user awsiotsdk", "Run": "python3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "py -3 -m pip install --user awsiotsdk", "Run": "py -3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PrintSecret ComponentVersion: 1.0.0 ComponentDescription: Prints the value of a Secrets Manager secret. ComponentPublisher: Amazon ComponentDependencies: aws.greengrass.SecretManager: VersionRequirement: "^2.0.0" DependencyType: HARD ComponentConfiguration: DefaultConfiguration: SecretArn: '' accessControl: aws.greengrass.SecretManager: com.example.PrintSecret:secrets:1: policyDescription: Allows access to a secret. operations: - aws.greengrass#GetSecretValue resources: - "*" Manifests: - Platform: os: linux Lifecycle: install: python3 -m pip install --user awsiotsdk Run: python3 -u {artifacts:path}/print_secret.py "{configuration:/SecretArn}" - Platform: os: windows Lifecycle: install: py -3 -m pip install --user awsiotsdk Run: py -3 -u {artifacts:path}/print_secret.py "{configuration:/SecretArn}"
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PrintSecret", "ComponentVersion": "1.0.0", "ComponentDescription": "Prints the value of an AWS Secrets Manager secret.", "ComponentPublisher": "Amazon", "ComponentDependencies": { "aws.greengrass.SecretManager": { "VersionRequirement": "^2.0.0", "DependencyType": "HARD" } }, "ComponentConfiguration": { "DefaultConfiguration": { "SecretArn": "", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "*" ] } } } } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "install": "python3 -m pip install --user awsiotsdk", "Run": "python3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "install": "py -3 -m pip install --user awsiotsdk", "Run": "py -3 -u {artifacts:path}/print_secret.py \"{configuration:/SecretArn}\"" } } ] }

아티팩트

다음 예제 Python 애플리케이션은 보안 암호 관리자 IPC 서비스를 사용하여 코어 디바이스에서 보안 암호 값을 가져오는 방법을 보여줍니다.

import concurrent.futures import json import sys import traceback import awsiot.greengrasscoreipc from awsiot.greengrasscoreipc.model import ( GetSecretValueRequest, GetSecretValueResponse, UnauthorizedError ) TIMEOUT = 10 if len(sys.argv) == 1: print('Provide SecretArn in the component configuration.', file=sys.stdout) exit(1) secret_id = sys.argv[1] try: ipc_client = awsiot.greengrasscoreipc.connect() request = GetSecretValueRequest() request.secret_id = secret_id operation = ipc_client.new_get_secret_value() operation.activate(request) future_response = operation.get_response() try: response = future_response.result(TIMEOUT) secret_json = json.loads(response.secret_value.secret_string) print('Successfully got secret: ' + secret_id) print('Secret value: ' + str(secret_json)) except concurrent.futures.TimeoutError: print('Timeout occurred while getting secret: ' + secret_id, file=sys.stderr) except UnauthorizedError as e: print('Unauthorized error while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception as e: print('Exception while getting secret: ' + secret_id, file=sys.stderr) raise e except Exception: print('Exception occurred when using IPC.', file=sys.stderr) traceback.print_exc() exit(1)

사용법

이 예제 구성 요소를 보안 암호 관리자 구성 요소와 함께 사용하여 코어 디바이스의 보안 암호 값을 배포하고 출력할 수 있습니다.

테스트 보안 암호를 생성, 배포 및 출력하려면
  1. 테스트 데이터를 사용하여 Secrets Manager 보안 암호를 생성합니다.

    Linux or Unix
    aws secretsmanager create-secret \ --name MyTestGreengrassSecret \ --secret-string '{"my-secret-key": "my-secret-value"}'
    Windows Command Prompt (CMD)
    aws secretsmanager create-secret ^ --name MyTestGreengrassSecret ^ --secret-string '{"my-secret-key": "my-secret-value"}'
    PowerShell
    aws secretsmanager create-secret ` --name MyTestGreengrassSecret ` --secret-string '{"my-secret-key": "my-secret-value"}'
    aws secretsmanager create-secret \ --name MyTestGreengrassSecret \ --secret-string '{"my-secret-key": "my-secret-value"}'

    다음 단계에서 사용할 보안 암호ARN의를 저장합니다.

    자세한 내용은 AWS Secrets Manager 사용 설명서보안 암호 생성을 참조하세요.

  2. 다음 구성 병합 업데이트를 사용하여 보안 암호 관리자 구성 요소(aws.greengrass.SecretManager)를 배포합니다. 이전에 생성한 보안 암호ARN의를 지정합니다.

    { "cloudSecrets": [ { "arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef" } ] }

    자세한 내용은 디바이스에 AWS IoT Greengrass 구성 요소 배포 또는 Greengrass CLI 배포 명령을 참조하세요.

  3. 다음 구성 병합 업데이트를 사용하여 이 섹션의 예제 구성 요소를 생성하고 배포합니다. 이전에 생성한 보안 암호ARN의를 지정합니다.

    { "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret", "accessControl": { "aws.greengrass.SecretManager": { "com.example.PrintSecret:secrets:1": { "policyDescription": "Allows access to a secret.", "operations": [ "aws.greengrass#GetSecretValue" ], "resources": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestGreengrassSecret-abcdef" ] } } } }

    자세한 내용은 AWS IoT Greengrass 구성 요소 생성 단원을 참조하세요.

  4. AWS IoT Greengrass 코어 소프트웨어 로그를 보고 배포가 성공했는지 확인하고 구성 com.example.PrintSecret 요소 로그를 보고 인쇄된 보안 암호 값을 확인합니다. 자세한 내용은 AWS IoT Greengrass 로그 모니터링 단원을 참조하십시오.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.