建立API閘道資源策略並將其附加至 API - Amazon API 网关

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立API閘道資源策略並將其附加至 API

若要允許使用者API透過呼叫API執行服務來存取您的,您必須建立 API Gateway 資源原則,並將原則附加至API. 當您將原則附加至您的時API,它會將原則中的權限套用至中的方法API。如果您更新資源策略,則需要部署API.

必要條件

若要更新API閘道資源策略,您需要apigateway:UpdateRestApiPolicy權限和apigateway:PATCH權限。

對於邊緣最佳化或區域API,您可以在建立資源政策時或部署資源策略後附加至您API的資源策略。對於私人API,您無法在沒有資源策略的API情況下部署您的。如需詳細資訊,請參閱 API閘道RESTAPIs中的私人

將資源策略附加到API閘道 API

下列程序說明如何將資源策略附加至API閘道API。

AWS Management Console
將資源策略附加至API閘道 API
  1. 請在 https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇一個RESTAPI。

  3. 在主導覽窗格中,選擇資源政策

  4. 選擇建立政策

  5. (選用) 選擇選取範本以產生範例政策。

    在範例政策中,預留位置位於雙大括號中 ("{{placeholder}}")。將每個預留位置 (包括大括號) 取代為所需的資訊。

  6. 如果您不使用其中一個範本範例,請輸入您的資源政策。

  7. 選擇儲存變更

如果先前API已在 API Gateway 主控台中部署,則需要重新部署它,資源策略才會生效。

AWS CLI

若要使用建立新的 AWS CLI 資源策略API並將資源策略附加至其中,請依照下列方式呼叫create-rest-api命令:

aws apigateway create-rest-api \ --name "api-name" \ --policy "{\"jsonEscapedPolicyDocument\"}"

若要使用 AWS CLI 將資源策略附加至現有的API,請依照下列方式呼叫update-rest-api命令:

aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
AWS CloudFormation

您可以使用建 AWS CloudFormation 立具有資源策略API的資源策略。下列範例會RESTAPI使用範例資源策略建立範例:根據來源 IP 位址或範圍拒絕API流量

AWSTemplateFormatVersion: 2010-09-09 Resources: Api: Type: 'AWS::ApiGateway::RestApi' Properties: Name: testapi Policy: Statement: - Action: 'execute-api:Invoke' Effect: Allow Principal: '*' Resource: 'execute-api/*' - Action: 'execute-api:Invoke' Effect: Deny Principal: '*' Resource: 'execute-api/*' Condition: IpAddress: 'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ] Version: 2012-10-17 Resource: Type: 'AWS::ApiGateway::Resource' Properties: RestApiId: !Ref Api ParentId: !GetAtt Api.RootResourceId PathPart: 'helloworld' MethodGet: Type: 'AWS::ApiGateway::Method' Properties: RestApiId: !Ref Api ResourceId: !Ref Resource HttpMethod: GET ApiKeyRequired: false AuthorizationType: NONE Integration: Type: MOCK ApiDeployment: Type: 'AWS::ApiGateway::Deployment' DependsOn: - MethodGet Properties: RestApiId: !Ref Api StageName: test

疑難排解資源策略

下列疑難排解指引可能有助於解決資源策略的問題。

我的API返回 {「消息」:「用戶:匿名無法執行:執行 API:在資源上調用:arn:aws:執行 API:我們東部 -1:********/****/****/"}

在您的資源策略中,如果您將主參與者設定為 AWS 主參與者,如下所示:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", ""Principal": { "AWS": [ "arn:aws:iam::account-id:role/developer", "arn:aws:iam::account-id:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, ... }

您必須為您的每個方法使用AWS_IAM授權API,否則API返回以前的錯誤消息。如需如何開啟方法AWS_IAM授權的詳細指示,請參閱API Gateway 中其餘 API 的方法

我的資源策略未更新

如果您在建立之後更新資源策略,則需要在附加更新的策略之後部署以傳播變更。API API單獨更新或儲存原則不會變更API. 如需部署的詳細資訊API,請參閱RESTAPIs在API閘道中部署

我的資源策略返回以下錯誤:無效的策略文件。請檢查原則語法,並確定主參與者有效。

若要疑難排解此錯誤,我們首先建議您檢查原則語法。如需詳細資訊,請參閱 Amazon API 閘道的存取政策語言概觀。我們也建議您檢查所有指定的主參與者都是有效的,而且尚未刪除。

此外,如果您位API於選擇加入的區域中,請確認資源策略中的所有帳號都已啟用 [地區]。