Доступ к параметрам облачной информации из Java Lambda - PullRequest
0 голосов
/ 27 августа 2018

У меня есть лямбда-функция с переменными среды, определенными, как показано ниже в шаблоне формирования облака.

Parameters:
  Parameter1: { Type: String }
Resources:
 LambdaFunction:
   Type: AWS::Serverless::Function
   Properties:
     FunctionName: "Function"
     CodeUri: // relevant parameters
     Handler: handler::handlerequest 
    Role: //Role
    Runtime: java8
    Timeout: 300
  Environment:
    Variables:
      refParamter1:
        Ref: Parameter1

Мой код для запроса дескриптора выглядит следующим образом:

String referenceParameter = System.getenv("refParamter1");
System.out.println("Referenced Paramter "+ referenceParameter );

Когда я развертываю это и запускаю свою лямбду, это дает мне null для напечатанного referenceParameter.

Не правильно ли использовать System.getenv при обращении к переменным окружения в лямбде?

Есть похожий вопрос: CloudFormation - параметр доступа из лямбда-кода для python, но не дает никакого ответа для Java

Это вопрос с ответом, который предлагает использовать System.getenv: Доступ к переменным среды AWS Lambda в коде Java

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

В лямбда-функции неверный отступ, и yml зависит от отступа, в котором не учитывались переменные среды.

Parameters:
  Parameter1: { Type: String }
Resources:
  LambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: "Function"
      CodeUri: // relevant parameters
      Handler: handler::handlerequest 
      Role: //Role
      Runtime: java8
      Timeout: 300
      Environment:
        Variables:
          refParamter1:
            Ref: Parameter1
0 голосов
/ 27 августа 2018

Если я прав, вы пытаетесь сослаться на параметр из ресурса, то ваш синтаксис неверен, попробуйте это:

  Environment:
    Variables:
      refParamter1: !Ref Parameter1

Определение переменных среды представляет собой массив ключ: значение, документацию можно посмотреть здесь https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html

При развертывании обязательно перейдите на лямбда-консоль и убедитесь, что он правильно отображается в переменных окружения в пользовательском интерфейсе функции, а затем вы можете использовать:

String referenceParameter = System.getenv("refParamter1");

Для доступа к вашей переменной.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...