ApiAuth - AWS Serverless Application Model

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

ApiAuth

設定授權以控制對 API Gateway 的存取API。

如需使用 設定存取權的詳細資訊和範例, AWS SAM 請參閱 使用 AWS SAM 範本控制API存取

語法

若要在 AWS Serverless Application Model (AWS SAM) 範本中宣告此實體,請使用下列語法。

YAML

AddApiKeyRequiredToCorsPreflight: Boolean AddDefaultAuthorizerToCorsPreflight: Boolean ApiKeyRequired: Boolean Authorizers: CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer | AWS_IAM DefaultAuthorizer: String InvokeRole: String ResourcePolicy: ResourcePolicyStatement UsagePlan: ApiUsagePlan
注意

Authorizers 屬性包含 AWS_IAM,但 不需要額外的組態AWS_IAM。如需範例,請參閱AWS IAM

屬性

AddApiKeyRequiredToCorsPreflight

如果已設定 ApiKeyRequiredCors 屬性,則設定AddApiKeyRequiredToCorsPreflight會導致 API金鑰新增至 Options 屬性。

類型:布林值

必要:否

預設True

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

AddDefaultAuthorizerToCorsPreflight

如果設定 DefaultAuthorizerCors 屬性,則設定AddDefaultAuthorizerToCorsPreflight將導致預設授權方新增至開啟API區段中的 Options 屬性。

類型:布林值

必要:否

預設 :True

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

ApiKeyRequired

如果設定為 true,則所有API事件都需要API金鑰。如需API金鑰的詳細資訊,請參閱API閘道開發人員指南中的建立和使用具有API金鑰的使用計劃

類型:布林值

必要:否

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

Authorizers

用於控制API閘道 存取的授權方API。

如需詳細資訊,請參閱使用 AWS SAM 範本控制API存取

類型: CognitoAuthorizer | LambdaTokenAuthorizer | LambdaRequestAuthorizer | AWS_IAM

必要:否

預設:無

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

其他備註:將授權者SAM新增至 Api OpenApi 的定義。

DefaultAuthorizer

為API閘道 指定預設授權方API,該授權方將預設用於授權API呼叫。

注意

如果與此相關聯的 EventSource 函數 Api API 設定為使用IAM許可,則此屬性必須設定為 AWS_IAM,否則將產生錯誤。

類型:字串

必要:否

預設:無

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

InvokeRole

將所有資源和方法的整合憑證設定為此值。

CALLER_CREDENTIALS 會對應至 arn:aws:iam::*:user/*,使用呼叫者憑證來叫用端點。

有效值:CALLER_CREDENTIALSNONEIAMRoleArn

類型:字串

必要:否

預設CALLER_CREDENTIALS

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

ResourcePolicy

針對 上的所有方法和路徑設定資源政策API。

類型ResourcePolicyStatement

必要:否

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

其他備註 :此設定也可以AWS::Serverless::Function使用 對個別 進行定義ApiFunctionAuth。APIs 使用 時,這是必要的EndpointConfiguration: PRIVATE

UsagePlan

設定與此 相關聯的用量計劃API。如需用量計劃的詳細資訊,請參閱API閘道開發人員指南中的使用API金鑰建立和使用用量計劃

設定此 AWS SAM 屬性時,此屬性會產生三個額外的 AWS CloudFormation 資源: AWS::ApiGateway::UsagePlanAWS::ApiGateway::UsagePlanKey,以及 AWS::ApiGateway::ApiKey。 如需此案例的相關資訊,請參閱 UsagePlan屬性已指定。如需產生 AWS CloudFormation 資源的一般資訊,請參閱 產生的 AWS CloudFormation 資源 AWS SAM

類型ApiUsagePlan

必要:否

AWS CloudFormation 相容性:此屬性對 是唯一的, AWS SAM 並且沒有 AWS CloudFormation 同等的。

範例

CognitoAuth

Cognito 驗證範例

YAML

Auth: Authorizers: MyCognitoAuth: UserPoolArn: Fn::GetAtt: - MyUserPool - Arn AuthType: "COGNITO_USER_POOLS" DefaultAuthorizer: MyCognitoAuth InvokeRole: CALLER_CREDENTIALS AddDefaultAuthorizerToCorsPreflight: false ApiKeyRequired: false ResourcePolicy: CustomStatements: [{ "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/Prod/GET/pets", "Condition": { "IpAddress": { "aws:SourceIp": "1.2.3.4" } } }] IpRangeDenylist: - "10.20.30.40"

AWS IAM

AWS IAM 範例

YAML

Auth: Authorizers: AWS_IAM