Как передать AWS AccountId в URI API REST (Cloudformation) - PullRequest
0 голосов
/ 24 октября 2018

Код:

  x-amazon-apigateway-integration:
    uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:428377611111:function:${stageVariables.target_lambdaName}/invocations"

Если использовать псевдопараметры, как показано ниже, я столкнулся с проблемой.

Обновленный код:

 x-amazon-apigateway-integration:
    uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:${AWS::AccountId}:function:${stageVariables.target_lambdaName}/invocations"

Ошибка:

Errors found during import: Unable to put integration on 'GET' for resource at path '/getMessage': Invalid HTTP endpoint specified for URI (Service: AmazonApiGateway; Status Code: 400; Error Code: BadRequestException; Request ID: 3da76bd8-d714-11e8-8ec4-4b324c6636a4)

Заранее спасибо.

Нареш

1 Ответ

0 голосов
/ 24 октября 2018

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

Если вы используете YAML-файл шаблона SAM и передаете переменные в шаблон на этапе конвейера с помощью ParameterOverrides, вам следует объявить параметрывверху файла в файле YAML шаблона SAM, и ваш код должен быть в качестве примера POST.

paths:
        /PATH_NAME:
          get:
            responses: {}
            x-amazon-apigateway-integration:
              uri:
                Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${FUNCTION_NAME_HERE.Arn}/invocations
              httpMethod: POST
              type: aws_proxy

Предполагается, что этот фрагмент кода прикреплен к:

Type: AWS::Serverless::Api

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

В качестве примечания вы можете получить доступ к идентификатору своей учетной записи в CloudFormation следующим образом:

${AWS::AccountId}
...