AWS 매개변수 및 암호 Lambda Extension을 사용하는 방법

AWS 파라미터 및 비밀 Lambda 확장 프로그램이란 무엇입니까?



https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-parameters-secrets-lambda-extension/

이 확장은 AWS Systems Manager Parameter Store에서 매개변수를 검색하고 AWS Secrets Manager에서 암호를 검색하는 데 사용할 수 있습니다.

당신을 행복하게 만드는 것은 무엇입니까?



지금까지는 AWS SDK 또는 기타 수단을 사용하여 Lambda 함수 프로세스에서 매개 변수와 암호를 얻었습니다.

이 확장을 사용하면 Lambda 함수의 수명 주기 동안 이러한 값을 캐시하고 재사용할 수 있습니다. 이렇게 하면 매개변수와 암호를 검색하는 대기 시간과 비용이 줄어듭니다.

기본 사용법



자세한 내용은 각 문서를 참조하십시오.

https://docs.aws.amazon.com/systems-manager/latest/userguide/ps-integration-lambda-extensions.html

https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_lambda.html

확장 레이어를 Lambda 함수로 설정



Lambda Extension은 Lambda Layers를 구성하여 사용할 수 있습니다. Managed Console에서 AWS 매개변수 및 Secrets Lambda Extension은 AWS 계층에서 선택할 수 있습니다.



CLI 또는 다른 방법에서 구성할 때 게시된 계층의 ARN을 지정합니다. 각 리전의 ARN 목록은 설명서에 나와 있습니다.

함수에 HTTP GET 코드 작성



이 확장을 사용하면 AWS SDK에서 처리가 제거되지만 HTTP GET 요청으로 값을 검색하는 코드는 여전히 필요합니다. 샘플 코드는 이 게시물의 후반부를 참조하세요.

실행 역할에 대한 IAM 정책 변경



확장 프로그램은 Lambda 함수 자체를 실행하는 데 사용되는 IAM 역할의 자격 증명을 사용합니다. 따라서 파라미터와 암호를 검색하려면 적절한 IAM 정책을 설정해야 합니다. 예를 들어 Parameter Store의 경우 ssm:GetParameter 및 kms:Decrypt(SecureString을 사용하는 경우)가 필요합니다.

(선택 사항) 함수에 대한 환경 변수 설정



캐시에 대한 TTL, 로그 수준 등은 Lambda 함수에 대한 환경 변수를 설정하여 제어할 수 있습니다.

샘플 코드



Amazon Linux 2 AMI 퍼블릭 파라미터를 참조하는 예입니다.

참고 사항은 다음과 같습니다.

  • 매개변수 이름의 /를 인코딩해야 함
  • 확장 프로그램의 로컬 HTTP 서버 포트가 기본 2773에서 시작합니다.
  • 환경 변수 PARAMETERS_SECRETS_EXTENSION_HTTP_PORT를 통해 변경할 수 있습니다
  • .

  • AWS_SESSION_TOKEN 환경 변수가 있는 'X-Aws-Parameters-Secrets-Token' 헤더를 추가해야 합니다.
  • 지정하지 않으면 401 권한이 없습니다.


  • const https = require('http');
    
    exports.handler = function(event, context, callback) {
    
        const options = {
            hostname: 'localhost',
            port: 2773,
            path: '/systemsmanager/parameters/get/?name=%2Faws%2Fservice%2Fami-amazon-linux-latest%2Famzn-ami-hvm-x86_64-gp2',
            headers: {
                'X-Aws-Parameters-Secrets-Token': process.env.AWS_SESSION_TOKEN
            },
            method: 'GET'
        };
    
        const req = https.request(options, res => {
            res.on('data', d => {
                console.log("Response from cache: "+d);
                return d;
            });
        });
    
        req.on('error', error => {
            console.error(error);
        });
    
        req.end();
    };
    


    실행 결과의 로그는 다음과 같습니다. 매개변수 값을 얻었습니다!

    [AWS Parameters and Secrets Lambda Extension] 2022/10/19 06:51:08 PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL is not present. Log level set to info.
    [AWS Parameters and Secrets Lambda Extension] 2022/10/19 06:51:08 INFO Systems Manager Parameter Store and Secrets Manager Lambda Extension 1.0.94
    [AWS Parameters and Secrets Lambda Extension] 2022/10/19 06:51:08 INFO Serving on port 2773
    EXTENSION   Name: AWSParametersAndSecretsLambdaExtension    State: Ready    Events: [INVOKE,SHUTDOWN]
    START RequestId: bb5bcc53-38cc-42d7-9dc5-xxxxxxxxxxxx Version: $LATEST
    [AWS Parameters and Secrets Lambda Extension] 2022/10/19 06:51:08 INFO ready to serve traffic
    2022-10-19T06:51:09.247Z    bb5bcc53-38cc-42d7-9dc5-xxxxxxxxxxxx    INFO    Response from cache: {"Parameter":{"ARN":"arn:aws:ssm:ap-northeast-1::parameter/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2","DataType":"text","LastModifiedDate":"2022-10-04T17:56:51.889Z","Name":"/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-gp2","Selector":null,"SourceResult":null,"Type":"String","Value":"ami-0fb16641312307fa9","Version":49},"ResultMetadata":{}}
    END RequestId: bb5bcc53-38cc-42d7-9dc5-xxxxxxxxxxxx
    REPORT RequestId: bb5bcc53-38cc-42d7-9dc5-xxxxxxxxxxxx  Duration: 796.05 ms Billed Duration: 797 ms Memory Size: 128 MB Max Memory Used: 76 MB  Init Duration: 324.74 ms
    


    이것이 다른 사람에게 도움이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기