【发布时间】:2022-01-19 23:40:21
【问题描述】:
我目前正在创建一个定义 AWS API 网关的 SAM 模板。我有一个路径/example,它有 3 种方法;获取、发布和选项。我希望 POST 方法具有 IAM 授权,但其他方法在没有授权的情况下公开。我的 SAM 模板目前如下所示:
Resources:
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
Name: <API NAME>
StageName: <Stage Name>
Auth:
ApiKeyRequired: false
AddDefaultAuthorizerToCorsPreflight: false
DefaultAuthorizer: AWS_IAM
ResourcePolicy:
CustomStatements: [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::...",
]
},
"Action": "execute-api:Invoke",
"Resource": "execute-api:/<Stage Name>/POST/example"
}]
Tags:
<Key>: <Value>
DefinitionBody:
<Swagger definition>
但是,这会将 IAM 身份验证附加到所有方法。如何将其指定为仅附加到其中一种方法?
谢谢!
【问题讨论】:
-
您是否在 Swagger 定义中使用授权者? AWS 支持 x-amazon-apigateway-auth 和 x-amazon-apigateway-authorizer 密钥,用于通过 Swagger 定义在各个端点中添加授权者。
标签: amazon-cloudformation aws-api-gateway amazon-iam aws-sam