Exemple #1
0
def create_function_and_output_end_url(function_name, entry_point):
    source_archive_object = storage.BucketObject(function_name,
                                                 name="main.py-%f" %
                                                 time.time(),
                                                 bucket=bucket.name,
                                                 source=archive)

    # Create the Cloud Function, deploying the source we just uploaded to Google
    # Cloud Storage.
    fxn = cloudfunctions.Function(
        function_name,
        entry_point=entry_point,
        environment_variables=config_values,
        region=os.getenv("region", "us-east1"),
        runtime="python37",
        source_archive_bucket=bucket.name,
        source_archive_object=source_archive_object.name,
        trigger_http=True,
        available_memory_mb=256,
        project=project_name)

    # Export the DNS name of the bucket and the cloud function URL.
    pulumi.export("bucket_name", bucket.url)
    pulumi.export("fxn_url", fxn.https_trigger_url)
    return fxn.https_trigger_url
    def __init__(self,
                 name: str,
                 args: FuncArgs,
                 opts: ResourceOptions = None):

        super().__init__('custom:resource:CloudFunction', name, {}, opts)

        bucket_name = f'{name}-bucket'
        self.bucket = storage.Bucket(bucket_name,
                                     labels=args.tags,
                                     opts=ResourceOptions(parent=self))

        bucket_object_name = f'{name}-bucketobject'
        self.bucket_object = storage.BucketObject(
            bucket_object_name,
            bucket=self.bucket.name,
            source=pulumi.FileArchive("./pythonfunction"),
            metadata=args.tags,
            opts=ResourceOptions(parent=self.bucket))

        function_name = f'{name}-cloudfunction'
        self.function = cloudfunctions.Function(
            function_name,
            description="Serverless Function in GCP via Pulumi",
            runtime=args.runtime,
            available_memory_mb=args.available_memory_mb,
            source_archive_bucket=self.bucket.name,
            source_archive_object=self.bucket_object.name,
            trigger_http=args.trigger_http,
            entry_point=args.entry_point,
            #labels = args.tags,
            opts=ResourceOptions(parent=self))

        iam_member_name = f'{name}-functioniammember'
        self.invoker = cloudfunctions.FunctionIamMember(
            iam_member_name,
            cloud_function=self.function.name,
            role=args.role,
            member=args.member,
            opts=ResourceOptions(parent=self.function))

        self.register_outputs({})
Exemple #3
0
    assets[file] = asset

archive = pulumi.AssetArchive(assets=assets)

# Create the single Cloud Storage object, which contains all of the function's
# source code. ("main.py" and "requirements.txt".)
source_archive_object = storage.BucketObject("eta_demo_object",
                                             name="main.py-%f" % time.time(),
                                             bucket=bucket.name,
                                             source=archive)

# Create the Cloud Function, deploying the source we just uploaded to Google
# Cloud Storage.
fxn = cloudfunctions.Function("eta_demo_function",
                              entry_point="get_demo",
                              environment_variables=config_values,
                              region="us-central1",
                              runtime="python37",
                              source_archive_bucket=bucket.name,
                              source_archive_object=source_archive_object.name,
                              trigger_http=True)

invoker = cloudfunctions.FunctionIamMember(
    "invoker",
    project=fxn.project,
    region=fxn.region,
    cloud_function=fxn.name,
    role="roles/cloudfunctions.invoker",
    member="allUsers",
)
Exemple #4
0
from pulumi_gcp import storage, cloudfunctions
from pulumi import export, asset

bucket = storage.Bucket("bucket")

py_bucket_object = storage.BucketObject(
    "python-zip",
    bucket=bucket.name,
    source=asset.AssetArchive({".": asset.FileArchive("./pythonfunc")}))

py_function = cloudfunctions.Function(
    "python-func",
    source_archive_bucket=bucket.name,
    runtime="python37",
    source_archive_object=py_bucket_object.name,
    entry_point="handler",
    trigger_http="true",
    available_memory_mb=128,
)

py_invoker = cloudfunctions.FunctionIamMember(
    "py-invoker",
    project=py_function.project,
    region=py_function.region,
    cloud_function=py_function.name,
    role="roles/cloudfunctions.invoker",
    member="allUsers",
)

export("python_endpoint", py_function.https_trigger_url)
from pulumi import asset
from pulumi_gcp import storage, cloudfunctions

# Create a GCP resource (Storage Bucket)
bucket = storage.Bucket('my-bucket')

# Create the function source asset
api_bucket_object = storage.BucketObject(
    'api-zip',
    bucket=bucket.name,
    source=pulumi.AssetArchive({'.': asset.FileArchive('./api')}))

api_function = cloudfunctions.Function(
    'api-func',
    source_archive_bucket=bucket.name,
    source_archive_object=api_bucket_object.name,
    runtime='nodejs10',
    entry_point='handler',
    trigger_http='true',
    available_memory_mb=128)

api_invoker = cloudfunctions.FunctionIamMember(
    'api-invoker',
    project=api_function.project,
    region=api_function.region,
    cloud_function=api_function.name,
    role='roles/cloudfunctions.invoker',
    member='allUsers')

pulumi.export('endpoint', api_function.https_trigger_url)