RdsDataSource

class aws_cdk.aws_appsync.RdsDataSource(scope, id, *, secret_store, serverless_cluster, database_name=None, service_role=None, api, description=None, name=None)

Bases: BackedDataSource

(experimental) An AppSync datasource backed by RDS.

Stability:

experimental

ExampleMetadata:

infused

Example:

# Build a data source for AppSync to access the database.
# api: appsync.GraphqlApi
# Create username and password secret for DB Cluster
secret = rds.DatabaseSecret(self, "AuroraSecret",
    username="clusteradmin"
)

# The VPC to place the cluster in
vpc = ec2.Vpc(self, "AuroraVpc")

# Create the serverless cluster, provide all values needed to customise the database.
cluster = rds.ServerlessCluster(self, "AuroraCluster",
    engine=rds.DatabaseClusterEngine.AURORA_MYSQL,
    vpc=vpc,
    credentials={"username": "clusteradmin"},
    cluster_identifier="db-endpoint-test",
    default_database_name="demos"
)
rds_dS = api.add_rds_data_source("rds", cluster, secret, "demos")

# Set up a resolver for an RDS query.
rds_dS.create_resolver(
    type_name="Query",
    field_name="getDemosRds",
    request_mapping_template=appsync.MappingTemplate.from_string("""
          {
            "version": "2018-05-29",
            "statements": [
              "SELECT * FROM demos"
            ]
          }
          """),
    response_mapping_template=appsync.MappingTemplate.from_string("""
            $utils.toJson($utils.rds.toJsonObject($ctx.result)[0])
          """)
)

# Set up a resolver for an RDS mutation.
rds_dS.create_resolver(
    type_name="Mutation",
    field_name="addDemoRds",
    request_mapping_template=appsync.MappingTemplate.from_string("""
          {
            "version": "2018-05-29",
            "statements": [
              "INSERT INTO demos VALUES (:id, :version)",
              "SELECT * WHERE id = :id"
            ],
            "variableMap": {
              ":id": $util.toJson($util.autoId()),
              ":version": $util.toJson($ctx.args.version)
            }
          }
          """),
    response_mapping_template=appsync.MappingTemplate.from_string("""
            $utils.toJson($utils.rds.toJsonObject($ctx.result)[1][0])
          """)
)
Parameters:
  • scope (Construct) –

  • id (str) –

  • secret_store (ISecret) – (experimental) The secret containing the credentials for the database.

  • serverless_cluster (IServerlessCluster) – (experimental) The serverless cluster to call to interact with this data source.

  • database_name (Optional[str]) – (experimental) The name of the database to use within the cluster. Default: - None

  • service_role (Optional[IRole]) – (experimental) The IAM service role to be assumed by AppSync to interact with the data source. Default: - Create a new role

  • api (IGraphqlApi) – (experimental) The API to attach this data source to.

  • description (Optional[str]) – (experimental) the description of the data source. Default: - None

  • name (Optional[str]) – (experimental) The name of the data source. Default: - id of data source

Stability:

experimental

Methods

create_function(*, name, description=None, request_mapping_template=None, response_mapping_template=None)

(experimental) creates a new appsync function for this datasource and API using the given properties.

Parameters:
  • name (str) – (experimental) the name of the AppSync Function.

  • description (Optional[str]) – (experimental) the description for this AppSync Function. Default: - no description

  • request_mapping_template (Optional[MappingTemplate]) – (experimental) the request mapping template for the AppSync Function. Default: - no request mapping template

  • response_mapping_template (Optional[MappingTemplate]) – (experimental) the response mapping template for the AppSync Function. Default: - no response mapping template

Stability:

experimental

Return type:

AppsyncFunction

create_resolver(*, field_name, type_name, caching_config=None, pipeline_config=None, request_mapping_template=None, response_mapping_template=None)

(experimental) creates a new resolver for this datasource and API using the given properties.

Parameters:
  • field_name (str) – (experimental) name of the GraphQL field in the given type this resolver is attached to.

  • type_name (str) – (experimental) name of the GraphQL type this resolver is attached to.

  • caching_config (Union[CachingConfig, Dict[str, Any], None]) – (experimental) The caching configuration for this resolver. Default: - No caching configuration

  • pipeline_config (Optional[Sequence[IAppsyncFunction]]) – (experimental) configuration of the pipeline resolver. Default: - no pipeline resolver configuration An empty array | undefined sets resolver to be of kind, unit

  • request_mapping_template (Optional[MappingTemplate]) – (experimental) The request mapping template for this resolver. Default: - No mapping template

  • response_mapping_template (Optional[MappingTemplate]) – (experimental) The response mapping template for this resolver. Default: - No mapping template

Stability:

experimental

Return type:

Resolver

to_string()

Returns a string representation of this construct.

Return type:

str

Attributes

ds

(experimental) the underlying CFN data source resource.

Stability:

experimental

grant_principal

(experimental) the principal of the data source to be IGrantable.

Stability:

experimental

name

(experimental) the name of the data source.

Stability:

experimental

node

The construct tree node associated with this construct.

Static Methods

classmethod is_construct(x)

Return whether the given object is a Construct.

Parameters:

x (Any) –

Return type:

bool