如何在 CloudFormation 中使用访问密钥和私有密钥保护 AWS API 网关?



我使用 AWSToolkit for Visual Studio 模板创建了无服务器 Lambda 应用程序(我使用了教程:使用 AWS Lambda 构建和测试无服务器应用程序(。我选择了"空无服务器项目"并创建了链接到 API 网关的简单 lambda 函数。

CloudFormation 模板如下所示:

{
"AWSTemplateFormatVersion" : "2010-09-09",
"Transform" : "AWS::Serverless-2016-10-31",
"Description" : "An AWS Serverless Application.",
"Resources" : {
"Get" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "AWSServerless::AWSServerless.Functions::Get",
"Runtime": "dotnetcore2.0",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 30,
"Role": null,
"Policies": [ "AWSLambdaBasicExecutionRole" ],
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "/",
"Method": "GET"
}
}
}
}
}
},
"Outputs" : {
"ApiURL" : {
"Description" : "API endpoint URL for Prod environment",
"Value" : { "Fn::Sub" : "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" }
}
}
}

现在,我需要使用访问密钥和私有密钥保护我的 API 网关。我已经调查了一些,如果我是正确的,它应该看起来像下面:

"security":[{"sigv4":[]}]

但我仍然不清楚我应该在哪里应用它?可能是我错了,可以用另一种方式完成。所以我的问题是:

如何在CloudFormation中使用访问密钥和密钥保护API网关?

您可以使用API 密钥或授权方

以下示例创建一个作为 AWS Lambda 函数的自定义授权方。

"Authorizer": {
"Type": "AWS::ApiGateway::Authorizer",
"Properties": {
"AuthorizerCredentials": { "Fn::GetAtt": ["LambdaInvocationRole", "Arn"] },
"AuthorizerResultTtlInSeconds": "300",
"AuthorizerUri" : {"Fn::Join" : ["", [
"arn:aws:apigateway:",
{"Ref" : "AWS::Region"},
":lambda:path/2015-03-31/functions/",
{"Fn::GetAtt" : ["LambdaAuthorizer", "Arn"]}, "/invocations"
]]},
"Type": "TOKEN",
"IdentitySource": "method.request.header.Auth",
"Name": "DefaultAuthorizer",
"RestApiId": {
"Ref": "RestApi"
}
}
}

(更新(
SO 线程关于如何在模板中使用授权方

在 API 网关路径中引用授权方定义

相关内容

  • 没有找到相关文章

最新更新