API Gateway メソッドをAWS SDKAWS を使用してサービスと統合する - AWSSDK コードサンプル

AWSDocAWS SDKGitHub サンプルリポジトリには、さらに多くの SDK サンプルがあります


API Gateway メソッドをAWS SDKAWS を使用してサービスと統合する

次のコード例は、API GatewayAWS メソッドをサービスと統合する方法を示しています。

SDK for Python (Boto3)

他にもありますGitHub。用例一覧を検索し、AWS コード例リポジトリでの設定と実行の方法を確認してください。

class ApiGatewayToService: """ Encapsulates Amazon API Gateway functions that are used to create a REST API that integrates with another AWS service. """ def __init__(self, apig_client): """ :param apig_client: A Boto3 API Gateway client. """ self.apig_client = apig_client self.api_id = None self.root_id = None self.stage = None def add_integration_method( self, resource_id, rest_method, service_endpoint_prefix, service_action, service_method, role_arn, mapping_template): """ Adds an integration method to a REST API. An integration method is a REST resource, such as '/users', and an HTTP verb, such as GET. The integration method is backed by an AWS service, such as Amazon DynamoDB. :param resource_id: The ID of the REST resource. :param rest_method: The HTTP verb used with the REST resource. :param service_endpoint_prefix: The service endpoint that is integrated with this method, such as 'dynamodb'. :param service_action: The action that is called on the service, such as 'GetItem'. :param service_method: The HTTP method of the service request, such as POST. :param role_arn: The Amazon Resource Name (ARN) of a role that grants API Gateway permission to use the specified action with the service. :param mapping_template: A mapping template that is used to translate REST elements, such as query parameters, to the request body format required by the service. """ service_uri = (f'arn:aws:apigateway:{self.apig_client.meta.region_name}' f':{service_endpoint_prefix}:action/{service_action}') try: self.apig_client.put_method( restApiId=self.api_id, resourceId=resource_id, httpMethod=rest_method, authorizationType='NONE') self.apig_client.put_method_response( restApiId=self.api_id, resourceId=resource_id, httpMethod=rest_method, statusCode='200', responseModels={'application/json': 'Empty'}) logger.info("Created %s method for resource %s.", rest_method, resource_id) except ClientError: logger.exception( "Couldn't create %s method for resource %s.", rest_method, resource_id) raise try: self.apig_client.put_integration( restApiId=self.api_id, resourceId=resource_id, httpMethod=rest_method, type='AWS', integrationHttpMethod=service_method, credentials=role_arn, requestTemplates={'application/json': json.dumps(mapping_template)}, uri=service_uri, passthroughBehavior='WHEN_NO_TEMPLATES') self.apig_client.put_integration_response( restApiId=self.api_id, resourceId=resource_id, httpMethod=rest_method, statusCode='200', responseTemplates={'application/json': ''}) logger.info( "Created integration for resource %s to service URI %s.", resource_id, service_uri) except ClientError: logger.exception( "Couldn't create integration for resource %s to service URI %s.", resource_id, service_uri) raise
  • API の詳細については、「AWSSDK for Python (Boto3) API リファレンス」のを参照してくださいPutIntegration