我可以允许匿名访问AWS API Gateway文档吗?

时间:2019-07-10 16:12:48

标签: amazon-web-services aws-api-gateway

我有一个CloudFormation模板,其中包括使用OpenAPI 3.0主体配置的API网关。我想向我的API用户提供OpenAPI规范。理想情况下,在一个不错的GUI中,但是this answer表示不可能。我不想建立开发人员门户。

我的CFT包含一个DocumentationVersion元素,该元素为API创建文档。

根据thisthis,我应该能够从

这样的URL下载我的文档。
https://apigateway.[my_aws_region].amazonaws.com/restapis/[my_api_id]/stages/[my_api_stage]/exports/oas30

确实,当我转到该URL时,我得到类似

{"logref":"56f5173b-a329-11e9-a8d5-e97c525eb634","message":"Missing Authentication Token"}

建议使用正确的令牌。

This page显示您可以使用策略控制对API文档的访问。 (尽管很奇怪,它说要使用account_id是您要授予访问权限的用户之一-正确吗?)

所以我尝试将以下资源添加到我的CFT中:

    "ApiDocumentationAccessPolicy": {
        "Type": "AWS::IAM::ManagedPolicy",
        "Properties": {
            "Description": "Read access to API documentation restricted by IP",
            "PolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": [
                            "apigateway:GET"
                        ],
                        "Resource": {
                            "Fn::Join": [
                                "",
                                [
                                    "arn:aws:apigateway::",
                                    { "Ref": "AWS::AccountId" },
                                    ":/restapis/",
                                    "*/documentation/*"
                                ]
                            ]
                        },
                        "Condition" : {
                            "IpAddress": {
                                "aws:SourceIp": ["xxx.xxx.xxx.xxx" ]
                            }
                        }
                    }
                ]
            }
        }
    },

但是,我仍然收到“缺少身份验证令牌”。我相信“条件”部分是正确的,因为它在CFT的其他地方使用过。

我想做的是可能的吗?如果是这样,我在哪里出错了?

编辑,在上述政策声明中添加"Principal": "*"并将其直接移至APIGateway的政策似乎也无济于事。

0 个答案:

没有答案