AWS API Gateway提供了多种认证策略,包括以下几种常用的:
import boto3
def create_api_gateway(api_name):
client = boto3.client('apigateway')
# 创建API
response = client.create_rest_api(
name=api_name,
description='My API'
)
# 创建资源
response = client.create_resource(
restApiId=response['id'],
parentId=response['rootResourceId'],
pathPart='myresource'
)
# 创建方法
response = client.put_method(
restApiId=response['restApiId'],
resourceId=response['id'],
httpMethod='GET',
authorizationType='AWS_IAM'
)
# 配置IAM授权
response = client.put_integration(
restApiId=response['restApiId'],
resourceId=response['resourceId'],
httpMethod=response['httpMethod'],
type='AWS',
integrationHttpMethod='GET',
uri='arn:aws:apigateway:{region}:{subdomain}:{service}:{path}'
)
# 配置方法响应
response = client.put_method_response(
restApiId=response['restApiId'],
resourceId=response['resourceId'],
httpMethod=response['httpMethod'],
statusCode='200',
responseModels={'application/json': 'Empty'}
)
# 配置集成响应
response = client.put_integration_response(
restApiId=response['restApiId'],
resourceId=response['resourceId'],
httpMethod=response['httpMethod'],
statusCode='200',
responseTemplates={'application/json': ''}
)
# 部署API
response = client.create_deployment(
restApiId=response['restApiId'],
stageName='prod'
)
# 获取API的URL
response = client.get_deployments(
restApiId=response['restApiId']
)
url = response['items'][0]['invokeUrl']
return url
import json
def lambda_handler(event, context):
# 解析请求
method = event['httpMethod']
path = event['path']
# 验证请求
if method == 'GET' and path == '/myresource':
return {
'statusCode': 200,
'body': json.dumps({'message': 'Hello World!'})
}
else:
return {
'statusCode': 403,
'body': json.dumps({'message': 'Forbidden'})
}
import boto3
def create_cognito_user_pool(user_pool_name):
client = boto3.client('cognito-idp')
# 创建用户池
response = client.create_user_pool(
PoolName=user_pool_name
)
# 创建用户池客户端
response = client.create_user_pool_client(
UserPoolId=response['UserPool']['Id'],
ClientName='myclient'
)
# 创建用户
response = client.sign_up(
ClientId=response['UserPoolClient']['ClientId'],
Username='myuser',
Password='mypassword'
)
# 确认用户
response = client.admin_confirm_sign_up(
UserPoolId=response['UserPool']['Id'],
Username='myuser'
)
# 获取用户凭证
response = client.initiate_auth(
AuthFlow='USER_PASSWORD_AUTH',
AuthParameters={
'USERNAME': 'myuser',
'PASSWORD': 'mypassword'
},
ClientId=response['UserPoolClient']['ClientId']
)
access_token = response['AuthenticationResult']['AccessToken']
return access_token
以上是AWS API Gateway的一些常用认证策略的代码示例,可以根据实际需求选择适合的认证方式。