gpt4 book ai didi

amazon-web-services - 将 lambda 附加到现有 API GW cloudform

转载 作者:行者123 更新时间:2023-12-03 07:38:35 26 4
gpt4 key购买 nike

我正在尝试将 cloudformation 中的 lambda 函数附加到在其他模板中创建的现有 API 网关。

在另一个模板中导出一些变量:

CreatedApiGW 和 CreatedApiGWParentId

FunctionTest:
Type: AWS::Serverless::Function
Properties:
FunctionName: function-test
CodeUri: cmd/
VpcConfig:
SecurityGroupIds:
- !Ref SecGroup
SubnetIds:
- !Ref Subnet1
- !Ref Subnet2


ApiGatewayResource:
Type: AWS::ApiGateway::Resource
Properties:
RestApiId: !ImportValue CreatedApiGW
ParentId: !ImportValue CreatedApiGWParentId
PathPart: "test"

ApiGatewayMethod:
Type: AWS::ApiGateway::Method
Properties:
RestApiId: !ImportValue CreatedApiGW
ResourceId: !Ref ApiGatewayResource
HttpMethod: "POST"
AuthorizationType: "NONE"
Integration:
Type: "AWS"
IntegrationHttpMethod: "POST"
Uri: !Sub "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${FunctionTest.Arn}/invocations"


ApiGatewayDeployment:
Type: AWS::ApiGateway::Deployment
Properties:
RestApiId: !ImportValue CreatedApiGW

我不想为每个 lambda 创建一个 API 网关。

我想将一些 lambda 附加到我现有的 API 网关。

我的 lambda 未创建 API GW 的触发器

将 lambda 附加到 API GW

最佳答案

好吧,我假设您已经创建了 Api 并且想要导入在所述模板中导出的值。我还假设您创建了一个 RestApi(无论如何,两个文档引用都将位于末尾)。

您需要导出另一个堆栈中的值,例如:

Outputs:
ApiGatewayId:
Description: The ID of the api you just created
Value:
Ref: ApiGateway
Export:
Name:
'Fn::Sub': '${AWS::StackName}-CreatedApiGW'
ApiGatewayRootResourceId:
Description: The security group ID to use for public web servers
Value:
'Fn::GetAtt':
- ApiGateway
- RootResourceId
Export:
Name:
'Fn::Sub': '${AWS::StackName}-RootResourceId'

导入将如下所示:

Fn::ImportValue:
!Sub "${ApiGwStackName}-CreatedApiGW"

Fn::ImportValue:
!Sub "${ApiGwStackName}-RootResourceId"

你的其余代码看起来不错。您可以在模板中为任何 apigateway 创建方法,您只需要 apigw id 和根资源 id。

一切创建完成后,触发器将出现在功能页面中。

引用:

关于amazon-web-services - 将 lambda 附加到现有 API GW cloudform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75885664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com